在 Snowball Edge 设备上配置和运行 Amazon EKS Anywhere - Amazon Snowball Edge 开发者指南
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

在 Snowball Edge 设备上配置和运行 Amazon EKS Anywhere

按照以下步骤在您的 Snowball Edge 设备上配置和启动 Amazon EKS Anywhere。然后,要将 Amazon EKS Anywhere 配置为在断开连接的设备上运行,请在断开这些设备与外部网络的连接之前完成其他步骤。有关更多信息,请参阅 在 Sno Amazon w 上配置 Amazon EKS Anywhere 以实现断开连接

初始设置

通过将设备连接到本地网络、下载 Snowball Edge 客户端、获取凭证和解锁设备来在每台 Snowball Edge 设备上执行初始设置。

执行初始设置
  1. 下载并安装 Snowball Edge 客户端。有关更多信息,请参阅 下载并安装 Snowball Edge 客户端

  2. 将设备连接到您的本地网络。有关更多信息,请参阅 连接到您的本地网络

  3. 获取用于解锁设备的凭证。有关更多信息,请参阅 获取访问 Snow Family 设备的凭证

  4. 解锁设备。有关更多信息,请参阅 解锁 Snow Family 设备。您还可以使用脚本工具代替手动解锁设备。请参阅Unlock devices

自动在 Snowball Edge 设备上配置和运行 Amazon EKS Anywhere

您可以使用示例脚本工具来设置环境并运行 Amazon EKS Anywhere 管理实例,也可以手动执行此操作。要使用脚本工具,请参阅 Unlock devices and setup environment for Amazon EKS Anywhere。设置完环境并开始运行 Amazon EKS Anywhere 管理实例后,如果您需要将 Amazon EKS Anywhere 配置为在断开网络连接的情况下在 Snowball Edge 设备上运行,请参阅在 Sno Amazon w 上配置 Amazon EKS Anywhere 以实现断开连接。否则,请参阅在 Snowball Edge 设备上创建和维护集群

要手动设置环境并运行 Amazon EKS Anywhere 管理实例,请参阅手动在 Snowball Edge 设备上配置和运行 Amazon EKS Anywhere

手动在 Snowball Edge 设备上配置和运行 Amazon EKS Anywhere

创建个人 Amazon CLI 资料

创建 Amazon CLI 配置文件以存储证书,以便在配置 Snowball Edge 设备和 Amazon EKS Anywhere 管理实例的整个过程中使用。有关 Amazon CLI 配置文件的更多信息,请参阅《 Amazon Command Line Interface 用户指南》 Amazon CLI中的命名配置文件

您可以使用示例脚本工具自动创建 Amazon CLI 个人资料和 Amazon EKS Anywhere 本地 IAM 用户。请参阅 Create credentials and certificates file。使用脚本后,继续(可选)创建和导入 Secure Shell 密钥。否则,请按照此步骤操作,然后按照创建 Amazon EKS Anywhere IAM 本地用户中的步骤进行操作。

注意

对您配置的每台 Snowball Edge 设备执行此操作。

PATH_TO_Snowball_Edge_CLIENT/bin/snowballEdge list-access-keys --endpoint https://snowball-ip --manifest-file path-to-manifest-file --unlock-code unlock-code { "AccessKeyIds" : [ "xxxx" ] }

使用 AccessKeyIds 的值作为 get-secret-access-key 命令的 access-key-id 参数的值。

PATH_TO_Snowball_Edge_CLIENT/bin/snowballEdge get-secret-access-key --access-key-id ACCESS_KEY_ID --endpoint https://snowball-ip --manifest-file path-to-manifest-file --unlock-code unlock-code [snowballEdge] aws_access_key_id = xxx aws_secret_access_key = xxx

使用aws_access_key_id和的值aws_secret_access_key作为 Amazon CLI 配置文件AWS Access Key IDAWS Secret Access Key的值。

aws configure --profile profile-name AWS Access Key ID [None]: aws_access_key_id AWS Secret Access Key [None]: aws_secret_access_key Default region name [None]: snow

创建 Amazon EKS Anywhere IAM 本地用户

要实现最佳安全实操,请在 Snowball Edge 设备上为 Amazon EKS Anywhere 创建本地 IAM 用户。您可以使用步骤程序手动实现这一点。

注意

对您使用的每台 Snowball Edge 设备执行此操作。

创建本地用户

使用 create-user 命令创建 Amazon EKS Anywhere IAM 用户。

aws iam create-user --user-name user-name --endpoint http://snowball-ip:6078 --profile profile-name { "User": { "Path": "/", "UserName": "eks-a-user", "UserId": "AIDACKCEVSQ6C2EXAMPLE", "Arn": "arn:aws:iam::123456789012:user/eks-a-user", "CreateDate": "2022-04-06T00:13:35.665000+00:00" } }

为本地用户创建策略

创建策略文档,用其创建 IAM 策略,并将该策略附加到 Amazon EKS Anywhere 本地用户。

要创建策略文档并将其附加到 Amazon EKS Anywhere 本地用户,请执行以下操作
  1. 创建策略文档并将其保存到您的计算机。将以下策略复制到文档中。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "snowballdevice:DescribeDevice", "snowballdevice:CreateDirectNetworkInterface", "snowballdevice:DeleteDirectNetworkInterface", "snowballdevice:DescribeDirectNetworkInterfaces", "snowballdevice:DescribeDeviceSoftware" ], "Resource": ["*"] }, { "Effect": "Allow", "Action": [ "ec2:RunInstances", "ec2:DescribeInstances", "ec2:TerminateInstances", "ec2:ImportKeyPair", "ec2:DescribeKeyPairs", "ec2:DescribeInstanceTypes", "ec2:DescribeImages", "ec2:DeleteTags" ], "Resource": ["*"] } ] }
  2. 使用 create-policy 命令根据策略文档创建 IAM 策略。--policy-document 参数的值应使用策略文件的绝对路径。例如,file:///home/user/policy-name.json

    aws iam create-policy --policy-name policy-name --policy-document file:///home/user/policy-name.json --endpoint http://snowball-ip:6078 --profile profile-name { "Policy": { "PolicyName": "policy-name", "PolicyId": "ANPACEMGEZDGNBVGY3TQOJQGEZAAAABP76TE5MKAAAABCCOTR2IJ43NBTJRZBU", "Arn": "arn:aws:iam::123456789012:policy/policy-name", "Path": "/", "DefaultVersionId": "v1", "AttachmentCount": 0, "IsAttachable": true, "CreateDate": "2022-04-06T04:46:56.907000+00:00", "UpdateDate": "2022-04-06T04:46:56.907000+00:00" } }
  3. 使用 attach-user-policy 命令将 IAM 策略附加到 Amazon EKS Anywhere 本地用户。

    aws iam attach-user-policy --policy-arn policy-arn --user-name user-name --endpoint http://snowball-ip:6078 --profile profile-name

创建访问密钥和凭证文件

为 Amazon EKS Anywhere IAM 本地用户创建访问密钥。然后,创建一个凭证文件,并在其中包含为本地用户生成的 AccessKeyIdSecretAccessKey 的值。稍后,Amazon EKS Anywhere 管理实例将使用该凭证文件。

  1. 使用 create-access-key 命令为 Amazon EKS Anywhere 本地用户创建访问密钥。

    aws iam create-access-key --user-name user-name --endpoint http://snowball-ip:6078 --profile profile-name { "AccessKey": { "UserName": "eks-a-user", "AccessKeyId": "AKIAIOSFODNN7EXAMPLE", "Status": "Active", "SecretAccessKey": "RTT/wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", "CreateDate": "2022-04-06T04:23:46.139000+00:00" } }
  2. 创建凭证文件。在其中,按以下格式保存 AccessKeyIdSecretAccessKey 值。

    [snowball-ip] aws_access_key_id = ABCDEFGHIJKLMNOPQR2T aws_secret_access_key = AfSD7sYz/TBZtzkReBl6PuuISzJ2WtNkeePw+nNzJ region = snow
    注意

    如果您使用多台 Snowball Edge 设备,则文件中凭证的顺序无关紧要,但所有设备的凭证确实需要放在一个文件中。

为管理实例创建证书文件

Amazon EKS Anywhere 管理实例需要 Snowball Edge 设备的证书才能在这些设备上运行。创建一个证书文件,其中包含用于访问 Snowball Edge 设备的证书,以便在之后供 Amazon EKS Anywhere 管理实例使用。

要创建证书文件,请执行以下操作
  1. 使用 list-certificates 命令获取您计划使用的每台 Snowball Edge 设备的证书。

    PATH_TO_Snowball_Edge_CLIENT/bin/snowballEdge list-certificates --endpoint https://snowball-ip --manifest-file path-to-manifest-file --unlock-code unlock-code { "Certificates" : [ { "CertificateArn" : "arn:aws:snowball-device:::certificate/xxx", "SubjectAlternativeNames" : [ "ID:JID-xxx" ] } ] }
  2. 使用 CertificateArn 的值作为 get-certificate 命令的 --certificate-arn 参数的值。

    PATH_TO_Snowball_Edge_CLIENT/bin/snowballEdge get-certificate --certificate-arn ARN --endpoint https://snowball-ip --manifest-file path-to-manifest-file --unlock-code unlock-code
  3. 创建设备证书文件。将 get-certificate 的输出放入证书文件中。下面是如何保存输出的一个示例。

    注意

    如果您使用多台 Snowball Edge 设备,则文件中凭证的顺序无关紧要,但所有设备的凭证确实需要放在一个文件中。

    -----BEGIN CERTIFICATE----- ZWtzYSBzbm93IHRlc3QgY2VydGlmaWNhdGUgZWtzYSBzbm93IHRlc3QgY2VydGlm aWNhdGVla3NhIHNub3cgdGVzdCBjZXJ0aWZpY2F0ZWVrc2Egc25vdyB0ZXN0IGNl cnRpZmljYXRlZWtzYSBzbm93IHRlc3QgY2VydGlmaWNhdGVla3NhIHNub3cgdGVz dCBjZXJ0aWZpY2F0ZQMIIDXDCCAkSgAwIBAgIJAISM0nTVmbj+MA0GCSqGSIb3DQ ... -----END CERTIFICATE-----
  4. 重复创建 Amazon EKS Anywhere IAM 本地用户的操作,在所有 Snowball Edge 设备上为 Amazon EKS Anywhere 创建 IAM 本地用户。

(可选)创建和导入 Secure Shell 密钥

使用此可选过程创建 Secure Shell(SSH)密钥来访问所有 Amazon EKS Anywhere 节点实例,并将公钥导入所有 Snowball Edge 设备。保存并保护此密钥文件。

如果您跳过此过程,Amazon EKS Anywhere 将在必要时自动创建并导入 SSH 密钥。此密钥将存储在 ${PWD}/${CLUSTER_NAME}/eks-a-id_rsa 中的管理实例上。

创建 SSH 密钥并将其导入 Amazon EKS Anywhere 实例
  1. 使用 ssh-keygen 命令生成 SSH 密钥。

    ssh-keygen -t rsa -C "key-name" -f path-to-key-file
  2. 使用 import-key-pair 命令将密钥从您的计算机导入到 Snowball Edge 设备。

    注意

    将密钥导入所有设备时,key-name 参数的值必须相同。

    aws ec2 import-key-pair --key-name key-name --public-key-material fileb:///path/to/key-file --endpoint http://snowball-ip:8008 --profile profile-name { "KeyFingerprint": "5b:0c:fd:e1:a0:69:05:4c:aa:43:f3:3b:3e:04:7f:51", "KeyName": "default", "KeyPairId": "s.key-85edb5d820c92a6f8" }

运行 Amazon EKS Anywhere 管理实例并向其传输凭证和证书文件

运行 Amazon EKS Anywhere 管理实例

按照此过程手动运行 Amazon EKS Anywhere 管理实例、为管理实例配置虚拟网络接口(VNI)、检查实例的状态、创建 SSH 密钥,并用其连接到管理实例。您可以使用示例脚本工具自动创建 Amazon EKS Anywhere 管理实例,并将凭证和证书文件传输到该实例。请参见创建 Amazon EKS Anywhere 管理实例。脚本工具完成后,您可以参阅 在 Snowball Edge 设备上创建和维护集群 通过 ssh 登录实例并创建集群。如果您想手动设置 Amazon EKS Anywhere 实例,请使用以下步骤。

注意

如果您使用多台 Snowball Edge 设备来预置集群,则可以在任何 Snowball Edge 设备上启动 Amazon EKS Anywhere 管理实例。

要运行 Amazon EKS Anywhere 管理实例,请执行以下操作
  1. 使用 create-key-pair 命令为 Amazon EKS Anywhere 管理实例创建 SSH 密钥。该命令将密钥保存到 $PWD/key-file-name

    aws ec2 create-key-pair --key-name key-name --query 'KeyMaterial' --output text --endpoint http://snowball ip:8008 --profile profile-name > key-file-name
  2. 使用 describe-images 命令从输出中查找以 eks-anywhere-admin 开头的映像名称。

    aws ec2 describe-images --endpoint http://snowball-ip:8008 --profile profile-name
  3. 使用 run-instance 命令启动带有 Amazon EKS Anywhere 管理映像的 eks-a 管理实例。

    aws ec2 run-instances --image-id eks-a-admin-image-id --key-name key-name --instance-type sbe-c.xlarge --endpoint http://snowball-ip:8008 --profile profile-name
  4. 使用 describe-instances 命令检查 Amazon EKS Anywhere 实例的状态。等到命令显示实例状态为 running,然后再继续。

    aws ec2 describe-instances --instance-id instance-id --endpoint http://snowball-ip:8008 --profile profile-name
  5. describe-device 命令输出中,记下连接到您的网络的物理网络接口的 PhysicalNetworkInterfaceId 值。您将使用该值来创建 VNI。

    PATH_TO_Snowball_Edge_CLIENT/bin/snowballEdge describe-device --endpoint https://snowball-ip --manifest-file path-to-manifest-file --unlock-code unlock-code
  6. 为 Amazon EKS Anywhere 管理实例创建 VNI。使用 PhysicalNetworkInterfaceId 的值作为 physical-network-interface-id 参数的值。

    PATH_TO_Snowball_Edge_CLIENT/bin/snowballEdge create-virtual-network-interface --ip-address-assignment dhcp --physical-network-interface-id PNI --endpoint https://snowball-ip --manifest-file path-to-manifest-file --unlock-code unlock-code
  7. 使用 associate-address 命令的 public-ip 参数的 IpAddress 值,将共有地址与 Amazon EKS Anywhere 管理实例相关联。

    aws ec2 associate-address --instance-id instance-id --public-ip VNI-IP --endpoint http://snowball-ip:8008 --profile profile-name
  8. 通过 SSH 连接到 Amazon EKS Anywhere 管理实例。

    ssh -i path-to-key ec2-user@VNI-IP

将证书和凭证文件传输到管理实例

在 Amazon EKS Anywhere 管理实例开始运行后,将 Snowball Edge 设备的凭证和证书转移到管理实例。根据您在创建访问密钥和凭证文件为管理实例创建证书文件中保存凭证和证书文件的目录,在相同的目录中运行以下命令:

scp -i path-to-key path-to-credentials-file path-to-certificates-file ec2-user@eks-admin-instance-ip:~

验证 Amazon EKS Anywhere 管理实例上的文件内容。以下是凭证和证书文件的示例。

[192.168.1.1] aws_access_key_id = EMGEZDGNBVGY3TQOJQGEZB5ULEAAIWHWUJDXEXAMPLE aws_secret_access_key = AUHpqjO0GZQHEYXDbN0neLNlfR0gEXAMPLE region = snow [192.168.1.2] aws_access_key_id = EMGEZDGNBVGY3TQOJQGEZG5O7F3FJUCMYRMI4KPIEXAMPLE aws_secret_access_key = kY4Cl8+RJAwq/bu28Y8fUJepwqhDEXAMPLE region = snow
-----BEGIN CERTIFICATE----- ZWtzYSBzbm93IHRlc3QgY2VydGlmaWNhdGUgZWtzYSBzbm93IHRlc3QgY2VydGlm aWNhdGVla3NhIHNub3cgdGVzdCBjZXJ0aWZpY2F0ZWVrc2Egc25vdyB0ZXN0IGNl cnRpZmljYXRlZWtzYSBzbm93IHRlc3QgY2VydGlmaWNhdGVla3NhIHNub3cgdGVz dCBjZXJ0aWZpY2F0ZQMIIDXDCCAkSgAwIBAgIJAISM0nTVmbj+MA0GCSqGSIb3DQ ... -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- KJ0FPl2PAYPEjxr81/PoCXfZeARBzN9WLUH5yz1ta+sYUJouzhzWuLJYA1xqcCPY mhVlkRsN4hVdlBNRnCCpRF766yjdJeibKVzXQxoXoZBjrOkuGwqRy3d3ndjK77h4 OR5Fv9mjGf7CjcaSjk/4iwmZvRSaQacb0YG5GVeb4mfUAuVtuFoMeYfnAgMBAAGj azBpMAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYEFL/bRcnBRuSM5+FcYFa8HfIBomdF ... -----END CERTIFICATE-----