apollo配置中心快速部署步骤

apollo配置中心快速部署步骤
参考文档: https://www.apolloconfig.com/#/zh/deployment/distributed-deployment-guide?id=_24-kubernetes%e9%83%a8%e7%bd%b2

1. 数据库准备

Apollo服务端共需要两个数据库:ApolloPortalDB和ApolloConfigDB,从源码仓库下载sql文件,导入数据库即可。需要注意的是ApolloPortalDB只需要在生产环境部署一个即可,而ApolloConfigDB需要在每个环境部署一套,如fat、uat和pro分别部署3套ApolloConfigDB。

注意:使用工具导入sql文件时,需注意工具sql编辑器的编码方式,建议采用拷贝粘贴替代文件导入。
如有外部数据库实例,即可直接使用SQL文件进行数据库创建和初始化。本文采用手工部署单节点mysql,相关部署yaml文件如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: mysql-dev
  name: mysql-dev
  namespace: dev
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mysql-dev
  template:
    metadata:
      labels:
        app: mysql-dev
    spec:
      tolerations:
      - key: "node.kubernetes.io/unreachable"
        operator: "Exists"
        effect: "NoExecute"
        tolerationSeconds: 30
      - key: "node.kubernetes.io/not-ready"
        operator: "Exists"
        effect: "NoExecute"
        tolerationSeconds: 30
      containers:
      - env:
        - name: MYSQL_ROOT_PASSWORD
          value: "password"
        - name: TZ
          value: Asia/Shanghai
        image: mysql:8.0.17
        imagePullPolicy: IfNotPresent
        name: mysql-dev
        ports:
        - containerPort: 3306
          protocol: TCP
          name: tcp
        args:
        - --lower_case_table_names=1
        - --skip-ssl
        - --character_set_server=utf8mb4
        - --explicit_defaults_for_timestamp
# 数据库的持久化存储,根据实际情况修改
#        volumeMounts:
#        - name: mysqldata
#          mountPath: /var/lib/mysql
#      volumes:
#      - name: mysqldata
#        nfs:
#          server: 192.168.0.0
#          path: "/nfs/mysql-data"
---
apiVersion: v1
kind: Service
metadata:
  name: mysql-dev
  namespace: dev
spec:
  ports:
  - port: 3306
    protocol: TCP
    targetPort: 3306
    nodePort: 30306
  type: NodePort
  selector:
    app: mysql-dev

2. kubernetes部署

Apollo 1.7.0版本增加了基于Kubernetes原生服务发现的部署模式,不再使用内置的Eureka。以下使用官方Helm Charts进行快速部署。如何安装helm,请参考官方手册:https://helm.sh/
Apollo目前支持以下环境:

  • DEV:开发环境
  • FAT:测试环境,相当于alpha环境(功能测试)
  • UAT:集成环境,相当于beta环境(回归测试)
  • PRO:生产环境

2.1 添加Apollo Helm Chart仓库

$ helm repo add apollo https://charts.apolloconfig.com
$ helm search repo apollo
NAME                    CHART VERSION   APP VERSION     DESCRIPTION
apollo/apollo-portal    0.7.0           2.2.0           A Helm chart for Apollo Portal
apollo/apollo-service   0.7.0           2.2.0           A Helm chart for Apollo Config Service and Apol...
## 将helm chart拉到本地,方便编辑values.yaml文件
$ helm pull apollo/apollo-service
$ helm pull apollo/apollo-portal 

拉取apollo-portal和apollo-service到本地之后分别解压,下面需要用到解压后的value.yaml文件。

2.2 部署apollo-service

apollo/apollo-service包含两个服务:apollo-configservice和apollo-adminservice。根据架构需要在每个环境中安装apollo-configservice和apollo-adminservice,建议在release名称中加入环境信息,例如:apollo-service-dev。
拷贝默认值到values-dev.yaml

cp apollo-service\values.yaml apollo-service\values-dev.yaml

编辑values-dev.yaml

修改数据库相关配置:

configdb:
  name: apollo-configdb
  # apolloconfigdb host
  host: "mysql-dev"
  port: 3306
  dbName: apolloconfigdb
  # apolloconfigdb user name
  userName: "root"
  # apolloconfigdb password
  password: "password"
  connectionStringProperties: characterEncoding=utf8
  service:
    # whether to create a Service for this host or not
    enabled: false
    fullNameOverride: ""
    port: 3306
    type: ClusterIP

其他值根据实际情况调整,此处保持默认。
可配置项说明:https://www.apolloconfig.com/#/zh/deployment/distributed-deployment-guide?id=_24133-%e9%85%8d%e7%bd%ae%e9%a1%b9%e8%af%b4%e6%98%8e
执行apollo-service部署命令:

$ helm install apollo-service-dev -f apollo-service/values-dev.yaml -n dev apollo/apollo-service
NAME: apollo-service-dev
LAST DEPLOYED: Wed Jan  3 14:17:42 2024
NAMESPACE: dev
STATUS: deployed
REVISION: 1
dev SUITE: None
NOTES:
Meta service url for current release:
  echo http://apollo-service-dev-apollo-configservice.dev:8080

For local dev use:
  export POD_NAME=$(kubectl get pods --namespace dev -l "app=apollo-service-dev-apollo-configservice" -o jsonpath="{.items[0].metadata.name}")
  echo http://127.0.0.1:8080
  kubectl --namespace dev port-forward $POD_NAME 8080:8080

Urls registered to meta service:
Config service: http://apollo-service-dev-apollo-configservice.dev:8080
Admin service: http://apollo-service-dev-apollo-adminservice.dev:8090

其他环境fat uat pro部署方法依此类推。

2.3 部署apollo-portal

apollo-portal部署需要2.2步骤的meta service地址,例如上述的Config service: http://apollo-service-dev-apollo-configservice.dev:8080
同样的拷贝默认value.yaml文件

cp apollo-portal/values.yaml apollo-portal/values-dev.yaml

编辑values-dev.yaml

config:
  # spring profiles to activate
  profiles: "github,auth"
  # specify the env names, e.g. dev,pro
  envs: "dev"
  # specify the meta servers, e.g.
  # dev: http://apollo-configservice-dev:8080
  # pro: http://apollo-configservice-pro:8080
  metaServers: 
    dev: http://apollo-service-dev-apollo-configservice.dev:8080
  # specify the context path, e.g. /apollo
  contextPath: ""
  # extra config files for apollo-portal, e.g. application-ldap.yml
  files: {}

portaldb:
  name: apollo-portaldb
  # apolloportaldb host
  host: mysql-dev
  port: 3306
  dbName: apolloportaldb
  # apolloportaldb user name
  userName: root
  # apolloportaldb password
  password: password
  connectionStringProperties: characterEncoding=utf8
  service:
    # whether to create a Service for this host or not
    enabled: false
    fullNameOverride: ""
    port: 3306
    type: ClusterIP

其他配置项说明:https://www.apolloconfig.com/#/zh/deployment/distributed-deployment-guide?id=_24143-%e9%85%8d%e7%bd%ae%e9%a1%b9%e8%af%b4%e6%98%8e
执行apollo-portal部署命令:

$ helm install apollo-portal -f apollo-portal/values-dev.yaml -n dev apollo/apollo-portal
NAME: apollo-portal
LAST DEPLOYED: Wed Jan  3 15:45:38 2024
NAMESPACE: dev
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Portal url for current release:
  export POD_NAME=$(kubectl get pods --namespace dev -l "app=apollo-portal" -o jsonpath="{.items[0].metadata.name}")
  echo "Visit http://127.0.0.1:8070 to use your application"
  kubectl --namespace dev port-forward $POD_NAME 8070:8070

至此,apollo-service和apollo-portal部署完成。

3. 服务访问

在value-dev.yaml文件中可以配置ingress进行访问。本案为测试,集群内使用k8s服务发现,集群外直接采用nodeport访问即可。

3.1 apollo-service访问方式

部署时返回的信息已经提示了apollo-service的访问方式了:

Meta service url for current release:
  echo http://apollo-service-dev-apollo-configservice.dev:8080

For local dev use:
  export POD_NAME=$(kubectl get pods --namespace dev -l "app=apollo-service-dev-apollo-configservice" -o jsonpath="{.items[0].metadata.name}")
  echo http://127.0.0.1:8080
  kubectl --namespace dev port-forward $POD_NAME 8080:8080

Urls registered to meta service:
Config service: http://apollo-service-dev-apollo-configservice.dev:8080
Admin service: http://apollo-service-dev-apollo-adminservice.dev:8090

3.2 apollo-portal访问方式

同样,apollo-portal部署时返回的信息已经提示了访问方式:

Portal url for current release:
  export POD_NAME=$(kubectl get pods --namespace dev -l "app=apollo-portal" -o jsonpath="{.items[0].metadata.name}")
  echo "Visit http://127.0.0.1:8070 to use your application"
  kubectl --namespace dev port-forward $POD_NAME 8070:8070

本案直接用nodeport方式暴露apollo-portal服务:

kubectl expose service apollo-portal --port=8070 --target-port=8070 --name=apollo-portal-nodeport --type=NodePort -n dev

4. 页面访问

具体页面操作,可以使用官方提供的演示环境。
演示环境(Demo):

http://81.68.181.139
账号/密码:apollo/admin

在这里插入图片描述在这里插入图片描述

  • 27
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值