k8s部署apollo 2.2.0

 

1、部署mysql

vim mysql-statefulset.yaml

 

apiVersion: v1
kind: Secret
metadata:
  name: mysql-secret
  namespace: apollo
type: Opaque
stringData:
  root-password: root123       # 可自定义,Apollo 中会用到
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: mysql-init-sql
  namespace: apollo
data:
  init.sql: |
    CREATE USER IF NOT EXISTS 'apollo'@'%' IDENTIFIED BY 'apollo123';
    GRANT ALL PRIVILEGES ON ApolloPortalDB.* TO 'apollo'@'%';
    GRANT ALL PRIVILEGES ON ApolloConfigDB.* TO 'apollo'@'%';
    FLUSH PRIVILEGES;
---
apiVersion: v1
kind: Service
metadata:
  name: apollo-mysql
  namespace: apollo
  labels:
    app: mysql
spec:
  ports:
  - port: 3306
    name: mysql
  clusterIP: None
  selector:
    app: mysql
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: apollo-mysql
  namespace: apollo
spec:
  serviceName: apollo-mysql
  replicas: 1
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - name: mysql
        image: mysql:8.0.36
        env:
        - name: MYSQL_ROOT_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mysql-secret
              key: root-password
        ports:
        - containerPort: 3306
          name: mysql
        volumeMounts:
        - name: data
          mountPath: /var/lib/mysql
        - name: init-sql
          mountPath: /docker-entrypoint-initdb.d
        resources:
          requests:
            cpu: 500m
            memory: 512Mi
          limits:
            cpu: 750m
            memory: 768Mi
      volumes:
      - name: init-sql
        configMap:
          name: mysql-init-sql
  volumeClaimTemplates:
  - metadata:
      name: data
    spec:
      accessModes: [ "ReadWriteOnce" ]
      storageClassName: alicloud-disk-ssd   # 你指定的存储类
      resources:
        requests:
          storage: 20Gi

 

运行

kc apply -f mysql-statefulset.yaml

 

2、部署Config Service 和 Admin Service

vim my-service-values.yaml 

 

# 全局配置
image:
  tag: "2.2.0"

# Config Service 和 Admin Service 共用的数据库配置
configdb:
  host: "apollo-mysql.apollo.svc.cluster.local"  # 指向你部署在K8s内部的MySQL服务
  port: 3306
  dbName: "ApolloConfigDB"
  userName: "root"
  password: "root123"  # 请替换为你实际设置的MySQL root密码
  connectionStringProperties: "characterEncoding=utf8"

# 部署Config Service的3个副本实现高可用 [9†L13]
configService:
  replicaCount: 3
  service:
    type: ClusterIP

# 部署Admin Service的2个副本 [9†L14]
adminService:
  replicaCount: 2
  service:
    type: ClusterIP

 

helm install my-apollo-service apollo/apollo-service -n apollo -f my-service-values.yaml

 

3、部署Portal

vim my-portal-values.yaml

 

image:
  tag: "2.2.0"

# Portal专用的数据库配置
portaldb:
  host: "apollo-mysql.apollo.svc.cluster.local"
  port: 3306
  dbName: "ApolloPortalDB"
  userName: "root"
  password: "root123"  # 请替换为你实际设置的MySQL root密码
  connectionStringProperties: "characterEncoding=utf8"

portal:
  replicaCount: 1       # Portal本身是无状态的,1个副本足以 [9†L15]
  service:
    type: LoadBalancer      # 为了能通过浏览器访问,我们将Service类型设为LB

 

helm install  my-apollo-portal apollo/apollo-portal -n apollo -f my-portal-values.yaml

 

4、访问

获取到地址后,在浏览器打开,默认用户名/密码:apollo / admin

 

posted @ 2026-06-01 11:21  苦逼yw  阅读(9)  评论(0)    收藏  举报