阅读目录
一、配置文件
1.初始化数据库
wget https://raw.githubusercontent.com/alibaba/nacos/develop/distribution/conf/mysql-schema.sql mysql -uroot -p CREATE DATABASE IF NOT EXISTS nacos_config DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci; use nacos_config; source /root/mysql-schema.sql; CREATE USER 'nacos'@'%' IDENTIFIED BY 'WKjIjQZ1ub3V5qSd'; #不能包含特殊字符 GRANT ALL PRIVILEGES ON nacos_config.* TO 'nacos'@'%'; FLUSH PRIVILEGES; exit;
2.创建nacos配置文件
apiVersion: v1 kind: ConfigMap metadata: name: t1-zdbl-nacos-cm namespace: t1-zdbl data: mysql.host: "t1-zdbl-mysql.t1-zdbl.svc.cluster.local" mysql.db.name: "nacos_config" mysql.port: "3306" mysql.user: "t1_zdbl_nocos" mysql.password: "xxxxxx" #注意此处的密码不要包含特殊字符,否则在开启鉴权的情况下可能导致客户端连接错误,报403
3.创建nacos deploy部署文件
apiVersion: apps/v1 kind: Deployment metadata: name: t1-zdbl-nacos namespace: t1-zdbl spec: replicas: 1 template: metadata: labels: app: t1-zdbl-nacos spec: containers: - name: k8snacos image: nacos/nacos-server:v2.2.0 resources: requests: memory: "1Gi" cpu: "500m" ports: - containerPort: 8848 name: client - containerPort: 9848 name: client-rpc - containerPort: 9849 name: raft-rpc - containerPort: 7848 name: old-raft-rpc env: - name: SPRING_DATASOURCE_PLATFORM value: "mysql" - name: MYSQL_SERVICE_HOST valueFrom: configMapKeyRef: name: t1-zdbl-nacos-cm key: mysql.host - name: MYSQL_SERVICE_DB_NAME valueFrom: configMapKeyRef: name: t1-zdbl-nacos-cm key: mysql.db.name - name: MYSQL_SERVICE_PORT valueFrom: configMapKeyRef: name: t1-zdbl-nacos-cm key: mysql.port - name: MYSQL_SERVICE_USER valueFrom: configMapKeyRef: name: t1-zdbl-nacos-cm key: mysql.user - name: MYSQL_SERVICE_PASSWORD valueFrom: configMapKeyRef: name: t1-zdbl-nacos-cm key: mysql.password - name: MODE value: "standalone" - name: NACOS_SERVER_PORT value: "8848" - name: PREFER_HOST_MODE value: "hostname" - name: NACOS_AUTH_ENABLE #开启鉴权 value: "true" - name: NACOS_AUTH_IDENTITY_KEY value: "nacosAuthKey" - name: NACOS_AUTH_IDENTITY_VALUE value: "nacosSecurtyValue" - name: NACOS_AUTH_TOKEN value: "SecretKey012345678901234567890123456789012345678901234567890123456789" - name: NACOS_AUTH_TOKEN_EXPIRE_SECONDS value: "18000" selector: matchLabels: app: t1-zdbl-nacos
4.创建nacos svc文件
apiVersion: v1 kind: Service metadata: name: t1-zdbl-nacos namespace: t1-zdbl labels: app: t1-zdbl-nacos spec: type: NodePort ports: - port: 8848 name: server targetPort: 8848 nodePort: 31048 - port: 9848 name: client-rpc targetPort: 9848 - port: 9849 name: raft-rpc targetPort: 9849 - port: 7848 name: old-raft-rpc targetPort: 7848 selector: app: t1-zdbl-nacos
5.创建nacos ingress文件
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: t1-zdbl-nacos namespace: t1-zdbl annotations: alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80},{"HTTPS": 443}]' alb.ingress.kubernetes.io/ssl-redirect: "true" spec: ingressClassName: alb #此处使用了阿里云的ALB Ingress,如果是其他自行替换即可 rules: - host: t1-zdbl-nacos.xxxxx.com http: paths: - path: / pathType: Prefix backend: service: name: t1-zdbl-nacos port: number: 8848
初始化数据库后直接apply以上yaml文件即可
二、可能遇到的问题
1.启动报 "Caused by: java.sql.SQLSyntaxErrorException: Unknown column ‘encrypted_data"错误
解决方法:
手动为数据库表 config_info、config_info_beta、his_config_info中需要新增字段 encrypted_data_key
ALTER TABLE table_name ADD COLUMN `encrypted_data_key` text NOT NULL COMMENT '秘钥' #将table_name 替换为以上三个表名称
2.默认账号密码无法登录(nacos/nacos)
使用生产的结果个替换数据库password字段