管理身份验证协议通常是一项繁重的任务,需要管理员去维护可接受用户的列表、持续验证每个用户的权限、删除不需要访问权限的用户,甚至定期对令牌和基于证书的访问权限进行回收再利用。需要管理的系统越多,这些任务就越复杂。正因如此,Amazon 合作伙伴网络中的 AWS 合作伙伴 Heptio 与 AWS 联手开发了 AWS IAM Authenticator,它支持您使用 AWS Identity and Access Management (IAM) 进行联合身份验证。
开始使用
要开始使用,您需要一个 Kubernetes 集群,使之启动并运行的最简单方法是使用 kops。首先,安装 kops 二进制文件(kops 文档对各种安装选项进行了解释说明)。如果您使用的是 macOS,可以运行以下命令:
安装完毕后,请运行以下命令进行验证:
此外,您还需要 Kubernetes 命令行工具 kubectl;您同样可以使用 Homebrew 进行安装:
接下来,您需要一个具有以下权限的 IAM 用户:
或者,您可以创建一个新的 IAM 用户,并按照设置 [kops] 环境中的说明附加策略。
您需要安装的最后一个依赖项是 aws-iam-authenticator。目前,最简单的安装方法是使用 go get,前提是已在您的计算机上安装 Golang。如果尚未安装,请按照适用于您的操作系统的 Go 安装说明执行操作。安装 Golang 后,便可安装 Authenticator:
请通过尝试运行二进制文件确保 aws-iam-authenticator 位于您的 $PATH 中:
如果此操作失败,并显示 -bash: aws-iam-authenticator: command not found,则需要 export 包含 $GOPATH/bin 目录的 PATH(否则,继续执行下面的创建集群操作):
创建集群
现在,您已经安装所有依赖项,让我们为您的 kops 集群创建一个支架。只需运行一个命令即可:
如果您想将集群部署其他区域中(而非 us-west-1),请确保将 --zones 密钥更改为您所在区域的可用区。
这些命令将创建可用于存储桶和集群的随机 $NAME,创建用于存储集群状态的 Amazon S3 存储桶,并将集群清单写入存储桶。
现在,您已拥有集群清单,可以对其进行修改以自动部署 aws-iam-authenticator。为此,您需要运行 kops edit cluster:
此命令将打开 $EDITOR 会话,显示存储在 Amazon S3 中的集群清单。在此,我们可以在 spec, authorization.rbac 和 authentication.aws 下添加两个密钥。应用后,这将配置控制平面以自动配置 Kubernetes RBAC 并部署 AWS IAM Authenticator。
现在,保存并关闭此文件。保存后,您需要使用 kops update cluster 创建 kops 集群:
完成后,您可以通过运行 validate 命令来验证集群的状态:
此过程可能需要五到十分钟。您最终会收到一条如下所示的错误消息:
使用 kubectl describe pod 进行检查:
这将显示您有一个集群运行,但无法启动 aws-iam-authenticator pod:该 pod 正在等待创建 ConfigMap 以便启动。现在,我们将创建 AWS IAM 策略、角色和 ConfigMap。
创建策略
在向任何人授予对集群的访问权限之前,您首先需要为其他 admin 用户创建 AWS IAM 角色和信任策略。您可以通过 AWS 控制台或使用 AWS CLI 执行此操作:
现在,您可以创建一个 ConfigMap,用于定义拥有集群访问权限的 AWS IAM 角色:
创建此文件后,您现在可以 apply 此配置:
部署完成后,您需要在 kubeconfig 中创建一个新用户。为此,您可以使用自己常用的编辑器打开 ~/. kube/config。创建一个用户,将 {ACCOUNT_ID} 替换为您的账户 ID。
然后,您需要修改 context 以引用此新用户:
kubectl config set-context NAME.exec
完成所有这些操作后,您可以测试针对您的集群的身份验证:
如果您看到集群节点已列出,则说明 Authenticator 已正确部署,并且正在使用 STS 来验证用户的身份:
清除
如果您想继续使用此集群,可以让它一直运行。如果您想关闭实例,可以通过调用 kops delete cluster 命令来完成:
小结
借助 AWS IAM Authenticator,您能将 Kubernetes apiserver 身份验证与 AWS IAM 联合,从而使您能设置基于 IAM 角色的精细组,这些组会允许精细的 Kubernetes RBAC 规则。您无需发出复杂的命令来管理密钥和证书即可授予 kubectl 访问权限。
感谢 Peter Rifel 最初撰写的关于 AWS IAM Authenticator 的文章。
作者介绍:
Chris Hein
Chris Hein 是一位资深的开发者,倡导 Amazon Web Services 的 Kubernetes/EKS。加入 Amazon 之前,Chris 曾就职于众多规模不等的公司,如 GoPro、Sproutling 和 Mattel。有关 Chris 的更多信息,请访问 https://aws.amazon.com/blogs/opensource/author/heichris/,并通过 @christopherhein 关注他
本文转载自 AWS 技术博客。
原文链接:
https://amazonaws-china.com/cn/blogs/china/deploying-aws-iam-authenticator-kubernetes-kops/
评论