本主題說明如何準備 Amazon Web Services (AWS),以執行 Tanzu Kubernetes Grid。
在使用 Tanzu CLI 或安裝程式介面來部署管理叢集之前,您必須先準備要執行 Tanzu CLI 的啟動機器,並設定 Amazon Web Services (AWS) 帳戶。
如果您要將 Tanzu Kubernetes Grid 安裝在 VMware Cloud on AWS 上,您會安裝到 vSphere 環境中。請參閱〈準備將管理叢集部署到 VMware Cloud 環境〉中的準備 VMware Cloud on AWS,以及準備將管理叢集部署到 vSphere,以部署管理叢集。
重要Tanzu Kubernetes Grid v2.4.x 是支援在 AWS 上建立獨立 TKG 管理叢集的最後一個 TKG 版本。在 Tanzu Kubernetes Grid v2.5 中,將移除在 AWS 上建立獨立 TKG 管理叢集的功能。
從現在開始,VMware 建議您使用 Tanzu Mission Control 建立原生 AWS EKS 叢集,而不是在 AWS 上建立新的 TKG 管理叢集。有關如何使用 Tanzu Mission Control 原生 AWS EKS 叢集的資訊,請參見《Tanzu Mission Control》說明文件中的管理 AWS EKS 叢集的生命週期。
有關詳細資訊,請參見《VMware Tanzu Kubernetes Grid v2.4 發行說明》中的〈棄用 AWS 和 Azure 上的 TKG 管理和工作負載叢集〉。
CLUSTER_API_SERVER_PORT
變數。對於 TCP,允許在本機啟動機器與管理叢集用料表清單 (BOM) 檔案中列出的映像存放庫之間,透過連接埠 443 傳輸流量。*
~/.config/tanzu/tkg/bom/
下,且其名稱包含 Tanzu Kubernetes Grid 版本,例如 v2.4.0 的 tkg-bom-v2.4.0+vmware.1.yaml
。imageRepository
值 (例如,projects.registry.vmware.com/tkg
) 執行 DNS 查閱,以尋找允許存取的 CNAME。AWS CLI 會安裝在本機。
jq
安裝在本機。
AWS CLI 指南會使用 jq
,以在建立 SSH 金鑰配對時處理 JSON。當您使用 CLI 來部署 Tanzu Kubernetes Grid 時,它還用來準備環境或組態變數。
若要使用 CAPA 來解決已知問題,請在本機環境或管理叢集組態檔中,設定 EXP_EXTERNAL_RESOURCE_GC=false
。
*或者參閱準備網際網路受限的環境,以便在無法存取外部網路的情況下安裝。
對於您建立的每個叢集,Tanzu Kubernetes Grid 會在您的 AWS 帳戶中各使用一組資源。
資源 | Tanzu Kubernetes Grid 使用 |
---|---|
VPC | 1 |
彈性 IP 位址 | 每個可用區域各有 1 個* (AZ) |
子網路 | 連結網際網路的每個 AZ 各有 2 個;內部的每個 AZ 各有 1 個* |
EC2 安全群組 (VPC) | 4 |
網際網路閘道 | 1 |
NAT 閘道 | 預設* 部署每個 AZ 各有 1 個 |
控制平面 EC2 執行個體 | 每個 AZ 各有 1 個* |
*開發叢集會使用一個可用區域,生產叢集會使用 3 個可用區域。
AWS 會對這些資源實作預設限制或配額,並允許您修改限制。一般而言,預設限制足以讓您開始建立和使用叢集,但隨著您增加叢集或工作負載計數,就可能超出這些 AWS 限制,從而阻止 Tanzu Kubernetes Grid 建立新叢集或部署新工作負載。
VMware 建議您定期評估您已在 AWS 帳戶中指定的限制,並視需要要求增加服務配額,以符合您的業務需求。
最相關的服務配額包括:
服務代碼 | 配額名稱 | 配額代碼 |
---|---|---|
vpc | 每個區域的網際網路閘道數 | L-A4707A72 |
vpc | 每個可用區域的 NAT 閘道數 | L-FE5A380F |
vpc | 每個區域的 VPC 數 | L-F678F1CE |
ec2 | 執行中的隨需標準 (A、C、D、H、I、M、R、T、Z) 執行個體數 | L-1216C47A |
ec2 | EC2-VPC 彈性 IP 數 | L-0263D0A3 |
elasticloadbalancing | 每個區域的傳統負載平衡器數 | L-E9E9831D |
您可以選擇性地共用 VPC,而不建立新的 VPC,例如:工作負載叢集與其管理叢集共用 VPC。
如需叢集節點執行個體大小的相關資訊,請參閱 AWS 說明文件中的 Amazon EC2 執行個體類型。
只要符合下列任一條件,即可將 Tanzu Kubernetes Grid 部署到未連結 NAT 閘道的 VPC:
Tanzu Kubernetes Grid 不會檢查路由表中是否存在特定路由。因此,支援透過 VPC NAT 閘道、EC2 執行個體或應用裝置、網際網路閘道、傳輸閘道或 DirectConnect 進行網際網路連線。
下表說明 AWS 上的管理叢集大小調整範例。請使用此資料作為指引,以確保管理叢集已調整,而能處理您計劃部署的工作負載叢集數量。工作負載叢集的虛擬機器大小資料行列出用於可以管理… 資料行中範例的虛擬機器大小。
管理叢集計劃 | 管理叢集的虛擬機器大小 | 可以管理… | 工作負載叢集的虛擬機器大小 |
---|---|---|---|
3 個控制平面節點和 3 個工作節點 |
|
範例:
|
|
3 個控制平面節點和 3 個工作節點 |
|
範例:一個工作負載叢集,其中部署了 3 個控制平面和 500 個工作節點 |
|
3 個控制平面節點和 3 個工作節點 |
|
範例:200 個工作負載叢集,每個叢集各部署了 3 個控制平面和 5 個工作節點 |
|
以下小節列出 Tanzu Kubernetes Grid 在 AWS 上部署和管理叢集時所需的權限:
tanzu mc permissions aws set
命令,或在安裝程式介面中選取自動建立 AWS CloudFormation 堆疊 (Automate creation of AWS CloudFormation Stack) 核取方塊時,Tanzu Kubernetes Grid 會自動設定這些權限。
mc
是 management-cluster
的縮寫。若要讓 Tanzu Kubernetes Grid 能夠將叢集部署到 AWS,您必須在 AWS 帳戶中建立 CloudFormation 堆疊 tkg-cloud-vmware-com
。此 CloudFormation 堆疊定義了 Tanzu Kubernetes Grid 在 AWS 上部署和管理叢集所需的身分識別和存取管理 (IAM) 資源和權限。
若要建立堆疊,請在完成本主題中的步驟後,在部署叢集之前執行 tanzu mc permissions aws set
命令,或在安裝程式介面中選取自動建立 AWS CloudFormation 堆疊 (Automate creation of AWS CloudFormation Stack) 核取方塊,如從組態檔部署管理叢集的建立 IAM 資源一節中所述,或使用安裝程式介面部署管理叢集中所述。無論您打算在 Tanzu Kubernetes Grid 環境中使用一個還是多個 AWS 區域,您都只需為每個 AWS 帳戶執行一次此作業即可。
執行 tanzu mc permissions aws set
或選取自動建立 AWS CloudFormation 堆疊 (Automate creation of AWS CloudFormation Stack) 時,會建立以下 IAM 設定檔、角色和原則。對於您在建立堆疊時將其認證提供給 Tanzu Kubernetes Grid 的使用者來說,他必須具有管理員權限,才能在 AWS 帳戶中建立這些 IAM 資源。
設定檔 / AWS::IAM::InstanceProfile
:
control-plane.tkg.cloud.vmware.com
:供執行 Kubernetes 控制平面元件的 EC2 執行個體使用。nodes.tkg.cloud.vmware.com
:供 Tanzu Kubernetes Grid 叢集中的所有非控制平面 EC2 執行個體使用。controllers.tkg.cloud.vmware.com
:可用來從連結了執行個體設定檔的 EC2 中的 Jumpbox,來啟動載入 Tanzu Kubernetes Grid。角色 / AWS::IAM::Role
:這些角色以 1:1 對應至上述的 AWS IAM 執行個體設定檔:
control-plane.tkg.cloud.vmware.com
nodes.tkg.cloud.vmware.com
controllers.tkg.cloud.vmware.com
原則 / AWS::IAM::ManagedPolicy
:
arn:aws:iam::YOUR-ACCOUNT-ID:policy/control-plane.tkg.cloud.vmware.com
:會連結到上述控制平面 IAM 角色。arn:aws:iam::YOUR-ACCOUNT-ID:policy/nodes.tkg.cloud.vmware.com
:會連結到上述控制平面和節點 IAM 角色。arn:aws:iam::YOUR-ACCOUNT-ID:policy/controllers.tkg.cloud.vmware.com
:會連結到上述控制平面和控制器 IAM 角色。當 Tanzu Kubernetes Grid 在您的 AWS 帳戶中建立 CloudFormation 堆疊後,您可以在 AWS 主控台中導覽至 CloudFormation > 堆疊 (Stacks),來擷取其範本。如需 CloudFormation 堆疊的詳細資訊,請參閱 AWS 說明文件中的使用堆疊。
或者,您可以擷取 Tanzu Kubernetes Grid 用來建立上述 IAM 資源的範本,並在 AWS 帳戶中直接建立 tkg-cloud-vmware-com
堆疊,而不是執行 tanzu mc permissions aws set
或選取自動建立 AWS CloudFormation 堆疊 (Automate creation of AWS CloudFormation Stack)。若要擷取範本,請執行 tanzu mc permissions aws generate-cloudformation-template
。
僅當您打算向 Tanzu Mission Control 登錄管理叢集時,才需要以下 IAM 權限。執行 tanzu mc permissions aws set
命令時,會自動將這些權限新增到 nodes.tkg.cloud.vmware.com
IAM 角色。
{
"Action": [
"servicequotas:ListServiceQuotas",
"ec2:DescribeKeyPairs",
"ec2:DescribeInstanceTypeOfferings",
"ec2:DescribeInstanceTypes",
"ec2:DescribeAvailabiilityZones",
"ec2:DescribeRegions",
"ec2:DescribeSubnets",
"ec2:DescribeRouteTables",
"ec2:DescribeVpcs",
"ec2:DescribeNatGateways",
"ec2:DescribeAddresses",
"elasticloadbalancing:DescribeLoadBalancers"
],
"Resource": [
"*"
],
"Effect": "Allow"
}
在您執行 tanzu mc permissions aws set
之前,可以將 DISABLE_TMC_CLOUD_PERMISSIONS
設定為 true
,來停用這些權限。如需詳細資訊,請參閱向 Tanzu Mission Control 登錄管理叢集。
您必須為每個 AWS 帳戶手動設定一次下列權限。
如果要從安裝程式介面來部署管理叢集,對於您在部署叢集時將其認證提供給 Tanzu Kubernetes Grid 的使用者來說,他必須具有 "ec2:DescribeInstanceTypeOfferings"
和 "ec2:DescribeInstanceTypes"
權限。如果您的使用者目前沒有這些權限,您可以建立一項包含這些權限的自訂原則,並將其連結至您的使用者。
若要使 Tanzu Kubernetes Grid 能夠在 Amazon EC2 上建立和管理虛擬機器,它必須具有 AWS 帳戶以及:
您必須設定帳戶認證,以便針對您計劃部署 Tanzu Kubernetes Grid 叢集的區域,建立 SSH 金鑰配對。
在您設定用來存取 EC2 的 AWS 帳戶認證時,有多個選項可選。以下小節說明不同的選項。
VMware 建議使用 [認證設定檔 (Credential Profiles)] 選項,該選項使用 aws configure
命令進行管理。這些設定檔會儲存到本機共用組態檔中,通常位於 ~/.aws/config
。
當使用多個認證時,依遞減優先順序排序,可能的認證組態選項包括:
工作負載叢集組態檔變數 (僅用來建立工作負載叢集)。請參閱下方的叢集組態檔。
本機靜態環境變數。請參閱下方的本機環境變數。
(建議) 認證設定檔,會在執行 aws configure
時更新。這些項目會儲存到 ~/.aws/config
(若為 Linux 或 macOS) 或 C:\Users\USERNAME\.aws\config
(若為 Windows),或者可將它命名為 credentials
。請參閱下方的認證設定檔。
執行個體設定檔認證。您可以讓 IAM 角色與每個 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體產生關聯。之後,該角色的臨時認證可供正在執行個體中執行的程式碼使用。認證是透過 Amazon EC2 中繼資料服務傳遞。如需詳細資訊,請參閱《適用於 Linux 執行個體的 Amazon EC2 使用者指南》中的〈AWS 的 IAM 角色〉以及《IAM 使用者指南》中的〈使用執行個體設定檔〉。
當設定 AWS 認證時,其中一個選項是在啟動機器上設定本機環境變數。若要使用本機環境變數,請為您的 AWS 帳戶設定以下環境變數:
export AWS_ACCESS_KEY_ID=aws_access_key
,其中 aws_access_key
是 AWS 存取金鑰。
export AWS_SECRET_ACCESS_KEY=aws_access_key_secret
,其中 aws_access_key_secret
是 AWS 存取金鑰密碼。
export AWS_SESSION_TOKEN=aws_session_token
,其中 aws_session_token
是授與您帳戶的 AWS 工作階段 Token。僅當需要使用臨時存取金鑰時,才需要指定此變數。如需使用臨時存取金鑰的詳細資訊,請參閱瞭解並取得 AWS 認證。
export AWS_REGION=aws_region
,其中 aws_region
是您要在其中部署叢集的 AWS 區域。例如,us-west-2
。
如需 AWS 區域完整清單,請參閱 AWS 服務端點。除了一般的 AWS 區域外,您還可以在 AWS GovCloud 中指定 us-gov-east
和 us-gov-west
區域。
Tanzu Kubernetes Grid 支援以下 AWS CLI 環境變數:
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_SESSION_TOKEN
AWS_SHARED_CREDENTIALS_FILE
AWS_CONFIG_FILE
AWS_REGION
AWS_PROFILE
如需這些變數的進一步資訊,請參閱《AWS 命令列介面使用者指南》。
使用 Tanzu Kubernetes Grid 的建議方法是使用 aws configure
命令,將 AWS 認證儲存在本機認證或組態檔中。AWS 組態檔可以支援一系列驗證機制,範圍從靜態認證到透過外部認證協助程式來進行 SSO。
AWS 認證檔可以處理多個帳戶,包括預設設定檔和其他的具名設定檔。認證檔和設定檔會納入上述的認證優先順序中,而在本機環境變數之後套用。
若要在啟動機器上為 AWS 帳戶設定認證檔和設定檔,可以使用 aws configure CLI 命令。
若要自訂要使用的 AWS 認證檔和設定檔,您可以設定以下環境變數:
export AWS_PROFILE=profile_name
,其中 profile_name
是包含您要使用的 AWS 存取金鑰的設定檔名稱。如果沒有指定此變數的值,則會使用設定檔名稱 default
。如需使用具名設定檔的詳細資訊,請參閱 AWS 說明文件中的具名設定檔。
export AWS_SHARED_CREDENTIAL_FILE=path_to_credentials_file
,其中,path_to_credentials_file
是包含 AWS 存取金鑰資訊的認證檔的位置和名稱。如果您未定義此環境變數,則預設位置和檔案名稱為 $HOME/.aws/credentials
。
export AWS_CONFIG=path_to_config_file
,其中,path_to_config_file
是包含設定檔組態的組態檔的位置和名稱。如果您未定義此環境變數,則預設位置和檔案名稱為 $HOME/.aws/config
。如果您要指定明確的認證來源,或使用外部認證程序,將需要使用此檔案。
附註您在 AWS 認證或組態檔中所建立的任何具名設定檔,會在適用於 AWS 的 Tanzu Kubernetes Grid 安裝程式 UI 中的 AWS 認證設定檔 (AWS Credential Profile) 下拉式功能表中顯示為可選選項。
如需有效 AWS 認證和預設 AWS 認證提供者鏈結的詳細資訊,請參閱 AWS 說明文件中的管理 AWS 存取金鑰的最佳做法。
您可以設定以下變數,以便在用來建立叢集的組態檔中指定 AWS 認證:
AWS_ACCESS_KEY_ID
(base 64 編碼)AWS_SECRET_ACCESS_KEY
(base 64 編碼)AWS_SESSION_TOKEN
(選用)AWS_ACCESS_KEY_ID
和 AWS_SECRET_ACCESS_KEY
必須以 <encoded:(base64 encoded value)>
形式傳遞,例如,如果您的 AWS 存取金鑰識別碼為 AKIAIOSFODNN7EXAMPLE
,密碼存取金鑰為 wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
,工作階段 Token 為 AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OP
,則必須在組態檔中設定成如下:
AWS_ACCESS_KEY_ID: <encoded:QUtJQUlPU0ZPRE5ON0VYQU1QTEU=>
AWS_SECRET_ACCESS_KEY: <encoded:d0phbHJYVXRuRkVNSS9LN01ERU5HL2JQeFJmaUNZRVhBTVBMRUtFWQ==>
AWS_SESSION_TOKEN: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
舊版 Tanzu Kubernetes Grid 會將認證儲存在叢集組態檔中。依預設,Tanzu Kubernetes Grid 1.4 及更新版本不會將 AWS 的認證儲存在組態檔中。
在您使用本機環境變數或在認證檔和設定檔中設定 AWS 帳戶認證後,必須為 AWS 帳戶產生 EC2 金鑰配對。Tanzu Kubernetes Grid 會將此金鑰配對中的公開金鑰部分傳遞給 AWS,以便在每個區域中進行驗證。
附註AWS 僅支援 RSA 金鑰。AWS 所需金鑰的格式不同於 vSphere 所需的金鑰。您不能將相同的金鑰配對同時用於 vSphere 部署和 AWS 部署。
如果用來部署管理叢集的帳戶和區域還沒有 EC2 金鑰配對,請執行以下步驟來建立一個金鑰配對:
針對要與 Tanzu Kubernetes Grid 搭配使用的每個區域,建立一個具名金鑰配對,並輸出一個包含名稱的 .pem
檔案。例如,以下命令使用 default
,並將檔案儲存為 default.pem
。
aws ec2 create-key-pair --key-name default --output json | jq .KeyMaterial -r > default.pem
若要針對不是您設定檔中的預設區域的區域或是在本機設定為 AWS_DEFAULT_REGION
的區域,建立金鑰配對,請包含 --region
選項。
登入 Amazon EC2 儀表板,然後移至網路和安全性 (Network & Security) > 金鑰配對 (Key Pairs),以驗證所建立的金鑰配對已登錄在您的帳戶中。
對於生產部署,強烈建議為叢集啟用身分識別管理:
如果您在具有外部網際網路連線的環境中使用 Tanzu Kubernetes Grid,一旦設定身分識別管理後,即可準備將管理叢集部署到 AWS。