【发布时间】:2020-04-17 12:51:53
【问题描述】:
我有一个通过 helm 3 安装的具有以下规范的 kubernetes 部署。
apiVersion: apps/v1
kind: Deployment
metadata:
name: gatekeeper
spec:
replicas: 1
template:
spec:
containers:
- name: gatekeeper
image: my-gatekeeper-image:some-sha
args:
- --listen=0.0.0.0:80
- --client-id=gk-client
- --discovery-url={{ .Values.discoveryUrl }}
我需要将 discoveryUrl 值作为 helm 值传递,这是我通过不同的 helm 图表部署的 nginx-ingress pod 的公共 IP 地址。我安装上述部署如下:
helm3 install my-nginx-ingress-chart
INGRESS_IP=$(kubectl get svc -lapp=nginx-ingress -o=jsonpath='{.items[].status.loadBalancer.ingress[].ip}')
helm3 install my-gatekeeper-chart --set discovery_url=${INGRESS_IP}
这很好用,但是,现在我想要一个单独的 helm3 安装,而不是这两个 helm3 install,应该在其中创建 nginx-ingress 和网关守卫部署。
我知道在my-gatekeeper-image 的initContainer 中,我们可以获得 nginx-ingress ip 地址,但我无法理解如何将其设置为环境变量或传递给容器规范。
有一些 stackoverflow 问题提到我们可以创建一个持久卷或密钥来实现这一点,但我不确定如果我们必须删除它们会如何工作。我不想创建任何额外的对象并维护它们的生命周期。
【问题讨论】:
标签: kubernetes kubernetes-helm