Spinnaker 上的 Kubernetes - 服务间通信
Kubernetes on Spinnaker - Interservice communication
我在 Kubernetes 集群上有一个示例应用程序 运行。两个微服务,一个是mongodb容器,一个是javaspringboot容器。
springboot 容器通过服务与 mongodb 容器交互,并将数据存储到 mongodb 容器中。
规格如下。
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: empappdepl
labels:
name: empapp
spec:
replicas: 1
template:
metadata:
labels:
name: empapp
spec:
containers:
-
resources:
limits:
cpu: 0.5
image: 11.168.xx.xx:5000/employee:latest
imagePullPolicy: IfNotPresent
name: wsemp
ports:
- containerPort: 8080
name: wsemp
command: ["java","-Dspring.data.mongodb.uri=mongodb://mongoservice/microservices", "-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
imagePullSecrets:
- name: myregistrykey
---
apiVersion: v1
kind: Service
metadata:
labels:
name: empwhatever
name: empservice
spec:
ports:
- port: 8080
nodePort: 30062
type: NodePort
selector:
name: empapp
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: mongodbdepl
labels:
name: mongodb
spec:
replicas: 1
template:
metadata:
labels:
name: mongodb
spec:
containers:
- resources:
limits:
cpu: 1
image: mongo
imagePullPolicy: IfNotPresent
name: mongodb
ports:
- containerPort: 27017
---
apiVersion: v1
kind: Service
metadata:
labels:
name: mongowhatever
name: mongoservice
spec:
ports:
- port: 27017
targetPort: 27017
protocol: TCP
type: NodePort
selector:
name: mongodb
我想知道如何在 spinnaker 中完成这种通信,因为它创建了自己的标签和选择器。
谢谢,
这就是需要完成的方式。
为应用程序创建的每个负载均衡器都是服务。因此,对于 mongodb 应用程序,在使用节点端口设置创建负载均衡器后,获取服务名称,例如:mongodb-dev。 mongodb 的服务器组也需要创建。
然后在创建员工服务器组时,您需要在单独的一行中为该容器逐行指定命令,如此处所述
https://github.com/spinnaker/spinnaker/issues/2021#issuecomment-334885467
"java","-Dspring.data.mongodb.uri=mongodb://name-of-mongodb-service/microservices", "-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"
现在,当员工和 mongodb pod 启动时,它能够获取其映射并能够正常通信。
我在 Kubernetes 集群上有一个示例应用程序 运行。两个微服务,一个是mongodb容器,一个是javaspringboot容器。
springboot 容器通过服务与 mongodb 容器交互,并将数据存储到 mongodb 容器中。
规格如下。
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: empappdepl
labels:
name: empapp
spec:
replicas: 1
template:
metadata:
labels:
name: empapp
spec:
containers:
-
resources:
limits:
cpu: 0.5
image: 11.168.xx.xx:5000/employee:latest
imagePullPolicy: IfNotPresent
name: wsemp
ports:
- containerPort: 8080
name: wsemp
command: ["java","-Dspring.data.mongodb.uri=mongodb://mongoservice/microservices", "-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
imagePullSecrets:
- name: myregistrykey
---
apiVersion: v1
kind: Service
metadata:
labels:
name: empwhatever
name: empservice
spec:
ports:
- port: 8080
nodePort: 30062
type: NodePort
selector:
name: empapp
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: mongodbdepl
labels:
name: mongodb
spec:
replicas: 1
template:
metadata:
labels:
name: mongodb
spec:
containers:
- resources:
limits:
cpu: 1
image: mongo
imagePullPolicy: IfNotPresent
name: mongodb
ports:
- containerPort: 27017
---
apiVersion: v1
kind: Service
metadata:
labels:
name: mongowhatever
name: mongoservice
spec:
ports:
- port: 27017
targetPort: 27017
protocol: TCP
type: NodePort
selector:
name: mongodb
我想知道如何在 spinnaker 中完成这种通信,因为它创建了自己的标签和选择器。
谢谢,
这就是需要完成的方式。
为应用程序创建的每个负载均衡器都是服务。因此,对于 mongodb 应用程序,在使用节点端口设置创建负载均衡器后,获取服务名称,例如:mongodb-dev。 mongodb 的服务器组也需要创建。
然后在创建员工服务器组时,您需要在单独的一行中为该容器逐行指定命令,如此处所述
https://github.com/spinnaker/spinnaker/issues/2021#issuecomment-334885467
"java","-Dspring.data.mongodb.uri=mongodb://name-of-mongodb-service/microservices", "-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"
现在,当员工和 mongodb pod 启动时,它能够获取其映射并能够正常通信。