Не уверен, что ответ @DT сработает, документации для этой функции нет.
Также я провел несколько тестов, и приведенный ниже пример не работает для меня:
spec:
containers:
- name: mycontainer
image: myimage
env:
- name: TOKEN
value: '12345'
livenessProbe:
httpGet:
path: /v1/health
port: 80
httpHeaders:
- name: Authorization
value: Apikey $TOKEN
I ' Я получаю 401 для моего приложения, потому что оно не может заменить переменную env значением заголовка. Я даже пробовал много других опций с одинарными / двойными кавычками, с квадратными скобками, но ни один из них не работал.
В противном случае вы можете использовать exec
вместо httpGet
, но для этого требуется, чтобы в вашем * была установлена curl. 1024 * image.
spec:
containers:
- name: mycontainer
image: myimage
env:
- name: TOKEN
value: '12345'
livenessProbe:
exec:
command:
- bash
- -c
- 'curl --fail http://localhost/v1/health --header "Authorization: Apikey $TOKEN"'
initialDelaySeconds: 30
periodSeconds: 15
Если вы хотите использовать valueFrom
из своего секрета, вам не нужно декодировать переменную внутри контейнера. Я буду уже декодирован.
Если вы не можете добавить пакет curl в ваше изображение, лучше подумайте о написании собственного скрипта на основе языка, разработанного вашим приложением. Вот пример для js: https://blog.sixeyed.com/docker-healthchecks-why-not-to-use-curl-or-iwr/
Также проверьте этот вопрос, есть аналогичный ответ Как использовать аутентификацию basi c в тесте живучести HTTP в Kubernetes