Рейтинг:0

Как использовать aws-iam-authenticator с удаленными запусками Terraform Cloud?

флаг us

Я уже успешно использую Terraform с Кубернетес-провайдер управлять различными частями и службами на ЭКС кластер в AWS. я хотел бы использовать Облако Terraform чтобы управлять им (и воспользоваться преимуществами хорошей интеграции Github/VCS). Однако kubeconfig что у меня есть для этого кластера использует aws-iam-аутентификатор двоичный файл для использования учетных данных AWS (и, следовательно, разрешений IAM) для аутентификации и предоставления разрешений как в AWS, так и в кластере через IRSA.

Экземпляры Terraform Cloud не имеют aws-iam-аутентификатор двоичный файл и, следовательно, хотя у них есть правильные учетные данные AWS, они не могут использовать их для аутентификации и подключения к кластеру EKS.

Использование обычного (не облачного) Terraform не имеет этой проблемы, вы просто убедитесь, что машина, на которой вы работаете, планировать/применять from имеет двоичный файл и учетные данные, и он «просто работает», как я могу заставить Terraform Cloud работать так же?

Рейтинг:1
флаг us

Документы Terraform Cloud прикрыть это, и это не запрещено, но и не то чтобы поощряется. В этих документах упоминаются 2 метода с использованием местный исполнитель поставщика (использование которого описывается как «последнее средство» и потенциально проблематично) или с помощью подмодуль. В документах также упоминается, что следует использовать только «автономные двоичные файлы». к счастью aws-iam-аутентификатор действительно доступен как статический автономный двоичный файл для многих систем. К сожалению, документация, кроме упоминания подмодулей, не описывает шаги, необходимые для того, чтобы это работало.

Надеемся, что в будущем Hashicorp предоставит менее хакерский и более поддерживаемый способ настройки этих сред, но до тех пор...

Во-первых, нам нужен совместимый двоичный файл, и хотя мы точно не знаем, какая ОС/образ запускается экземплярами Terraform Cloud, мы знаем из документация что он совместим с Linux x86_64. Следовательно, поскольку aws-iam-аутентификатор доступен как отдельный статический двоичный файл для Linux x86_64, нам нужно ввести этот двоичный файл в среду, а затем сделать его доступным для экземпляра в целом (поскольку мы не контролируем, как именно он вызывается).

Terraform Cloud позволяет вам манипулировать переменными среды, мы можем добиться этого, манипулируя $ПУТЬ переменная, как только у нас будет двоичный файл на хосте. Самый простой способ сделать это — просто добавить двоичный файл в конфигурацию внутри папки, однако, если вы хотите использовать это для нескольких конфигураций без необходимости управлять двоичным файлом отдельно в каждой (представьте, что вам нужно обновлять их все по отдельности), Я бы рекомендовал сделать это как подмодуль в вашем репозитории git.

Вот пример публичное репо, содержащее бинарный файл, вы должны добавить это в свой репозиторий в качестве подмодуля следующим образом:

подмодуль git добавить https://github.com/comerford/tc-tools.git

Затем вы можете зафиксировать/отправить, как обычно, убедившись, что ваши настройки управления версиями для вашего рабочего пространства настроены на клонирование подмодулей, как показано ниже:

клонирование подмодуля включено

Наконец, чтобы убедиться, что независимо от того, как называется бинарный файл, он работает, необходимо внести изменения в ДОРОЖКА переменная окружения, чтобы она увидела ваш новый бинарник, но при этом ничего не сломала. Вот ENV переменная, которая работала для меня с учетом вышеуказанного подмодуля:

Рабочая переменная PATH в Terraform Cloud

Чтобы дать эту строку в более удобном формате:

"~/tc-tools:/home/terraform/tc-tools:./tc-tools:/usr/bin:/usr/local/bin:/bin:$PATH"

Это предположение о вероятных путях, и я не уверен на 100%, какой из них работает, потому что я не хотел вызывать прерывание выполнения ради нескольких символов.

Хотя это специально для aws-iam-аутентификатор двоичный, он должен работать как общий метод для любого статического двоичного файла Linux x86_64, который вам понадобится.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.