Apollo is a reliable configuration management system.
The apollo-service and apollo-portal charts create deployments for apollo-configservice, apollo-adminservice and apollo-portal, which utilize the kubernetes native service discovery.
$ helm repo add apollo https://charts.apolloconfig.com$ helm search repo apolloapollo-configservice and apollo-adminservice should be installed per environment, so it is suggested to indicate environment in the release name, e.g. apollo-service-dev
$ helm install apollo-service-dev \ --set configdb.host=1.2.3.4 \ --set configdb.userName=apollo \ --set configdb.password=apollo \ --set configdb.service.enabled=true \ --set configService.replicaCount=1 \ --set adminService.replicaCount=1 \ -n your-namespace \ apollo/apollo-serviceOr customize it with values.yaml
$ helm install apollo-service-dev -f values.yaml -n your-namespace apollo/apollo-service To uninstall/delete the apollo-service-dev deployment:
$ helm uninstall -n your-namespace apollo-service-devThe following table lists the configurable parameters of the apollo-service chart and their default values.
| Parameter | Description | Default |
|---|---|---|
configdb.host | The host for apollo config db | nil |
configdb.port | The port for apollo config db | 3306 |
configdb.dbName | The database name for apollo config db | ApolloConfigDB |
configdb.userName | The user name for apollo config db | nil |
configdb.password | The password for apollo config db | nil |
configdb.connectionStringProperties | The connection string properties for apollo config db | characterEncoding=utf8 |
configdb.service.enabled | Whether to create a Kubernetes Service for configdb.host or not. Set it to true if configdb.host is an endpoint outside of the kubernetes cluster | false |
configdb.service.fullNameOverride | Override the service name for apollo config db | nil |
configdb.service.port | The port for the service of apollo config db | 3306 |
configdb.service.type | The service type of apollo config db: ClusterIP or ExternalName. If the host is a DNS name, please specify ExternalName as the service type, e.g. xxx.mysql.rds.aliyuncs.com | ClusterIP |
configService.fullNameOverride | Override the deployment name for apollo-configservice | nil |
configService.replicaCount | Replica count of apollo-configservice | 2 |
configService.containerPort | Container port of apollo-configservice | 8080 |
configService.image.repository | Image repository of apollo-configservice | apolloconfig/apollo-configservice |
configService.image.tag | Image tag of apollo-configservice, e.g. 1.8.0, leave it to nil to use the default version | nil |
configService.image.pullPolicy | Image pull policy of apollo-configservice | IfNotPresent |
configService.imagePullSecrets | Image pull secrets of apollo-configservice | [] |
configService.service.fullNameOverride | Override the service name for apollo-configservice | nil |
configService.service.port | The port for the service of apollo-configservice | 8080 |
configService.service.targetPort | The target port for the service of apollo-configservice | 8080 |
configService.service.type | The service type of apollo-configservice | ClusterIP |
configService.ingress.enabled | Whether to enable the ingress for config-service or not | false |
configService.ingress.annotations | The annotations of the ingress for config-service | {} |
configService.ingress.hosts.host | The host of the ingress for config-service | nil |
configService.ingress.hosts.paths | The paths of the ingress for config-service | [] |
configService.ingress.tls | The tls definition of the ingress for config-service | [] |
configService.liveness.initialDelaySeconds | The initial delay seconds of liveness probe | 100 |
configService.liveness.periodSeconds | The period seconds of liveness probe | 10 |
configService.readiness.initialDelaySeconds | The initial delay seconds of readiness probe | 30 |
configService.readiness.periodSeconds | The period seconds of readiness probe | 5 |
configService.config.profiles | specify the spring profiles to activate | github,kubernetes |
configService.config.configServiceUrlOverride | Override apollo.config-service.url: config service url to be accessed by apollo-client | nil |
configService.config.adminServiceUrlOverride | Override apollo.admin-service.url: admin service url to be accessed by apollo-portal | nil |
configService.config.contextPath | specify the context path, e.g. /apollo, then users could access config service via http://{config_service_address}/apollo | nil |
configService.env | Environment variables passed to the container, e.g. JAVA_OPTS: -Xss256k | {} |
configService.strategy | The deployment strategy of apollo-configservice | {} |
configService.resources | The resources definition of apollo-configservice | {} |
configService.nodeSelector | The node selector definition of apollo-configservice | {} |
configService.tolerations | The tolerations definition of apollo-configservice | [] |
configService.affinity | The affinity definition of apollo-configservice | {} |
adminService.fullNameOverride | Override the deployment name for apollo-adminservice | nil |
adminService.replicaCount | Replica count of apollo-adminservice | 2 |
adminService.containerPort | Container port of apollo-adminservice | 8090 |
adminService.image.repository | Image repository of apollo-adminservice | apolloconfig/apollo-adminservice |
adminService.image.tag | Image tag of apollo-adminservice, e.g. 1.8.0, leave it to nil to use the default version | nil |
adminService.image.pullPolicy | Image pull policy of apollo-adminservice | IfNotPresent |
adminService.imagePullSecrets | Image pull secrets of apollo-adminservice | [] |
adminService.service.fullNameOverride | Override the service name for apollo-adminservice | nil |
adminService.service.port | The port for the service of apollo-adminservice | 8090 |
adminService.service.targetPort | The target port for the service of apollo-adminservice | 8090 |
adminService.service.type | The service type of apollo-adminservice | ClusterIP |
adminService.ingress.enabled | Whether to enable the ingress for admin-service or not | false |
adminService.ingress.annotations | The annotations of the ingress for admin-service | {} |
adminService.ingress.hosts.host | The host of the ingress for admin-service | nil |
adminService.ingress.hosts.paths | The paths of the ingress for admin-service | [] |
adminService.ingress.tls | The tls definition of the ingress for admin-service | [] |
adminService.liveness.initialDelaySeconds | The initial delay seconds of liveness probe | 100 |
adminService.liveness.periodSeconds | The period seconds of liveness probe | 10 |
adminService.readiness.initialDelaySeconds | The initial delay seconds of readiness probe | 30 |
adminService.readiness.periodSeconds | The period seconds of readiness probe | 5 |
adminService.config.profiles | specify the spring profiles to activate | github,kubernetes |
adminService.config.contextPath | specify the context path, e.g. /apollo, then users could access admin service via http://{admin_service_address}/apollo | nil |
adminService.env | Environment variables passed to the container, e.g. JAVA_OPTS: -Xss256k | {} |
adminService.strategy | The deployment strategy of apollo-adminservice | {} |
adminService.resources | The resources definition of apollo-adminservice | {} |
adminService.nodeSelector | The node selector definition of apollo-adminservice | {} |
adminService.tolerations | The tolerations definition of apollo-adminservice | [] |
adminService.affinity | The affinity definition of apollo-adminservice | {} |
configdb host1.2.3.4 dbNameApolloConfigDBName userNamesomeUserName passwordsomePassword connectionStringPropertiescharacterEncoding=utf8&useSSL=false service enabledtrueconfigdb hostxxx.mysql.rds.aliyuncs.com dbNameApolloConfigDBName userNamesomeUserName passwordsomePassword connectionStringPropertiescharacterEncoding=utf8&useSSL=false service enabledtrue typeExternalNameconfigdb hostapollodb-mysql.mysql dbNameApolloConfigDBName userNamesomeUserName passwordsomePassword connectionStringPropertiescharacterEncoding=utf8&useSSL=false/config# use /config as root, should specify configService.config.contextPath as /configconfigService config contextPath/config ingress enabledtrue hostspaths/config/adminxxxxxxxxxx# use /admin as root, should specify adminService.config.contextPath as /adminadminService config contextPath/admin ingress enabledtrue hostspaths/adminTo install the apollo-portal chart with the release name apollo-portal:
xxxxxxxxxx$ helm install apollo-portal \ --set portaldb.host=1.2.3.4 \ --set portaldb.userName=apollo \ --set portaldb.password=apollo \ --set portaldb.service.enabled=true \ --set config.envs="dev\,pro" \ --set config.metaServers.dev=http://apollo-service-dev-apollo-configservice:8080 \ --set config.metaServers.pro=http://apollo-service-pro-apollo-configservice:8080 \ --set replicaCount=1 \ -n your-namespace \ apollo/apollo-portalOr customize it with values.yaml
xxxxxxxxxx$ helm install apollo-portal -f values.yaml -n your-namespace apollo/apollo-portal To uninstall/delete the apollo-portal deployment:
xxxxxxxxxx$ helm uninstall -n your-namespace apollo-portalThe following table lists the configurable parameters of the apollo-portal chart and their default values.
| Parameter | Description | Default |
|---|---|---|
fullNameOverride | Override the deployment name for apollo-portal | nil |
replicaCount | Replica count of apollo-portal | 2 |
containerPort | Container port of apollo-portal | 8070 |
image.repository | Image repository of apollo-portal | apolloconfig/apollo-portal |
image.tag | Image tag of apollo-portal, e.g. 1.8.0, leave it to nil to use the default version | nil |
image.pullPolicy | Image pull policy of apollo-portal | IfNotPresent |
imagePullSecrets | Image pull secrets of apollo-portal | [] |
service.fullNameOverride | Override the service name for apollo-portal | nil |
service.port | The port for the service of apollo-portal | 8070 |
service.targetPort | The target port for the service of apollo-portal | 8070 |
service.type | The service type of apollo-portal | ClusterIP |
service.sessionAffinity | The session affinity for the service of apollo-portal | ClientIP |
ingress.enabled | Whether to enable the ingress or not | false |
ingress.annotations | The annotations of the ingress | {} |
ingress.hosts.host | The host of the ingress | nil |
ingress.hosts.paths | The paths of the ingress | [] |
ingress.tls | The tls definition of the ingress | [] |
liveness.initialDelaySeconds | The initial delay seconds of liveness probe | 100 |
liveness.periodSeconds | The period seconds of liveness probe | 10 |
readiness.initialDelaySeconds | The initial delay seconds of readiness probe | 30 |
readiness.periodSeconds | The period seconds of readiness probe | 5 |
env | Environment variables passed to the container, e.g. JAVA_OPTS: -Xss256k | {} |
strategy | The deployment strategy of apollo-portal | {} |
resources | The resources definition of apollo-portal | {} |
nodeSelector | The node selector definition of apollo-portal | {} |
tolerations | The tolerations definition of apollo-portal | [] |
affinity | The affinity definition of apollo-portal | {} |
config.profiles | specify the spring profiles to activate | github,auth |
config.envs | specify the env names, e.g. dev,pro | nil |
config.contextPath | specify the context path, e.g. /apollo, then users could access portal via http://{portal_address}/apollo | nil |
config.metaServers | specify the meta servers, e.g.dev: http://apollo-configservice-dev:8080pro: http://apollo-configservice-pro:8080 | {} |
config.files | specify the extra config files for apollo-portal, e.g. application-ldap.yml | {} |
portaldb.host | The host for apollo portal db | nil |
portaldb.port | The port for apollo portal db | 3306 |
portaldb.dbName | The database name for apollo portal db | ApolloPortalDB |
portaldb.userName | The user name for apollo portal db | nil |
portaldb.password | The password for apollo portal db | nil |
portaldb.connectionStringProperties | The connection string properties for apollo portal db | characterEncoding=utf8 |
portaldb.service.enabled | Whether to create a Kubernetes Service for portaldb.host or not. Set it to true if portaldb.host is an endpoint outside of the kubernetes cluster | false |
portaldb.service.fullNameOverride | Override the service name for apollo portal db | nil |
portaldb.service.port | The port for the service of apollo portal db | 3306 |
portaldb.service.type | The service type of apollo portal db: ClusterIP or ExternalName. If the host is a DNS name, please specify ExternalName as the service type, e.g. xxx.mysql.rds.aliyuncs.com | ClusterIP |
xxxxxxxxxxportaldb host1.2.3.4 dbNameApolloPortalDBName userNamesomeUserName passwordsomePassword connectionStringPropertiescharacterEncoding=utf8&useSSL=false service enabledtruexxxxxxxxxxportaldb hostxxx.mysql.rds.aliyuncs.com dbNameApolloPortalDBName userNamesomeUserName passwordsomePassword connectionStringPropertiescharacterEncoding=utf8&useSSL=false service enabledtrue typeExternalNamexxxxxxxxxxportaldb hostapollodb-mysql.mysql dbNameApolloPortalDBName userNamesomeUserName passwordsomePassword connectionStringPropertiescharacterEncoding=utf8&useSSL=falsexxxxxxxxxxconfig envsdev,pro metaServers devhttp//apollo-service-dev-apollo-configservice8080 prohttp//apollo-service-pro-apollo-configservice8080xxxxxxxxxxservice typeLoadBalancerxxxxxxxxxxingress enabledtrue hostspaths//apollo# use /apollo as root, should specify config.contextPath as /apolloingress enabledtrue hostspaths/apollo
config ... contextPath/apollo ...ingress enabledtrue annotations kubernetes.io/ingress.classnginx nginx.ingress.kubernetes.io/affinity"cookie" nginx.ingress.kubernetes.io/affinity-mode"persistent" nginx.ingress.kubernetes.io/session-cookie-conditional-samesite-none"true" nginx.ingress.kubernetes.io/session-cookie-expires"172800" nginx.ingress.kubernetes.io/session-cookie-max-age"172800" hostshostxxx.somedomain.com # host is required to make session affinity work paths/config ... profilesgithub,ldap ... files application-ldap.yml spring: ldap: base: "dc=example,dc=org" username: "cn=admin,dc=example,dc=org" password: "password" searchFilter: "(uid={0})" urls: - "ldap://xxx.somedomain.com:389"
ldap: mapping: objectClass: "inetOrgPerson" loginId: "uid" userDisplayName: "cn" email: "mail"