Bootstrap AKS агент узлов через терраформ - PullRequest
0 голосов
/ 23 апреля 2019

В настоящее время я использую terraform для создания кластера k8s, который работает отлично. Как только узлы будут подготовлены, я хочу запустить несколько команд bash на любом из узлов. Пока что null_resource выглядит как вариант, так как это кластер, и нам неизвестны имена / IP-адреса узлов. Однако я не могу определить, каким должно быть значение блока connection, поскольку azurerm_kubernetes_cluster не экспортирует IP-адрес балансировщика нагрузки или имена виртуальных машин. Вопросительный знак нуждается в правильном значении ниже:

resource "null_resource" "cluster" {
  triggers = { "${join(",", azurerm_kubernetes_cluster.k8s.id)}" }
  connection = { type = ssh 
                 user = <user>
                 password = <password>
                 host = <?>
                 host_key = <pub_key>
            }
}  

Любая помощь!

Ответы [ 3 ]

0 голосов
/ 23 апреля 2019

Рекомендовал бы просто запустить daemonset, который выполняет команды bash на узлах.Поскольку любые операции масштабирования или обновления будут удалять или не иметь обновленной конфигурации, которую вы выполняете на узлах.

0 голосов
/ 06 мая 2019

Не было прямого решения для этого. Статический IP не был правильным способом сделать это, и поэтому я закончил писать обертку вокруг terraform. Я не хотел запускать свои скрипты инициализации на каждом подходящем узле, но только на одном из узлов. По сути, теперь эта оболочка связывается с terraform, чтобы сначала развернуть только один узел, который выполняет cloud-init. После этого он вызывает функцию масштабирования терраформ и возвращает остальное необходимое количество экземпляров. В скрипте cloud-init у меня есть проверка kubectl get no, где, если я получаю размер как более одного узла, я просто пропускаю команды cloud-init.

0 голосов
/ 23 апреля 2019

AKS не выставляет его узлы в интернет.И вы просто можете подключить узлы через мастер кластера.Если вы хотите запустить несколько команд bash на узлах, вы можете использовать соединение SSH, которое делает модуль в качестве помощника для подключения к узлам, см. Шаги о доступе к узлу SSH .

Кроме того, вы можете добавить правила NAT для узлов в Балансировщике нагрузки, затем вы также можете подключить SSH к узлам через открытый IP Балансировщика нагрузки.Но это не безопасный способ.Поэтому я не предлагаю такой способ.

...