如何在Kubernetes中传递动态环境变量

如何在Kubernetes中传递动态环境变量,kubernetes,environment-variables,kubernetes-pod,Kubernetes,Environment Variables,Kubernetes Pod,我有两个副本状态集,我想传递另一个pod的健康URL(我的意思是在replica1中我想知道replica2的健康URL,反之亦然),我做了如下操作 apiVersion: apps/v1 kind: StatefulSet metadata: name: dapi labels: app: dapi spec: serviceName: dapi selector: matchLabels: app: dapi template: met

我有两个副本状态集,我想传递另一个pod的健康URL(我的意思是在replica1中我想知道replica2的健康URL,反之亦然),我做了如下操作

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: dapi
  labels:
    app: dapi
spec:
  serviceName: dapi
  selector:
    matchLabels:
      app: dapi
  template:
    metadata:
      labels:
        app: dapi
    spec:
      containers:
        - name: test-container
          image: busybox:latest
          imagePullPolicy: IfNotPresent
          command: [ "sh", "-c"]
          args:
          - while true; do
              echo -en '\n';
              printenv MY_POD_NAME MASTER_HEALTH_URL;
              sleep 10;
            done;
          env:
            - name: MY_POD_NAME
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
            - name: MASTER_HEALTH_URL
              value: "http://$(MY_POD_NAME).dapi:8181/health/readiness"
在上面的代码中,我能够传递pod名称,作为它的设置,所以它具有可预测的pod名称,所以我尝试跟踪它,但它不起作用

value: "http://$(for i in 0 1; do echo dapi-$i;done | grep -v $MY_POD_NAME).dapi:8181/health/readiness"
因此,上面的方法不起作用,有没有任何方法可以传递这种动态行为


PS:以上是示例清单,对于实际应用,我无法控制entrypoint.sh,因此无法超越它。

您是否尝试或考虑在您的用例中使用Helm或Kustomize?@WytrzymałyWiktor还没有,但它将如何支持我?由于Helm/Kustomize最终将为URL创建清单和价值,假设在应用清单/创建pod时确定。很抱歉,响应太晚。当您尝试使用不起作用的值时,是否可以检查Pod中运行的容器的日志?那里的依赖环境变量值是什么?它不是计算字符串,只是将值显示为http://$(对于0 1中的i;do echo dapi-$i;done | grep-v$MY_POD_NAME)。dapi:8181/health/ready“单独使用脚本时是否有效?