Kubernetes 前后端通信

Kubernetes Front and Back end communication

我在这个问题上苦苦挣扎了几个小时。我有一个非常简单的 2 层 dotnet 核心骨架应用程序(mvc 和 webapi)托管在 Azure 上,使用 Kubernetes 和 Windows 作为编排器。 部署工作正常,我可以传递基本的环境变量。我面临的挑战是我无法确定如何将后端服务 IP 地址传递给前端变量。 如果我暂存部署,我可以手动将后端公开的 IP 传递到前端。理想情况下,这需要作为服务部署。

任何帮助将不胜感激。

部署命令:

1 - kubectl create -f 后端-deploy.yaml

2 - kubectl create -f 后端-service.yaml

3 - kubectl create -f frontend-deploy.yaml

4 - kubectl create -f frontend-service.yaml

后端-deploy.yaml

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: acme
spec:
  replicas: 5
  template:
metadata:
  labels:
    app: acme-app
    tier: backend
spec:
  containers:
    - name: backend-container
      image: "some/image"
  imagePullSecrets:
    - name: supersecretkey
      env:
      - name: Config__AppName
        value: "Acme App"
      - name: Config__AppDescription
        value: "Just a backend application"
      - name: Config__AppVersion
        value: "1.0"
      - name: Config__CompanyName
        value: "Acme Trading Limited"

后端-service.yaml

kind: Service
apiVersion: v1
metadata:
  name: acme-app
spec:
  selector:
    app: acme-app
    tier: backend
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  type: LoadBalancer

前端-deploy.yaml

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: frontend
spec:
  replicas: 2
  template:
    metadata:
      labels:
        app: acme-app
        tier: frontend
    spec:
      containers:
        - name: frontend-container
          image: "some/image"
      imagePullSecrets:
        - name: supersecretkey
          env:
          - name: Config__AppName
            value: "Acme App"
          - name: Config__AppDescription
            value: "Just a frontend application"
          - name: Config__AppVersion
            value: "1.0"
          - name: Config__AppTheme
            value: "fx-theme-black"
          - name: Config__ApiUri
            value: ***THIS IS WHERE I NEED THE BACKEND SERVICE IP***
          - name: Config__CompanyName
            value: "Acme Trading Limited"

前端-service.yaml

kind: Service
apiVersion: v1
metadata:
  name: frontend
spec:
  selector:
    app: acme
    tier: frontend
  ports:
    - protocol: "TCP"
      port: 80
      targetPort: 80
  type: LoadBalancer

如果您的后端服务是在前端 pods 之前创建的,您应该在 pods.

中包含环境变量 ACME_APP_SERVICE_HOSTACME_APP_SEVICE_PORT

如果您的后端服务是在前端 pods 之后创建的,则删除 pods 并等待它们重新启动。新的 pods 应该有这些变量。

要检查环境变量,请执行以下操作:

$ kubectl exec podName env