2017-10-05 4 views
0

Ich habe eine Beispielanwendung auf einem Kubernetes-Cluster ausgeführt. Zwei Microservices, einer ist ein Mongodb-Container und der andere ist ein Java-Springboot-Container.Kubernetes auf Spinnaker - Interservice Kommunikation

Der Springboot-Container interagiert mit dem Mongodb-Container durch einen Service und speichert Daten im Mongodb-Container.

Die Spezifikationen sind unten angegeben.

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 

Ich würde gerne wissen, wie diese Kommunikation in Spinnaker erreicht werden kann, da es seine eigenen Etiketten und Selektoren erstellt.

Danke,

Antwort

0

Dies ist, wie es getan werden muss.

Jeder Loadbalancer, der für die Anwendung erstellt wird, ist der Dienst. Wenn ein Loadbalancer mit den Einstellungen für den Knotenport erstellt wurde, sollte der Name des Dienstes für die mongodb-Anwendung zB mongodb-dev lauten. Die Servergruppe für mongodb muss ebenfalls erstellt werden.

Dann, wenn die Mitarbeiter Servergruppe erstellen, müssen Sie für diesen Behälter die Befehle nacheinander in einer separaten Zeile angeben, wie hier erwähnt

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" 

Jetzt, wenn der Mitarbeiter und mongodb pod startet, ist es in der Lage, seine Zuordnung zu bekommen und in der Lage, richtig zu kommunizieren.

Verwandte Themen