使用实例配置文件从 AWS Cloud9 部署亚马逊EKS集群 EC2 - AWS Prescriptive Guidance

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用实例配置文件从 AWS Cloud9 部署亚马逊EKS集群 EC2

由 Sagar Panigrahi 创作 () AWS

摘要

注意: AWS Cloud9 不再向新客户开放。的现有客户 AWS Cloud9 可以继续照常使用该服务。了解更多

此模式描述了如何使用 AWS Cloud9 以及AWS CloudFormation 如何创建亚马逊 Elastic Kubernetes Service EKS (Amazon) 集群,该集群无需为亚马逊网络服务 () 账户中的用户启用编程访问即可运行。AWS

AWSCloud9 是一个基于云的集成开发环境 (IDE),可帮助您使用浏览器编写、运行和调试代码。 AWSCloud9 用作控制中心,使用亚马逊弹性计算云 (AmazonEC2) 实例配置文件和AWS CloudFormation 模板来配置亚马逊EKS集群。 

如果您不想创建 Identity and Access Managem AWS ent (IAM) 用户,而是想改用IAM角色,则可以使用此模式。基于角色的访问控制 (RBAC) 根据个人用户的角色来控制对资源的访问权限。此模式演示如何RBAC在 Amazon EKS 集群内进行更新以允许访问特定IAM角色。

该模式的设置还可以帮助您的 DevOps 团队使用 AWS Cloud9 功能来维护和开发用于创建 Amazon 基础设施的基础设施即代码 (IaC) 资源。EKS 

先决条件和限制

先决条件

  • 一个活动的 AWS 账户。

  • 为账户创建IAM角色和策略的权限。用户的IAM角色必须包含AWSCloud9Administrator策略。还必须创建AWSServiceRoleForAmazonEKSeksNodeRoles角色,因为它们是创建 Amazon EKS 集群所必需的。

  • 了解 Kubernetes 的概念。

限制

  • 此模式描述了如何创建基本 Amazon EKS 集群。对于生产集群,您必须更新AWS CloudFormation 模板。 

  • 该模式不会部署额外的 Kubernetes 组件(例如 Fluentd入口控制器存储控制器)。 

架构

AWS Cloud architecture diagram showing VPC, EKS control and data planes, and related services.

技术堆栈

  • AWS Cloud9

  • AWS CloudFormation

  • Amazon EKS

  • IAM

 

自动化和扩缩

您可以扩展此模式并将其整合到持续集成和持续部署 (CI/CD) 管道中,以自动完成 Amazon 的完整配置。EKS

工具

  • AWS CloudFormation— AWS CloudFormation 帮助您对AWS资源进行建模和设置,这样您就可以花更少的时间管理这些资源,而将更多的时间集中在应用程序上。

  • AWSCloud9 — C AWS loud9 提供丰富的代码编辑体验,支持多种编程语言和运行时调试器,并内置终端。

  • AWSCLI— AWS Command Line Interface (AWSCLI) 是一个开源工具,可让您使用命令行外壳中的命令与AWS服务进行交互。

  • Kubectlkubectl 是一个命令行实用程序,可用于与亚马逊EKS集群进行交互。

操作说明

任务描述所需技能

创建 IAM 策略。

登录AWS管理控制台,打开IAM控制台,选择策略,然后选择创建策略。选择JSON选项卡并粘贴 policy-role-eks-instance-profile-for-cloud 9.json 文件(附后)中的内容。

解决策略验证过程中生成的任何安全警告、错误或常规警告,然后选择 Review policy(查看策略)。输入策略的名称。策略名称,建议使用 eks-instance-profile-for-cloud9

查看策略摘要以查看您的策略授予的权限。然后选择创建策略

云管理员

使用策略创建IAM角色。

在IAM控制台上,选择角色,然后选择创建角色。选择 “AWS服务”,然后EC2从列表中进行选择。

选择 “下一步:权限”,然后搜索您之前创建的IAM策略。根据要求选择合适的标签。

Review(查看)部分,输入角色的名称。角色名称,建议使用 role-eks-instance-profile-for-cloud9。然后选择 Create role(创建角色)

云管理员
任务描述所需技能

创建 IAM 策略。

在IAM控制台上,选择策略,然后选择创建策略。选择JSON选项卡并粘贴 policy-for-eks-rbac .json 文件(附后)中的内容。

解决策略验证过程中生成的任何安全警告、错误或常规警告,然后选择 Review policy(查看策略)。输入策略的名称。策略名称,建议使用 policy-for-eks-rbac。查看策略摘要以查看您的策略授予的权限。然后选择创建策略

云管理员

使用策略创建IAM角色。

在IAM控制台上,选择角色,然后选择创建角色。选择 “AWS服务”,然后EC2从列表中进行选择。选择 “下一步:权限”,然后搜索您之前创建的IAM策略。根据要求选择合适的标签。

Review(查看)部分,输入角色的名称。角色名称,建议使用 role-eks-admin-for-rbac。然后选择 Create role(创建角色)

云管理员
任务描述所需技能

创建 AWS Cloud9 环境。

打开 AWS Cloud9 控制台,然后选择创建环境。在 Name environment(命名环境)页面,输入环境的名称。环境名称,建议使用 eks-management-env。根据您的要求配置其余设置,然后选择下一步

Review(查看)页面中,选择 Create environment(创建环境)。AWSCloud9 正在创建您的环境,请稍候。这个过程可能需要几分钟。

有关可用配置选项的更多信息,请参阅 AWS Cloud9 文档中的创建EC2环境

云管理员

移除 C AWS loud IAM 9 的临时证书。

配置 AWS Cloud9 环境后,选择齿轮图标中的设置。在 “首选项” 下,选择 AWS“设置”,然后选择 “凭据”。

关闭AWS托管临时凭证并关闭选项卡。

云管理员

将EC2实例配置文件附加到底层EC2实例。

打开 Amazon EC2 控制台,然后在 AWS Cloud9 中选择与您的环境相匹配的EC2实例。如果您使用我们推荐的名称,则会调用该EC2实例aws-cloud9-eks-management-env

选择实EC2例,选择操作,然后选择实例设置。选择附加/替换角色IAM。搜索role-eks-instance-profile-for-cloud9或您之前创建的IAM角色的名称,然后选择 A pply

云管理员
任务描述所需技能

创建 Amazon EKS 集群。

下载并打开 eks-cfn.yaml(附后)模板。AWS CloudFormation根据您的要求编辑模板。

打开 AWS Cloud9 环境并选择 “新建文件”。将您之前创建的AWS CloudFormation 模板粘贴到字段中。建议您使用 eks-cfn.yaml 为模板名称。

在 AWS Cloud9 终端中,运行以下命令来创建亚马逊EKS集群:

aws cloudformation create-stack --stack-name eks-cluster --template-body file://eks-cfn.yaml --region <your_AWS_Region>

如果AWS CloudFormation 调用成功,则会在输出中收到AWS CloudFormation 堆栈的 Amazon 资源名称 (ARN)。堆栈创建可能需要 10 到 20 分钟。

云管理员

验证 Amazon EKS 集群的状态。

在AWS CloudFormation 主机上,打开堆栈页面,然后选择堆栈名称。

堆栈状态代码显示 CREATE_COMPLETE 时即会创建堆栈。有关更多信息,请参阅AWS CloudFormation 文档中的查看AWS CloudFormation 堆栈数据和资源

云管理员
任务描述所需技能

在 Cloud9 AWS 环境中安装 kubectl。

按照亚马逊kubectl文档中安装 kubectl 中的说明在您的 AWS Cloud9 环境中进行安装。EKS

云管理员

在 AWS Cloud9 中更新新的亚马逊EKS配置。

在 AWS Cloud9 终端中运行以下命令,将kubeconfig从亚马逊EKS集群更新到 Cloud9 环境AWS:

aws eks update-kubeconfig --name EKS-DEV2 --region <your_AWS_Region> 

重要

EKS-DEV2是您用来创建EKS集群的AWS CloudFormation 模板中的 Amazon 集群的名称。

运行 kubectl get all -A 命令查看所有 Kubernetes 资源。

云管理员

向 Kubernetes RBAC 添加管理员IAM角色。

在您的 AWS Cloud9 终端中运行以下命令,以编辑模式打开 Amazon EKS 的RBAC配置地图:

kubectl edit cm/aws-auth -n kube-system

mapRoles 部分下方添加以下几行:

- groups: - system:masters rolearn: <ARN_of_IAM_role _from_second_epic> username: eksadmin

对YAML格式化文件进行 Lint 以避免语法错误。使用 vi 命令保存文件,然后退出该文件。

注意

通过添加此部分,您可以通知将在亚马逊集群上获得完全管理员访问权限RBAC<ARN_of_IAM_role _from_second_epic>的 Kubernetes。EKS这意味着已识别的IAM角色可以在 Kubernetes 集群上执行管理操作。 AWS在配置 Amazon EKS 集群mapRoles时在下方添加现有部分。

云管理员

相关资源

参考

附件

要访问与此文档相关联的其他内容,请解压以下文件:attachment.zip