Skip to content

Commit acc6a1a

Browse files
feat: add target cluster descriptions (#133)
## Summary by Sourcery Documentation: - Describe the target cluster configuration options in the platform installation guide.
1 parent a53a1e3 commit acc6a1a

File tree

1 file changed

+189
-0
lines changed

1 file changed

+189
-0
lines changed

docs/launch-platform/self-hosted/installation-guide/platform-installation.md

Lines changed: 189 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -466,6 +466,195 @@ Verify all pods are running and ready.
466466

467467
Once all pods are running, access the platform at `https://<your-domain>`.
468468

469+
### 6. Target Clusters Configuration
470+
471+
The platform supports deploying blockchain nodes and applications to multiple target clusters across different cloud providers and regions. This section explains how to configure target clusters in your values file.
472+
473+
#### Target Structure
474+
The targets configuration uses a simple 2-level hierarchy:
475+
- **Target** (top level grouping)
476+
- **Clusters** (individual Kubernetes clusters)
477+
478+
#### Basic Configuration Example
479+
```yaml
480+
features:
481+
deploymentEngine:
482+
targets:
483+
- id: GROUP1
484+
name: First Group
485+
icon: cloud
486+
clusters:
487+
- id: CLUSTER1
488+
name: Primary Cluster
489+
icon: kubernetes
490+
location:
491+
lat: 50.8505
492+
lon: 4.3488
493+
namespace:
494+
multiple:
495+
enabled: true
496+
prefix: "sm"
497+
connection:
498+
kubeconfig:
499+
enabled: true
500+
domains:
501+
service:
502+
tls: true
503+
hostname: "cluster1.example.com"
504+
storage:
505+
storageClass: "standard"
506+
ingress:
507+
ingressClass: "nginx"
508+
capabilities:
509+
mixedLoadBalancers: false
510+
nodePorts:
511+
enabled: true
512+
range:
513+
min: 30000
514+
max: 32767
515+
- id: GROUP2
516+
name: Second Group
517+
icon: cloud
518+
clusters:
519+
- id: CLUSTER2
520+
name: Secondary Cluster
521+
icon: kubernetes
522+
location:
523+
lat: 1.3521
524+
lon: 103.8198
525+
namespace:
526+
multiple:
527+
enabled: true
528+
prefix: "prod"
529+
connection:
530+
kubeconfig:
531+
enabled: true
532+
domains:
533+
service:
534+
tls: true
535+
hostname: "cluster2.example.com"
536+
storage:
537+
storageClass: "standard"
538+
ingress:
539+
ingressClass: "nginx"
540+
capabilities:
541+
mixedLoadBalancers: true
542+
nodePorts:
543+
enabled: true
544+
range:
545+
min: 30000
546+
max: 32767
547+
```
548+
549+
#### Configuration Options
550+
551+
##### Target Level
552+
- `id`: Unique identifier for the target group
553+
- `name`: Display name
554+
- `icon`: Icon identifier for the UI
555+
556+
##### Cluster Level
557+
- `id`: Unique identifier for the cluster
558+
- `name`: Display name for the region/location
559+
- `icon`: Icon identifier for the UI
560+
- `disabled`: (Optional) Set to true to disable this cluster
561+
- `location`: Geographic coordinates for visualization
562+
- `lat`: Latitude
563+
- `lon`: Longitude
564+
565+
##### Namespace Configuration
566+
```yaml
567+
namespace:
568+
single:
569+
enabled: false # Use for single namespace deployments
570+
name: deployments
571+
runAsUser: 2024
572+
fsGroup: 2024
573+
multiple:
574+
enabled: true # Use for multiple namespace deployments
575+
prefix: "sm" # Prefix for created namespaces
576+
```
577+
578+
##### Connection Settings
579+
```yaml
580+
connection:
581+
sameCluster:
582+
enabled: false
583+
kubeconfig:
584+
enabled: true
585+
```
586+
587+
##### Domain Configuration
588+
```yaml
589+
domains:
590+
service:
591+
tls: true # Enable TLS for the domain
592+
hostname: "cluster.example.com" # Domain for accessing services
593+
```
594+
595+
The domain configuration determines how services in the cluster will be accessed. Each cluster needs a unique domain that resolves to its ingress controller.
596+
597+
##### Storage Configuration
598+
```yaml
599+
storage:
600+
storageClass: "standard" # Default storage class for the cluster
601+
```
602+
603+
Storage class recommendations per cloud provider:
604+
- GKE: Use `"standard"` for general purpose or `"premium-rwo"` for better performance
605+
- EKS: Use `"gp3"` for general purpose or `"io1"` for high-performance workloads
606+
- AKS: Use `"managed-premium"` for production or `"default"` for development
607+
608+
##### Ingress Configuration
609+
```yaml
610+
ingress:
611+
ingressClass: "nginx" # Ingress controller class name
612+
```
613+
614+
The ingress class should match your installed ingress controller. Common options:
615+
- `"nginx"` for NGINX Ingress Controller
616+
- `"azure/application-gateway"` for Azure Application Gateway
617+
- `"alb"` for AWS Application Load Balancer
618+
619+
##### Capabilities Configuration
620+
```yaml
621+
capabilities:
622+
mixedLoadBalancers: false # Support for mixed LoadBalancer services
623+
nodePorts:
624+
enabled: true # Enable NodePort service type
625+
range: # Port range for NodePort services
626+
min: 30000
627+
max: 32767
628+
```
629+
630+
Capabilities determine what features are available in the cluster:
631+
- `mixedLoadBalancers`: Enable if your cluster supports both internal and external load balancers
632+
- `nodePorts`: Configure if you need to expose services using NodePort type
633+
- The port range should be within Kubernetes defaults (30000-32767)
634+
- Ensure the range doesn't conflict with other services
635+
636+
#### Important Considerations
637+
638+
1. **Domain Names**
639+
- Each cluster must have a unique domain name
640+
- Domains should be properly configured in your DNS provider
641+
- TLS certificates will be automatically managed if cert-manager is configured
642+
643+
2. **Storage Classes**
644+
- Verify the storage class exists in your cluster before using it
645+
- Consider performance requirements when selecting storage classes
646+
- Some features may require specific storage capabilities (e.g., RWX support)
647+
648+
3. **Network Capabilities**
649+
- `mixedLoadBalancers` should match your cloud provider's capabilities
650+
- NodePort ranges should not conflict with other services
651+
- Ensure network policies allow required communication
652+
653+
:::tip
654+
When setting up a new cluster, start with the basic configuration and gradually enable additional capabilities as needed. This approach helps in identifying potential issues early in the deployment process.
655+
:::
656+
657+
469658
## Troubleshooting
470659

471660
If you encounter issues during installation:

0 commit comments

Comments
 (0)