У меня есть развертывание Kubernetes со спецификацией ниже, которая устанавливается через helm 3.
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
в качестве значения руля, которое является общедоступным IP-адресом модуля nginx-ingress
, который я развертываю с помощью другой диаграммы руля. Я устанавливаю вышеуказанное развертывание, как показано ниже:
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 install
я хочу иметь одну установку helm3, в которой должны быть созданы как развертывание nginx-ingress, так и развертывание привратника.
Я понимаю, что в initContainer
из my-gatekeeper-image
мы можем получить IP-адрес nginx-ingress, но я не могу понять, как установить его в качестве переменной среды или передать в спецификацию контейнера.
Есть несколько вопросов о stackoverflow, в которых упоминается, что мы можем создать постоянный том или секрет для достижения этой цели, но я не уверен, как это будет работать, если нам придется их удалить. Я не хочу создавать никаких дополнительных объектов и поддерживать их жизненный цикл.