You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Network Services Operator uses a multi-cluster architecture that implements a control plane/data plane separation pattern:
16
+
17
+
### Control Plane (nso-standard cluster)
18
+
- Runs the Network Services Operator and manages high-level network configurations
19
+
- Defines APIs and core controllers for network-related entities
20
+
- Responsible for defining the desired state of network resources
21
+
- Focuses on what network resources should exist
22
+
23
+
### Data Plane (nso-infra cluster)
24
+
- Contains the actual network infrastructure and resources
25
+
- Implements the infrastructure provider (e.g., GCP Infrastructure Provider)
26
+
- Responsible for implementing the actual network resources based on control plane configurations
27
+
- Focuses on how to implement the resources using specific infrastructure providers
28
+
29
+
This separation provides several benefits:
30
+
- Clear separation of concerns between configuration and implementation
31
+
- Infrastructure independence (control plane doesn't need to know implementation details)
32
+
- Enhanced security through isolation of control plane from infrastructure
33
+
- Flexible resource management across clusters
34
+
35
+
## Location Configuration
36
+
37
+
Locations define where network resources should be provisioned in the data plane. Example configurations can be found in the `config/samples` directory. For instance, to create a GCP-based location:
38
+
39
+
1. Make sure you're connected to the data plane cluster:
Documentation will be available at [docs.datum.net](https://docs.datum.net/)
@@ -22,8 +63,124 @@ shortly.
22
63
- go version v1.23.0+
23
64
- docker version 17.03+.
24
65
- kubectl version v1.31.0+.
66
+
- kustomize (required for deploying CRs)
67
+
- helm (required for deploying CRs with helm charts)
25
68
- Access to a Kubernetes v1.31.0+ cluster.
26
69
70
+
#### Development Setup
71
+
72
+
When running the operator locally with `make run`, you need to provide a kubeconfig file for the downstream cluster. The operator expects this file at `./infra.kubeconfig` by default. You can either:
73
+
74
+
1. Create a symbolic link to your kubeconfig:
75
+
```sh
76
+
ln -s ~/.kube/config ./infra.kubeconfig
77
+
```
78
+
79
+
2. Or modify the configuration in `config/dev/config.yaml` to point to your kubeconfig file:
80
+
```yaml
81
+
downstreamResourceManagement:
82
+
kubeconfigPath: /path/to/your/kubeconfig
83
+
```
84
+
85
+
#### Using k9s with Kind Clusters
86
+
87
+
The project uses two Kind clusters: `nso-standard` and `nso-infra`. If the clusters don't exist, create them first:
88
+
89
+
1. Create the standard cluster:
90
+
```sh
91
+
make kind-standard-cluster
92
+
```
93
+
94
+
2. Create the infrastructure cluster:
95
+
```sh
96
+
make kind-infra-cluster
97
+
```
98
+
99
+
If the clusters already exist but you need to get their kubeconfigs:
100
+
```sh
101
+
# For standard cluster
102
+
kind get kubeconfig --name nso-standard > "${TMPDIR}/.kind-nso-standard.yaml"
103
+
104
+
# For infrastructure cluster
105
+
kind get kubeconfig --name nso-infra > "${TMPDIR}/.kind-nso-infra.yaml"
106
+
```
107
+
108
+
After getting the kubeconfigs, you can connect to them using k9s:
0 commit comments