docker,k8s部署Apollo

网友投稿 762 2022-05-30

因为楼主更改了apollo源码,所以需要重新打包,然后在制作镜像。

1.docker部署Apollo

1. 打包

可以参考上文。

2.制作镜像

分别获取打包之后zip包,在/apollo-portal/target/,apollo-adminservice/target/,apollo-configservice/target/中。

分别在apollo-portal,apollo-adminservice,apollo-configservice中获取dockerflie。

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

docker,k8s部署Apollo

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)

Docker 容器

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:数据库的简单建模
下一篇:测试用例(包含测经典试点全集图解,强烈建议保存收藏)
相关文章