首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在远程Terraform运行中使用aws身份验证器?

如何在远程Terraform运行中使用aws身份验证器?
EN

Server Fault用户
提问于 2021-08-18 14:06:00
回答 1查看 254关注 0票数 0

我已经成功地在Kubernetes供应商中使用Terraform来管理AWS中艾克斯集群的各个部分和服务。我想使用地形云来管理它(并利用好的Github/VCS集成)。但是,我为该集群所拥有的kubeconfig使用aws-iam-authenticator二进制文件来利用AWS凭据(以及由此而来的IAM权限)对AWS中和集群内的权限进行身份验证和通过IRSA授予权限。

Terraform实例没有安装aws-iam-authenticator二进制文件,因此尽管它们具有正确的AWS凭据,但无法利用这些凭据进行身份验证并与EKS集群连接。

使用常规(非云) Terraform没有这个问题,您只需确保运行plan/apply的机器具有二进制和凭据,并且它“只工作”,我如何才能使Terraform以同样的方式工作?

EN

回答 1

Server Fault用户

回答已采纳

发布于 2021-08-18 14:06:00

地形云文档涵盖了这一点,这并不是被禁止的,但也不完全是鼓励的。在这些文档中提到了两个方法,使用local-exec提供程序(它的使用被描述为“最后的手段”,并且可能有问题),或者使用子模。文档还提到,应该只使用“独立的二进制文件”。谢天谢地,对于许多系统来说,aws-iam-authenticator确实是一个静态的独立二进制文件。不幸的是,除了提到子模块之外,文档并没有涵盖完成这项工作所需的步骤。

希望Hashicorp将来能提供一种更少的恶意和更受支持的方式来定制这些环境,但在那之前.

首先,我们需要一个兼容的二进制文件,虽然我们不知道Terraform实例运行的是什么操作系统/映像,但是我们从文献资料中知道它是Linux x86_64兼容的。因此,由于aws-iam-authenticator作为一个独立的静态二进制文件提供给Linux x86_64,所以我们需要做的是将该二进制文件引入环境中,然后通常将它提供给实例(因为我们并不控制它的具体调用方式)。

Terraform允许您操作环境变量,一旦主机上有二进制文件,我们就可以通过操作$PATH变量来实现这一点。最简单的方法是将二进制文件添加到文件夹中的配置中,但是如果您希望将二进制文件用于多个信任项,而不必分别管理二进制文件(假设必须分别更新二进制文件),我建议将其作为git存储库中的子模块进行处理。

下面是一个包含二进制文件的公共回购的示例,您可以将它作为子模块添加到回购中,如下所示:

代码语言:javascript
运行
复制
git submodule add https://github.com/comerford/tc-tools.git

然后可以像往常一样提交/推送,确保您的工作区的版本控制设置设置为克隆子模块,如下所示:

最后,为了确保无论如何调用二进制文件,都需要对PATH环境变量进行更改,以便它能够看到新的二进制文件,但也不会破坏任何内容。考虑到上面的子模块,下面是为我工作的ENV变量:

要以更可用的格式提供该字符串,请执行以下操作:

代码语言:javascript
运行
复制
"~/tc-tools:/home/terraform/tc-tools:./tc-tools:/usr/bin:/usr/local/bin:/bin:$PATH"

它正在猜测可能的路径,而且我不能100%确定哪一条有效,因为我不想为了几个字符而导致中断运行。

虽然这是专门针对aws-iam-authenticator二进制文件的,但是对于您碰巧需要的任何这样的Linux x86_64静态二进制文件,它都应该是一个通用的方法。

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1074933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档