В настоящее время я использую спецификацию Kubernetes Deployment.yaml
для развертывания службы. Спецификация включает дословную ссылку на конкретный IP-адрес (помечен как <static-ip-address>
показано ниже):
spec:
type: LoadBalancer
loadBalancerIP: <static-ip-address>
Я обеспокоен передачей информации, такой как пароли или IP-адреса, в удаленные репозитории Git. Можно ли избежать этого, например, используя переменные среды, например, со спецификацией развертывания и фактическим развертыванием примерно следующим образом:
spec:
type: LoadBalancer
loadBalancerIP: ${SERVICE_ADDRESS}
и
export SERVICE_ADDRESS=<static-ip-address>
kubectl create -f Deployment.yaml
Очевидно, этот специфический синтаксис еще не работает. Но возможно ли что-то подобное, и если да, то как?
Я бы предпочел не полагаться на отдельный инструмент обеспечения . Секретные секреты ConfigMap
кажутся многообещающими, но, очевидно, они не могут быть использованы таким образом, который подходит для этой цели. Если бы я мог напрямую ссылаться на статический IP-адрес, который был определен с gcloud compute addresses create service-address
этим, было бы лучше.
envsubst
. не знал об этом до сих порsed
. По вашему определению, предлагаемое решениеsed
также не будет проще / чище, так какsed
по умолчанию на компьютерах с Windows не установлено.Было еще приятно простое решение: у меня есть Google Compute Адрес
my-address
определен, и я могу по- видимому , использовать его в спецификации сервиса , как так:loadBalancerIP: my-address
.При этом в качестве «внешнего» источника для IP-адресов и секретов для паролей больше не требуется инструмент обеспечения (или шаблоны) для моего простого варианта использования (в среде GKE).
ОБЕСПЕЧИВАЙТЕ СЕЙЧАС: Я решил использовать своего рода инструмент обеспечения, а именно «встроенный»
sed
, в конце концов.My
Deployment.yaml
теперь содержит «переменную шаблона», например, ви я развертываю службу с, скажем, 1.2.3.4 в качестве внешнего IP-адреса с
источник
Вы можете написать простой препроцессор для подстановки переменных в ваших файлах yaml (или вы можете использовать jsonnet, чтобы выполнить то же самое в файлах конфигурации json).
Существует некоторая дискуссия о добавлении шаблонов непосредственно в конфигурацию Kubernetes, но она еще не реализована и не доступна.
источник
Пока шаблоны не доступны, самый простой способ сделать это - запустить задание, которое использует API Kubernetes для обновления службы. Короткий сценарий оболочки в альпийском изображении в сочетании с секретом (содержащим IP-адрес) и картой конфигурации (содержащей шаблон) должен быть достаточно простым. Сложным является правильное использование функций аутентификации и авторизации на сервере.
/programming/30690186/how-do-i-access-the-kubernetes-api-from-within-a-pod-container приводит пример доступа к API. Очевидно, что вы захотите поместить POST в / api / v1 / namespaces / default / services вместо GET в этом примере.
источник