{"id":19242672,"url":"https://github.com/apolloconfig/apollo-on-kubernetes","last_synced_at":"2025-07-16T02:40:07.326Z","repository":{"id":44847803,"uuid":"509899992","full_name":"apolloconfig/apollo-on-kubernetes","owner":"apolloconfig","description":"Apollo Config Manual Kubernetes Deployment Scripts","archived":false,"fork":false,"pushed_at":"2022-07-03T02:00:07.000Z","size":12,"stargazers_count":7,"open_issues_count":0,"forks_count":2,"subscribers_count":11,"default_branch":"main","last_synced_at":"2025-07-08T03:45:01.121Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/apolloconfig.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-07-03T01:56:05.000Z","updated_at":"2025-06-26T02:28:52.000Z","dependencies_parsed_at":"2022-09-01T20:01:55.455Z","dependency_job_id":null,"html_url":"https://github.com/apolloconfig/apollo-on-kubernetes","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/apolloconfig/apollo-on-kubernetes","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apolloconfig%2Fapollo-on-kubernetes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apolloconfig%2Fapollo-on-kubernetes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apolloconfig%2Fapollo-on-kubernetes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apolloconfig%2Fapollo-on-kubernetes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/apolloconfig","download_url":"https://codeload.github.com/apolloconfig/apollo-on-kubernetes/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apolloconfig%2Fapollo-on-kubernetes/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265002961,"owners_count":23696109,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-09T17:15:01.888Z","updated_at":"2025-07-16T02:40:07.242Z","avatar_url":"https://github.com/apolloconfig.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 使用方法\n\n\u003e  Apollo 1.7.0版本增加了基于Kubernetes原生服务发现的[Helm Chart部署模式](https://www.apolloconfig.com/#/zh/deployment/distributed-deployment-guide?id=_241-%e5%9f%ba%e4%ba%8ekubernetes%e5%8e%9f%e7%94%9f%e6%9c%8d%e5%8a%a1%e5%8f%91%e7%8e%b0)，由于不再使用内置的Eureka，所以在整体部署上有很大简化，如无特殊需求，建议使用该模式部署。\n\n## 1. 创建数据库\n具体步骤请参考 [2.1 创建数据库](https://www.apolloconfig.com/#/zh/deployment/distributed-deployment-guide?id=_21-%e5%88%9b%e5%bb%ba%e6%95%b0%e6%8d%ae%e5%ba%93)，需要注意的是 ApolloPortalDB 只需要在生产环境部署一个即可，而 ApolloConfigDB 需要在每个环境部署一套，示例假设你的 apollo 开启了 4 个环境, 即 dev、fat、uat、prod，那么就需要创建 4 个 ApolloConfigDB。\n\n## 2. 调整部署配置\n\n### 2.1 ApolloConfigDB 数据库连接信息\n\n以 dev 环境为例，需要修改：\n\n1. `apollo-env-dev/service-apollo-config-server-dev.yaml`和`apollo-env-dev/service-apollo-admin-server-dev.yaml`中`application-github.properties`的`spring.datasource.url`，`spring.datasource.username`和`spring.datasource.password`配置\n2. `apollo-env-dev/service-mysql-for-apollo-dev-env.yaml`中 mysql endpoint 地址信息\n\n### 2.2 eureka.service.url\n\n以 dev 环境为例，默认是以 replica 为 3 做的样例配置，如果 replica 数量改变了，那么也要对应修改`apollo-env-dev/service-apollo-config-server-dev.yaml`和`apollo-env-dev/service-apollo-admin-server-dev.yaml`中`application-github.properties`的`eureka.service.url`配置。\n\n如果该配置希望以数据库中为准，那么在 yaml 中直接删除该配置项即可。\n\n### 2.3 ApolloPortalDB 数据库连接信息\n\n1. 修改`service-apollo-portal-server.yaml`中`application-github.properties`的`spring.datasource.url`，`spring.datasource.username`和`spring.datasource.password`配置\n2. 修改`service-apollo-portal-server.yaml`中 mysql endpoint 地址信息\n\n### 2.4 ApolloPortal 的环境信息\n\n1. 修改`service-apollo-portal-server.yaml`中`application-github.properties`的`apollo.portal.envs`配置\n   * 如果该配置希望以数据库中为准，那么在 yaml 中直接删除该配置项即可。\n2. 修改`service-apollo-portal-server.yaml`中`apollo-env.properties`的各环境 meta server 地址信息\n\n## 3. Deploy apollo on kubernetes\n\n示例假设 apollo 开启了 4 个环境, 即 dev、fat、uat、pro\n\n按照 kubectl-apply.sh 文件的内容部署 apollo 即可。\n\n```bash\napollo-on-kubernetes$ cat kubectl-apply.sh\n# create namespace\nkubectl create namespace sre\n\n# dev-env\nkubectl apply -f apollo-env-dev/service-mysql-for-apollo-dev-env.yaml --record \u0026\u0026 \\\nkubectl apply -f apollo-env-dev/service-apollo-config-server-dev.yaml --record \u0026\u0026 \\\nkubectl apply -f apollo-env-dev/service-apollo-admin-server-dev.yaml --record\n\n# fat-env\nkubectl apply -f apollo-env-fat/service-mysql-for-apollo-fat-env.yaml --record \u0026\u0026 \\\nkubectl apply -f apollo-env-fat/service-apollo-config-server-fat.yaml --record \u0026\u0026 \\\nkubectl apply -f apollo-env-fat/service-apollo-admin-server-fat.yaml --record\n\n# uat-env\nkubectl apply -f apollo-env-uat/service-mysql-for-apollo-uat-env.yaml --record \u0026\u0026 \\\nkubectl apply -f apollo-env-uat/service-apollo-config-server-uat.yaml --record \u0026\u0026 \\\nkubectl apply -f apollo-env-uat/service-apollo-admin-server-uat.yaml --record\n\n# prod-env\nkubectl apply -f apollo-env-prod/service-mysql-for-apollo-prod-env.yaml --record \u0026\u0026 \\\nkubectl apply -f apollo-env-prod/service-apollo-config-server-prod.yaml --record \u0026\u0026 \\\nkubectl apply -f apollo-env-prod/service-apollo-admin-server-prod.yaml --record\n\n# portal\nkubectl apply -f service-apollo-portal-server.yaml --record\n```\n\n## 4. 验证所有 pod 处于 Running 并且 READY 状态\n\n```bash\nkubectl get pod -n sre -o wide\n\n# 示例结果\nNAME                                                        READY     STATUS    RESTARTS   AGE       IP            NODE\ndeployment-apollo-admin-server-dev-b7bbd657-4d5jx           1/1       Running   0          2d        10.247.4.79   k8s-apollo-node-2\ndeployment-apollo-admin-server-dev-b7bbd657-lwz5x           1/1       Running   0          2d        10.247.8.7    k8s-apollo-node-3\ndeployment-apollo-admin-server-dev-b7bbd657-xs4wt           1/1       Running   0          2d        10.247.1.23   k8s-apollo-node-1\ndeployment-apollo-admin-server-prod-699bbd894f-j977p        1/1       Running   0          2d        10.247.4.83   k8s-apollo-node-2\ndeployment-apollo-admin-server-prod-699bbd894f-n9m54        1/1       Running   0          2d        10.247.8.11   k8s-apollo-node-3\ndeployment-apollo-admin-server-prod-699bbd894f-vs56w        1/1       Running   0          2d        10.247.1.27   k8s-apollo-node-1\ndeployment-apollo-admin-server-uat-7c855cd4f5-9br65   1/1       Running   0          2d        10.247.1.25   k8s-apollo-node-1\ndeployment-apollo-admin-server-uat-7c855cd4f5-cck5g   1/1       Running   0          2d        10.247.8.9    k8s-apollo-node-3\ndeployment-apollo-admin-server-uat-7c855cd4f5-x6gt4   1/1       Running   0          2d        10.247.4.81   k8s-apollo-node-2\ndeployment-apollo-portal-server-6d4bbc879c-bv7cn            1/1       Running   0          2d        10.247.8.12   k8s-apollo-node-3\ndeployment-apollo-portal-server-6d4bbc879c-c4zrb            1/1       Running   0          2d        10.247.1.28   k8s-apollo-node-1\ndeployment-apollo-portal-server-6d4bbc879c-qm4mn            1/1       Running   0          2d        10.247.4.84   k8s-apollo-node-2\nstatefulset-apollo-config-server-dev-0                      1/1       Running   0          2d        10.247.8.6    k8s-apollo-node-3\nstatefulset-apollo-config-server-dev-1                      1/1       Running   0          2d        10.247.4.78   k8s-apollo-node-2\nstatefulset-apollo-config-server-dev-2                      1/1       Running   0          2d        10.247.1.22   k8s-apollo-node-1\nstatefulset-apollo-config-server-prod-0                     1/1       Running   0          2d        10.247.8.10   k8s-apollo-node-3\nstatefulset-apollo-config-server-prod-1                     1/1       Running   0          2d        10.247.4.82   k8s-apollo-node-2\nstatefulset-apollo-config-server-prod-2                     1/1       Running   0          2d        10.247.1.26   k8s-apollo-node-1\nstatefulset-apollo-config-server-uat-0                1/1       Running   0          2d        10.247.8.8    k8s-apollo-node-3\nstatefulset-apollo-config-server-uat-1                1/1       Running   0          2d        10.247.4.80   k8s-apollo-node-2\nstatefulset-apollo-config-server-uat-2                1/1       Running   0          2d        10.247.1.24   k8s-apollo-node-1\n```\n\n### 2.4 访问 apollo service\n\n- server 端(即 portal) \u003cbr/\u003e\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;kubernetes-master-ip:30001\n\n- client 端, 在 client 端无需再实现负载均衡 \u003cbr/\u003e\nDev\u003cbr/\u003e\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;kubernetes-master-ip:30002 \u003cbr/\u003e\nFat \u003cbr/\u003e\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;kubernetes-master-ip:30003 \u003cbr/\u003e\nUat \u003cbr/\u003e\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;kubernetes-master-ip:30004 \u003cbr/\u003e\nProd \u003cbr/\u003e\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;kubernetes-master-ip:30005 \u003cbr/\u003e\n\n# FAQ\n\n## 关于 kubernetes yaml 文件\n具体内容请查看 `service-apollo-portal-server.yaml` 注释 \u003cbr/\u003e\n其他类似。\n\n## 关于 eureka.service.url\n使用 meta-server(即 config-server) 的 pod name, config-server 务必使用 statefulset。\n格式为：`http://\u003cconfig server pod名\u003e.\u003cmeta server 服务名\u003e:\u003cmeta server端口号\u003e/eureka/`。\n\n以 apollo-env-dev 为例:\n```bash\n('eureka.service.url', 'default', 'http://statefulset-apollo-config-server-dev-0.service-apollo-meta-server-dev:8080/eureka/,http://statefulset-apollo-config-server-dev-1.service-apollo-meta-server-dev:8080/eureka/,http://statefulset-apollo-config-server-dev-2.service-apollo-meta-server-dev:8080/eureka/', 'Eureka服务Url，多个service以英文逗号分隔')\n```\n你可以精简 config-server pod 的 name, 示例的长名字是为了更好的阅读与理解。\n\n### 方式一：通过Spring Boot文件 application-github.properties配置（推荐）\n推荐此方式配置 `eureka.service.url`，因为可以通过ConfigMap的方式传入容器，无需再修改数据库的字段。\n\nAdmin Server的配置：\n```yaml\n---\n# configmap for apollo-admin-server-dev\nkind: ConfigMap\napiVersion: v1\nmetadata:\n  namespace: sre\n  name: configmap-apollo-admin-server-dev\ndata:\n  application-github.properties: |\n    spring.datasource.url = jdbc:mysql://service-mysql-for-apollo-dev-env-mariadb.sre:3306/DevApolloConfigDB?characterEncoding=utf8\n    spring.datasource.username = root\n    spring.datasource.password = test\n    eureka.service.url = http://statefulset-apollo-config-server-dev-0.service-apollo-meta-server-dev:8080/eureka/,http://statefulset-apollo-config-server-dev-1.service-apollo-meta-server-dev:8080/eureka/,http://statefulset-apollo-config-server-dev-2.service-apollo-meta-server-dev:8080/eureka/\n\n```\n\nConfig Server的配置：\n```yaml\n---\n# configmap for apollo-config-server-dev\nkind: ConfigMap\napiVersion: v1\nmetadata:\n  namespace: sre\n  name: configmap-apollo-config-server-dev\ndata:\n  application-github.properties: |\n    spring.datasource.url = jdbc:mysql://service-mysql-for-apollo-dev-env-mariadb.sre:3306/DevApolloConfigDB?characterEncoding=utf8\n    spring.datasource.username = root\n    spring.datasource.password = m6bCdQXa00\n    eureka.service.url = http://statefulset-apollo-config-server-dev-0.service-apollo-meta-server-dev:8080/eureka/,http://statefulset-apollo-config-server-dev-1.service-apollo-meta-server-dev:8080/eureka/,http://statefulset-apollo-config-server-dev-2.service-apollo-meta-server-dev:8080/eureka/\n\n```\n\n### 方式二：修改数据表 ApolloConfigDB.ServerConfig\n修改数据库表 ApolloConfigDB.ServerConfig的 eureka.service.url。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapolloconfig%2Fapollo-on-kubernetes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fapolloconfig%2Fapollo-on-kubernetes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapolloconfig%2Fapollo-on-kubernetes/lists"}