AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1074933
Accepted
Adam C
Adam C
Asked: 2021-08-19 06:06:00 +0800 CST2021-08-19 06:06:00 +0800 CST 2021-08-19 06:06:00 +0800 CST

如何将 aws-iam-authenticator 与远程 Terraform Cloud Runs 一起使用?

  • 772

我已经成功地将 Terraform 与Kubernetes 提供商一起使用来管理 AWS 中EKS集群上的各个部分和服务。我想使用Terraform Cloud来管理它(并利用好的 Github/VCS 集成)。但是,kubeconfig我为该集群使用的aws-iam-authenticator二进制文件利用 AWS 凭证(以及因此的 IAM 权限)在 AWS 和集群内通过IRSA进行身份验证和授予权限。

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

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

amazon-web-services kubernetes terraform amazon-iam
  • 1 1 个回答
  • 204 Views

1 个回答

  • Voted
  1. Best Answer
    Adam C
    2021-08-19T06:06:00+08:002021-08-19T06:06:00+08:00

    Terraform Cloud 文档涵盖了这一点,它不是被禁止的,但也不是完全鼓励的。这些文档中提到了 2 种方法,使用local-exec配置程序(其使用被描述为“最后的手段”并且可能存在问题),或使用子模块。文档还提到应该只使用“独立二进制文件”。值得庆幸aws-iam-authenticator的是,它确实可以作为许多系统的静态独立二进制文件使用。不幸的是,除了提到子模块之外,文档并没有涵盖完成这项工作所需的步骤。

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

    首先,我们需要一个兼容的二进制文件,虽然我们不确切知道 Terraform Cloud 实例正在运行什么 OS/Image,但我们从文档中知道它与 Linux x86_64 兼容。因此,由于aws-iam-authenticator它可以作为 Linux x86_64 的独立静态二进制文件使用,我们需要做的是将该二进制文件引入环境中,然后使其对实例普遍可用(因为我们不控制具体如何调用它)。

    Terraform Cloud 允许您操纵环境变量,$PATH一旦我们在主机上拥有二进制文件,我们就可以通过操纵变量来实现这一点。最简单的方法是将二进制文件添加到文件夹内的配置中,但是如果您想将其用于多个配置,而不必在每个配置中单独管理二进制文件(想象必须单独更新它们),我建议将此作为 git 存储库中的子模块。

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

    git submodule add https://github.com/comerford/tc-tools.git
    

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

    启用子模块克隆

    最后,为了确保无论二进制文件如何调用它都能正常工作,您需要对PATH环境变量进行更改,以便它可以看到您的新二进制文件,但也不会破坏任何东西。鉴于上述子模块,这是对我有用的ENV变量:

    Terraform Cloud 上的工作 PATH 变量

    以更可用的格式提供该字符串:

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

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

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

    • 1

相关问题

  • 与 AWS 中的其他系统相比,CentOS 报告的总内存较低

  • 如何在 Amazon Linux 服务器上升级到 Java 1.8?

  • 了解 Amazon AWS 使用数据

  • 亚马逊提供的负载均衡服务体验如何?

  • ELB 中现有节点的 AWS 自动缩放问题

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve