docker,k8s部署Apollo
因为楼主更改了apollo源码,所以需要重新打包,然后在制作镜像。
1.docker部署Apollo
1. 打包
可以参考上文。
2.制作镜像
1.获取zip包
分别获取打包之后zip包,在/apollo-portal/target/,apollo-adminservice/target/,apollo-configservice/target/中。
2.获取dockerflie
分别在apollo-portal,apollo-adminservice,apollo-configservice中获取dockerflie。
3.将以上两个文件分别放于任意文件夹中并分别执行
docker build -t apollo-portal .
docker build -t apollo-adminservice .
docker build -t apollo-configservice .
- 1
- 2
- 3
3.运行容器
在虚拟机中执行以下命令即可。
adminconfig
docker run -d -p 8090:8090 --net=host -e SPRING_DATASOURCE_URL="jdbc:postgresql://ip:5432/apolloconfig?characterEncoding=utf8" -e SPRING_DATASOURCE_USERNAME=apolloconfig -e SPRING_DATASOURCE_PASSWORD=123 -d -v /tmp/logs:/opt/logs --name apollo-adminservice apollo-adminservice
SPRING_DATASOURCE_URL: 对应环境ApolloConfigDB的地址
SPRING_DATASOURCE_USERNAME: 对应环境ApolloConfigDB的用户名
SPRING_DATASOURCE_PASSWORD: 对应环境ApolloConfigDB的密码
--name apollo-adminservice apollo-adminservice:为镜像同名 下面同理
apollo-configservice
docker run -p 8080:8080 --net=host -e SPRING_DATASOURCE_URL="jdbc:postgresql://ip:5432/apolloconfig?characterEncoding=utf8" -e SPRING_DATASOURCE_USERNAME=apolloconfig -e SPRING_DATASOURCE_PASSWORD=123 -d -v /tmp/logs:/opt/logs --name apollo-configservice apollo-configservice
SPRING_DATASOURCE_URL: 对应环境ApolloConfigDB的地址
SPRING_DATASOURCE_USERNAME: 对应环境ApolloConfigDB的用户名
SPRING_DATASOURCE_PASSWORD: 对应环境ApolloConfigDB的密码
apollo-portal
docker run -p 8070:8070 --net=host -e SPRING_DATASOURCE_URL="jdbc:postgresql://ip:5432/apolloportal" -e SPRING_DATASOURCE_USERNAME=apolloportal -e SPRING_DATASOURCE_PASSWORD=123 -e APOLLO_PORTAL_ENVS=dev -e DEV_META=http://localhost:8080 -d -v /tmp/logs:/opt/logs --name apollo-portal apollo-portal
SPRING_DATASOURCE_URL: 对应环境ApolloPortalDB的地址
SPRING_DATASOURCE_USERNAME: 对应环境ApolloPortalDB的用户名
SPRING_DATASOURCE_PASSWORD: 对应环境ApolloPortalDB的密码
APOLLO_PORTAL_ENVS(可选): 对应ApolloPortalDB中的apollo.portal.envs配置项,如果没有在数据库中配置的话,可以通过此环境参数配置
DEV_META/PRO_META(可选): 配置对应环境的Meta Service地址,以${ENV}_META命名,需要注意的是如果配置了ApolloPortalDB中的apollo.portal.meta.servers配置,则以apollo.portal.meta.servers中的配置为准
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
如没有定制数据库需求,可以参考官方文档
https://github.com/ctripcorp/apollo/wiki/%E5%88%86%E5%B8%83%E5%BC%8F%E9%83%A8%E7%BD%B2%E6%8C%87%E5%8D%97#2-apolloportalmetaservers—%E5%90%84%E7%8E%AF%E5%A2%83meta-service%E5%88%97%E8%A1%A8
2.k8s部署Apollo
书接上文 楼主定制了oracle版本的apollo,那么怎么使用k8s部署呢,本文只部署dev环境,使用yaml文件在Kubernetes-dashboard部署。
如果有对Kubernetes-dashboard不熟悉的,可以参考k8s专栏 。
1.部署apollo-admin
---
apiVersion: v1
kind: ConfigMap
metadata:
namespace: apollo #更改自己的namespace
name: configmap-apollo-admin-server
data:
application-github.properties: |
spring.datasource.url = jdbc:postgresql://ip:5432/apolloconfig?characterEncoding=utf8
spring.datasource.username = apolloconfig
spring.datasource.password = 123
eureka.service.url = ip:5001/eureka
---
apiVersion: v1
kind: Service
metadata:
namespace: apollo
name: service-apollo-admin-server
labels:
app: service-apollo-admin-server
spec:
ports:
- protocol: TCP
port: 8090
nodePort: 8090
selector:
app: pod-apollo-admin-server
type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: apollo
name: deployment-apollo-admin-server
labels:
app: deployment-apollo-admin-server
spec:
replicas: 1
selector:
matchLabels:
app: pod-apollo-admin-server
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
type: RollingUpdate
template:
metadata:
labels:
app: pod-apollo-admin-server
spec:
volumes:
- name: volume-configmap-apollo-admin-server
configMap:
name: configmap-apollo-admin-server
items:
- key: application-github.properties
path: application-github.properties
containers:
- image: ip:9000/apollo/apollo-adminservice:latest #镜像地址 楼主这里使用了私人仓库
securityContext:
privileged: true
imagePullPolicy: IfNotPresent
name: container-apollo-admin-server
ports:
- protocol: TCP
containerPort: 8090
volumeMounts:
- name: volume-configmap-apollo-admin-server
mountPath: /apollo-admin-server/config/application-github.properties
subPath: application-github.properties
env:
- name: APOLLO_ADMIN_SERVICE_NAME
value: "service-apollo-admin-server.sre"
readinessProbe:
tcpSocket:
port: 8090
initialDelaySeconds: 10
periodSeconds: 5
livenessProbe:
tcpSocket:
port: 8090
initialDelaySeconds: 120
periodSeconds: 10
dnsPolicy: ClusterFirst
restartPolicy: Always
nodeName: apollo #指定的nodes节点
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
2.部署apollo-config
---
kind: ConfigMap
apiVersion: v1
metadata:
namespace: apollo #更改自己的namespace
name: configmap-apollo-config-server
data:
application-github.properties: |
spring.datasource.url = jdbc:postgresql://ip:5432/apolloconfig?characterEncoding=utf8
spring.datasource.username = apolloconfig
spring.datasource.password = 123
eureka.service.url = ip:5001/eureka
---
kind: Service
apiVersion: v1
metadata:
namespace: apollo
name: service-apollo-meta-server
labels:
app: service-apollo-meta-server
spec:
ports:
- protocol: TCP
port: 8080
targetPort: 8080
selector:
app: pod-apollo-config-server
type: ClusterIP
clusterIP: None
sessionAffinity: ClientIP
---
kind: Service
apiVersion: v1
metadata:
namespace: apollo
name: service-apollo-config-server
labels:
app: service-apollo-config-server
spec:
ports:
- protocol: TCP
port: 8080
targetPort: 8080
nodePort: 8080
selector:
app: pod-apollo-config-server
type: NodePort
sessionAffinity: ClientIP
---
kind: StatefulSet
apiVersion: apps/v1
metadata:
namespace: apollo
name: statefulset-apollo-config-server
labels:
app: statefulset-apollo-config-server
spec:
serviceName: service-apollo-meta-server
replicas: 1
selector:
matchLabels:
app: pod-apollo-config-server
updateStrategy:
type: RollingUpdate
template:
metadata:
labels:
app: pod-apollo-config-server
spec:
volumes:
- name: volume-configmap-apollo-config-server
configMap:
name: configmap-apollo-config-server
items:
- key: application-github.properties
path: application-github.properties
containers:
- image: ip:9000/apollo/apollo-configservice:latest #私人仓库
securityContext:
privileged: true
imagePullPolicy: IfNotPresent
name: container-apollo-config-server
ports:
- protocol: TCP
containerPort: 8080
volumeMounts:
- name: volume-configmap-apollo-config-server
mountPath: /apollo-config-server/config/application-github.properties
subPath: application-github.properties
env:
- name: APOLLO_CONFIG_SERVICE_NAME
value: "service-apollo-config-server.sre"
readinessProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 10
periodSeconds: 5
livenessProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 120
periodSeconds: 10
dnsPolicy: ClusterFirst
restartPolicy: Always
nodeName: apollo #nodes节点名称
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
3.apollo-portal
---
kind: ConfigMap
apiVersion: v1
metadata:
namespace: apollo
name: configmap-apollo-portal-server
data:
application-github.properties: |
spring.datasource.url = jdbc:postgresql://ip:5432/apolloportal
spring.datasource.username = apolloportal
spring.datasource.password = 123
apollo-env.properties: |
dev.meta=http://ip:8080 #上文的apollo-config 切记不用写localhost
---
kind: Service
apiVersion: v1
metadata:
namespace: apollo
name: service-apollo-portal-server
labels:
app: service-apollo-portal-server
spec:
ports:
- protocol: TCP
port: 8070
targetPort: 8070
nodePort: 8070
selector:
app: pod-apollo-portal-server
type: NodePort
sessionAffinity: ClientIP
---
kind: Deployment
apiVersion: apps/v1
metadata:
namespace: apollo
name: deployment-apollo-portal-server
labels:
app: deployment-apollo-portal-server
spec:
replicas: 1
selector:
matchLabels:
app: pod-apollo-portal-server
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
type: RollingUpdate
template:
metadata:
labels:
app: pod-apollo-portal-server
spec:
volumes:
- name: volume-configmap-apollo-portal-server
configMap:
name: configmap-apollo-portal-server
items:
- key: application-github.properties
path: application-github.properties
- key: apollo-env.properties
path: apollo-env.properties
containers:
- image: ip:9000/apollo/apollo-portal:latest #私人仓库
securityContext:
privileged: true
imagePullPolicy: IfNotPresent
name: container-apollo-portal-server
ports:
- protocol: TCP
containerPort: 8070
volumeMounts:
- name: volume-configmap-apollo-portal-server
mountPath: /apollo-portal-server/config/application-github.properties
subPath: application-github.properties
- name: volume-configmap-apollo-portal-server
mountPath: /apollo-portal-server/config/apollo-env.properties
subPath: apollo-env.properties
env:
- name: APOLLO_PORTAL_SERVICE_NAME
value: "service-apollo-portal-server.sre"
readinessProbe:
tcpSocket:
port: 8070
initialDelaySeconds: 10
periodSeconds: 5
livenessProbe:
tcpSocket:
port: 8070
initialDelaySeconds: 120
periodSeconds: 15
dnsPolicy: ClusterFirst
restartPolicy: Always
nodeName: apollo #nodes地址
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
注意:以上yaml 一定注意格式,比如空行,空格,注释,能去掉一定去掉,否则会报各种错误。
注意 ,以下apollo-portal.zip中的配置也需要修改(否则一直会访问localhost)
文章来源: baocl.blog.csdn.net,作者:小黄鸡1992,版权归原作者所有,如需转载,请联系作者。
原文链接:baocl.blog.csdn.net/article/details/121125681
- 点赞
- 收藏
- 关注作者
评论(0)