This project includes a series of Kubernetes custom resources (CustomResourceDefinition) and their related controller implementations. The current version defines CRDs as follows:
- DynamicConfiguration: Synchronization bridge between Nacos configuration and Kubernetes configuration.
- Install helm,see document
- Install Nacos Controller
git clone https://github.com/nacos-group/nacos-controller.git
cd nacos-controller/charts/nacos-controller
export KUBECONFIG=/path/to/your/kubeconfig/file
kubectl create ns nacos
helm install -n nacos nacos-controller .
- a Secret contains authorization information of nacos server, which is ak and sk
- a ConfigMap contains dataIds and their content
- a DynamicConfiguration, which defines the behaviour of synchronization
- spec.dataIds:defines which dataIds should be synced
- spec.nacosServer:defines the information of nacos server
- spec.strategy:defines the strategy of synchronization
- spec.objectRef:reference of object which contains dataIds and their content
apiVersion: nacos.io/v1
kind: DynamicConfiguration
metadata:
name: dc-demo-cluster2server
spec:
dataIds:
- data-id1.properties
- data-id2.yml
nacosServer:
endpoint: <your-nacos-server-endpoint>
namespace: <your-nacos-namespace-id>
group: <your-nacos-group>
authRef:
apiVersion: v1
kind: Secret
name: nacos-auth
strategy:
syncPolicy: Always
syncDirection: cluster2server
syncDeletion: true
objectRef:
apiVersion: v1
kind: ConfigMap
name: nacos-config-cm
---
apiVersion: v1
kind: ConfigMap
metadata:
name: nacos-config-cm
namespace: default
data:
data-id1.properties: |
key=value
key2=value2
data-id2.yml: |
app:
name: test
---
apiVersion: v1
kind: Secret
metadata:
name: nacos-auth
data:
ak: <base64 ak>
sk: <base64 sk>
- a Secret contains authorization information of nacos server, which is ak and sk
- a ConfigMap to store dataIds and their content (Optional, controller will create if this object doesn't exist)
- a DynamicConfiguration, which defines the behaviour of synchronization
- spec.dataIds:defines which dataIds should be synced
- spec.nacosServer:defines the information of nacos server
- spec.strategy:defines the strategy of synchronization
- spec.objectRef:reference of object which contains dataIds and their content(Optional, if empty, controller will create a ConfigMap with same name as default object)
apiVersion: nacos.io/v1
kind: DynamicConfiguration
metadata:
name: dc-demo-server2cluster
spec:
dataIds:
- data-id1.properties
- data-id2.yml
nacosServer:
endpoint: <your-nacos-server-endpoint>
namespace: <your-nacos-namespace-id>
group: <your-nacos-group>
authRef:
apiVersion: v1
kind: Secret
name: nacos-auth
strategy:
syncPolicy: Always
syncDirection: server2cluster
syncDeletion: true
---
apiVersion: v1
kind: Secret
metadata:
name: nacos-auth
data:
ak: <base64 ak>
sk: <base64 sk>
- endpoint: the address server of nacos server, conflict with serverAddr field, and higher priority than serverAddr field
- serverAddr: the address of nacos server, conflict with endpoint field
- namespace: the namespace id of nacos server
- group: the group of nacos server
- authRef: a reference of Object, which contains ak/sk of nacos server, currently only Secret is supported
nacosServer:
endpoint: <your-nacos-server-endpoint>
serverAddr: <your-nacos-server-addr>
namespace: <your-nacos-namespace-id>
group: <your-nacos-group>
authRef:
apiVersion: v1
kind: Secret
name: nacos-auth
Special thanks to the following individuals/teams for their contributions to this project:
- Alibaba Cloud EDAS team (project incubation source)