Nacos is committed to help you discover, configure, and manage your microservices. It provides a set of simple and useful features enabling you to realize dynamic service discovery, service configuration, service metadata and traffic management.
This project is based on the Helm Chart packaged by nacos-k8s.
- Kubernetes 1.10+
- Helm v3
- PV provisioner support in the underlying infrastructure
If you use a custom database, please initialize the database script yourself first. https://github.com/alibaba/nacos/blob/develop/distribution/conf/nacos-mysql.sql
To install the chart with release name
:
$ helm install `release name` ./nacos
The command deploys Nacos on the Kubernetes cluster in the default configuration. It will run without a mysql chart and persistent volume. The configuration section lists the parameters that can be configured during installation.
curl -X POST 'http://$NODE_IP:$NODE_PORT/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.10&port=8080'
curl -X GET 'http://$NODE_IP:$NODE_PORT/nacos/v1/ns/instance/list?serviceName=nacos.naming.serviceName'
curl -X POST "http://$NODE_IP:$NODE_PORT/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test&content=helloWorld"
curl -X GET "http://$NODE_IP:$NODE_PORT/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test"
Tip: List all releases using
helm list
To uninstall/delete release name
:
$ helm uninstall `release name`
The command removes all the Kubernetes components associated with the chart and deletes the release.
The following table lists the configurable parameters of the Skywalking chart and their default values.
Parameter | Description | Default |
---|---|---|
global.mode |
Run Mode ( |
standalone |
resources |
The [resources] to allocate for nacos container | {} |
nodeSelector |
Nacos labels for pod assignment | {} |
affinity |
Nacos affinity policy | {} |
tolerations |
Nacos tolerations | {} |
resources.requests.cpu |
nacos requests cpu resource | 500m |
resources.requests.memory |
nacos requests memory resource | 2G |
nacos.replicaCount |
Number of desired nacos pods, the number should be 1 as run standalone mode | 1 |
nacos.image.repository |
Nacos container image name | nacos/nacos-server |
nacos.image.tag |
Nacos container image tag | latest |
nacos.image.pullPolicy |
Nacos container image pull policy | IfNotPresent |
nacos.plugin.enable |
Nacos cluster plugin that is auto scale | true |
nacos.plugin.image.repository |
Nacos cluster plugin image name | nacos/nacos-peer-finder-plugin |
nacos.plugin.image.tag |
Nacos cluster plugin image tag | 1.1 |
nacos.health.enabled |
Enable health check or not | false |
nacos.env.preferhostmode |
Enable Nacos cluster node domain name support | hostname |
nacos.env.serverPort |
Nacos port | 8848 |
nacos.storage.type |
Nacos data storage method mysql or embedded . The embedded supports either standalone or cluster mode |
embedded |
nacos.storage.db.host |
mysql host | |
nacos.storage.db.name |
mysql database name | |
nacos.storage.db.port |
mysql port | 3306 |
nacos.storage.db.username |
username of database | |
nacos.storage.db.password |
password of database | |
nacos.storage.db.param |
Database url parameter | characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false |
persistence.enabled |
Enable the nacos data persistence or not | false |
persistence.data.accessModes |
Nacos data pvc access mode | ReadWriteOnce |
persistence.data.storageClassName |
Nacos data pvc storage class name | manual |
persistence.data.resources.requests.storage |
Nacos data pvc requests storage | 5G |
service.type |
http service type | NodePort |
service.port |
http service port | 8848 |
service.nodePort |
http service nodeport | 30000 |
ingress.enabled |
Enable ingress or not | false |
ingress.annotations |
The annotations used in ingress | {} |
ingress.hosts |
The host of nacos service in ingress rule | nacos.example.com |
$ helm install `release name` ./ --set global.mode=standalone
$ helm install `release name` ./ --set global.mode=standalone --set nacos.storage.db.host=host --set nacos.storage.
db.name=dbName --set nacos.storage.db.port=port --set nacos.storage.db.username=username --set nacos.storage.db.
password=password
Tip: if the logs of nacos pod throws exception, you may need to delete the pod. Because mysql pod is not ready, nacos pod has been started.
$ helm install `release name` ./ --set global.mode=cluster
$ kubectl scale sts `release name`-nacos --replicas=3
- Use kubectl exec to get the cluster config of the Pods in the nacos StatefulSet after scale StatefulSets