若要建立叢集組態檔,您可以將先前部署的現有組態檔複製到 Amazon Web Services (AWS),並加以更新。或者,也可以使用空白範本從頭開始建立檔案。
以下範本包括用來在 AWS 上部署管理叢集的所有相關選項。您可以複製此範本,並用來將管理叢集部署到 AWS。
如需如何更新所有目標平台通用的設定的相關資訊,請參閱建立管理叢集組態檔
如需所有組態檔變數的相關資訊,請參閱 Tanzu CLI 組態檔變數參考。
如需如何設定 vSphere 設定的範例,請參閱範本下方的小節。
必要選項會取消註解。選用設定會註解掉。如果適用,會包含預設值。
#! ---------------------------------------------------------------------
#! Basic cluster creation configuration
#! ---------------------------------------------------------------------
CLUSTER_NAME:
CLUSTER_PLAN: dev
INFRASTRUCTURE_PROVIDER: aws
# CLUSTER_API_SERVER_PORT:
ENABLE_CEIP_PARTICIPATION: true
ENABLE_AUDIT_LOGGING: true
CLUSTER_CIDR: 100.96.0.0/11
SERVICE_CIDR: 100.64.0.0/13
# CAPBK_BOOTSTRAP_TOKEN_TTL: 30m
#! ---------------------------------------------------------------------
#! Node configuration
#! AWS-only MACHINE_TYPE settings override cloud-agnostic SIZE settings.
#! ---------------------------------------------------------------------
# SIZE:
# CONTROLPLANE_SIZE:
# WORKER_SIZE:
CONTROL_PLANE_MACHINE_TYPE: t3.large
NODE_MACHINE_TYPE: m5.large
# OS_NAME: ""
# OS_VERSION: ""
# OS_ARCH: ""
#! ---------------------------------------------------------------------
#! AWS configuration
#! ---------------------------------------------------------------------
AWS_REGION:
AWS_NODE_AZ: ""
AWS_ACCESS_KEY_ID:
AWS_SECRET_ACCESS_KEY:
AWS_SSH_KEY_NAME:
BASTION_HOST_ENABLED: true
# AWS_NODE_AZ_1: ""
# AWS_NODE_AZ_2: ""
# AWS_VPC_ID: ""
# AWS_PRIVATE_SUBNET_ID: ""
# AWS_PUBLIC_SUBNET_ID: ""
# AWS_PUBLIC_SUBNET_ID_1: ""
# AWS_PRIVATE_SUBNET_ID_1: ""
# AWS_PUBLIC_SUBNET_ID_2: ""
# AWS_PRIVATE_SUBNET_ID_2: ""
# AWS_PRIVATE_NODE_CIDR: 10.0.0.0/24
# AWS_PUBLIC_NODE_CIDR: 10.0.1.0/24
# AWS_PRIVATE_NODE_CIDR_1: 10.0.2.0/24
# AWS_PUBLIC_NODE_CIDR_1: 10.0.3.0/24
# AWS_PRIVATE_NODE_CIDR_2: 10.0.4.0/24
# AWS_PUBLIC_NODE_CIDR_2: 10.0.5.0/24
# AWS_SECURITY_GROUP_BASTION: sg-12345
# AWS_SECURITY_GROUP_CONTROLPLANE: sg-12346
# AWS_SECURITY_GROUP_APISERVER_LB: sg-12347
# AWS_SECURITY_GROUP_NODE: sg-12348
# AWS_SECURITY_GROUP_LB: sg-12349
# DISABLE_TMC_CLOUD_PERMISSIONS: false # Deactivates IAM permissions required for TMC enablement
#! ---------------------------------------------------------------------
#! Image repository configuration
#! ---------------------------------------------------------------------
# TKG_CUSTOM_IMAGE_REPOSITORY: ""
# TKG_CUSTOM_IMAGE_REPOSITORY_CA_CERTIFICATE: ""
#! ---------------------------------------------------------------------
#! Proxy configuration
#! ---------------------------------------------------------------------
# TKG_HTTP_PROXY: ""
# TKG_HTTPS_PROXY: ""
# TKG_NO_PROXY: ""
#! ---------------------------------------------------------------------
#! Machine Health Check configuration
#! ---------------------------------------------------------------------
ENABLE_MHC:
ENABLE_MHC_CONTROL_PLANE: true
ENABLE_MHC_WORKER_NODE: true
MHC_UNKNOWN_STATUS_TIMEOUT: 5m
MHC_FALSE_STATUS_TIMEOUT: 12m
#! ---------------------------------------------------------------------
#! Identity management configuration
#! ---------------------------------------------------------------------
IDENTITY_MANAGEMENT_TYPE: "none"
#! Settings for IDENTITY_MANAGEMENT_TYPE: "oidc"
# CERT_DURATION: 2160h
# CERT_RENEW_BEFORE: 360h
# OIDC_IDENTITY_PROVIDER_CLIENT_ID:
# OIDC_IDENTITY_PROVIDER_CLIENT_SECRET:
# OIDC_IDENTITY_PROVIDER_GROUPS_CLAIM: groups
# OIDC_IDENTITY_PROVIDER_ISSUER_URL:
# OIDC_IDENTITY_PROVIDER_SCOPES: "email,profile,groups"
# OIDC_IDENTITY_PROVIDER_USERNAME_CLAIM: email
#! The following two variables are used to configure Pinniped JWTAuthenticator for workload clusters
# SUPERVISOR_ISSUER_URL:
# SUPERVISOR_ISSUER_CA_BUNDLE_DATA:
#! Settings for IDENTITY_MANAGEMENT_TYPE: "ldap"
# LDAP_BIND_DN:
# LDAP_BIND_PASSWORD:
# LDAP_HOST:
# LDAP_USER_SEARCH_BASE_DN:
# LDAP_USER_SEARCH_FILTER:
# LDAP_USER_SEARCH_USERNAME: userPrincipalName
# LDAP_USER_SEARCH_ID_ATTRIBUTE: DN
# LDAP_USER_SEARCH_EMAIL_ATTRIBUTE: DN
# LDAP_USER_SEARCH_NAME_ATTRIBUTE:
# LDAP_GROUP_SEARCH_BASE_DN:
# LDAP_GROUP_SEARCH_FILTER:
# LDAP_GROUP_SEARCH_USER_ATTRIBUTE: DN
# LDAP_GROUP_SEARCH_GROUP_ATTRIBUTE:
# LDAP_GROUP_SEARCH_NAME_ATTRIBUTE: cn
# LDAP_ROOT_CA_DATA_B64:
#! ---------------------------------------------------------------------
#! Antrea CNI configuration
#! ---------------------------------------------------------------------
# ANTREA_NO_SNAT: true
# ANTREA_NODEPORTLOCAL: true
# ANTREA_NODEPORTLOCAL_ENABLED: true
# ANTREA_NODEPORTLOCAL_PORTRANGE: 61000-62000
# ANTREA_TRAFFIC_ENCAP_MODE: "encap"
# ANTREA_PROXY: true
# ANTREA_PROXY_ALL: true
# ANTREA_PROXY_LOAD_BALANCER_IPS: false
# ANTREA_PROXY_NODEPORT_ADDRS:
# ANTREA_PROXY_SKIP_SERVICES: ""
# ANTREA_POLICY: true
# ANTREA_TRACEFLOW: true
# ANTREA_DISABLE_UDP_TUNNEL_OFFLOAD: false
# ANTREA_ENABLE_USAGE_REPORTING: false
# ANTREA_EGRESS: true
# ANTREA_EGRESS_EXCEPT_CIDRS: ""
# ANTREA_FLOWEXPORTER: false
# ANTREA_FLOWEXPORTER_COLLECTOR_ADDRESS: "flow-aggregator.flow-aggregator.svc:4739:tls"
# ANTREA_FLOWEXPORTER_POLL_INTERVAL: "5s"
# ANTREA_FLOWEXPORTER_ACTIVE_TIMEOUT: "5s"
# ANTREA_FLOWEXPORTER_IDLE_TIMEOUT: "15s"
# ANTREA_IPAM: false
# ANTREA_KUBE_APISERVER_OVERRIDE: ""
# ANTREA_MULTICAST: false
# ANTREA_MULTICAST_INTERFACES: ""
# ANTREA_NETWORKPOLICY_STATS: true
# ANTREA_SERVICE_EXTERNALIP: true
# ANTREA_TRANSPORT_INTERFACE: ""
# ANTREA_TRANSPORT_INTERFACE_CIDRS: ""
若要提供 AWS 帳戶以及要在其中部署叢集的區域和可用區域的相關資訊,請執行下列其中一個動作:
(建議) 使用 AWS CLI 來設定 AWS 認證設定檔,並將環境變數 AWS_PROFILE
設定為啟動機器上的設定檔名稱。
將帳戶認證和其他資訊包含在叢集組態檔中。例如:
AWS_REGION: eu-west-1
AWS_NODE_AZ: "eu-west-1a"
# Only use AWS_PROFILE OR combination of AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, but not both.
AWS_PROFILE: tkg
# AWS_ACCESS_KEY_ID: <encoded:QUtJQVQ[...]SU82TTM=>
# AWS_SECRET_ACCESS_KEY: <encoded:eGN4RHJmLzZ[...]SR08yY2ticQ==>
AWS_SSH_KEY_NAME: default
BASTION_HOST_ENABLED: true
AWS_PROFILE
或 AWS_ACCESS_KEY_ID
和 AWS_SECRET_ACCESS_KEY
的組合,但不能同時使用兩者。AWS_ACCESS_KEY_ID
和 AWS_SECRET_ACCESS_KEY
的值必須是 base64 編碼。依預設,AWS 上的 Tanzu Kubernetes Grid 會為管理叢集的 Kubernetes API 伺服器建立公用的負載平衡器。
對於網際網路受限的環境 (例如氣隙或 Proxy),您可以在叢集組態檔中將 AWS_LOAD_BALANCER_SCHEME_INTERNAL
設定為 true
,來避免建立公用的負載平衡器:
AWS_LOAD_BALANCER_SCHEME_INTERNAL: true
此設定可將管理叢集的負載平衡器自訂為使用內部配置,表示將無法透過網際網路來存取及路由其 Kubernetes API 伺服器。
Tanzu CLI 會根據您在組態檔中提供的設定,來建立工作負載叢集的個別節點。在 AWS 上,您可以將所有節點虛擬機器設定為具有相同的預先定義組態,或者為控制平面和工作節點設定不同的預先定義組態。藉由使用這些設定,您可以建立 Tanzu Kubernetes 叢集,且其中的節點具有與管理叢集節點不同的組態。您還可以建立叢集,且其中的控制平面節點和工作節點具有不同的組態。
在您建立管理叢集時,會在 CONTROL_PLANE_MACHINE_TYPE
和 NODE_MACHINE_TYPE
選項中設定節點機器的執行個體類型。依預設,這些設定也會用於工作負載叢集。最低組態為 2 個 CPU 和 8 GB 記憶體。相容的執行個體類型清單會因區域而異。
CONTROL_PLANE_MACHINE_TYPE: "t3.large"
NODE_MACHINE_TYPE: "m5.large"
您可以使用 SIZE
、CONTROLPLANE_SIZE
和 WORKER_SIZE
選項來覆寫這些設定。若要建立所有控制平面和工作節點虛擬機器大小相同的 Tanzu Kubernetes 叢集,請指定 SIZE
變數。如果您設定 SIZE
變數,將使用您設定的組態來建立所有節點。如需 Amazon EC2 各種不同大小的節點執行個體的組態資訊,請參閱 Amazon EC2 執行個體類型。
SIZE: "t3.large"
若要建立工作負載叢集,且其中含有不同大小的控制平面虛擬機器和工作節點虛擬機器,請指定 CONTROLPLANE_SIZE
和 WORKER_SIZE
選項。
CONTROLPLANE_SIZE: "t3.large"
WORKER_SIZE: "m5.xlarge"
您可以將 CONTROLPLANE_SIZE
和 WORKER_SIZE
選項與 SIZE
選項合併使用。例如,如果指定 SIZE: "t3.large"
和 WORKER_SIZE: "m5.xlarge"
,則會將控制平面節點設定為 t3.large
,將工作節點設定為 m5.xlarge
。
SIZE: "t3.large"
WORKER_SIZE: "m5.xlarge"
取消註解並更新下列資料列,以指定負責主控的 VPC 和其他 AWS 基礎結構,並供獨立管理叢集使用
AWS_REGION:
AWS_NODE_AZ:
AWS_PRIVATE_SUBNET_ID:
AWS_PUBLIC_SUBNET_ID:
AWS_SSH_KEY_NAME:
AWS_VPC_ID:
BASTION_HOST_ENABLED:
CONTROL_PLANE_MACHINE_TYPE:
NODE_MACHINE_TYPE:
SERVICE_CIDR:
CLUSTER_CIDR:
如果要部署生產管理叢集,另請針對其他兩個控制平面節點,取消註解並填入以下內容:
AWS_NODE_AZ_1:
AWS_NODE_AZ_2:
AWS_PRIVATE_SUBNET_ID_1:
AWS_PRIVATE_SUBNET_ID_2:
AWS_PUBLIC_SUBNET_ID_1:
AWS_PUBLIC_SUBNET_ID_2:
例如,現有 VPC 上的生產管理叢集的組態可能如下所示:
AWS_REGION: us-west-2
AWS_NODE_AZ: us-west-2a
AWS_NODE_AZ_1: us-west-2b
AWS_NODE_AZ_2: us-west-2c
AWS_PRIVATE_SUBNET_ID: subnet-ID
AWS_PRIVATE_SUBNET_ID_1: subnet-ID
AWS_PRIVATE_SUBNET_ID_2: subnet-ID
AWS_PUBLIC_SUBNET_ID: subnet-ID
AWS_PUBLIC_SUBNET_ID_1: subnet-ID
AWS_PUBLIC_SUBNET_ID_2: subnet-ID
AWS_SSH_KEY_NAME: tkg
AWS_VPC_ID: vpc-ID
BASTION_HOST_ENABLED: "true"
CONTROL_PLANE_MACHINE_TYPE: m5.large
NODE_MACHINE_TYPE: m5.large
SERVICE_CIDR: 100.64.0.0/13
CLUSTER_CIDR: 100.96.0.0/11
依預設,Tanzu Kubernetes Grid 會建立新的安全群組,以連接控制平面、工作節點和負載平衡器。如果需要自訂規則,您可以預先佈建安全群組,新增規則集,並將叢集設定為使用自訂安全群組,如下所述。
依預設,Tanzu Kubernetes Grid 會在 VPC 內建立五個安全群組。
若要防止 Tanzu Kubernetes Grid 建立新的安全群組,而改用具有自訂規則集的現有預先佈建安全群組,您可以:
將 AWS_SECURITY_GROUP_*
變數設定為安全群組名稱,以便在叢集組態檔中指定自訂安全群組。例如:
AWS_SECURITY_GROUP_BASTION: sg-12345
下面列出五個安全群組及其預設規則和對應的叢集組態變數:
群組:CLUSTER-NAME-bastion
使用叢集組態變數 AWS_SECURITY_GROUP_BASTION
來設定。
規則:
說明 | 通訊協定 | 從連接埠 | 到連接埠 | 允許入口來自 | 必要 |
---|---|---|---|---|---|
SSH | TCP | 22 | 22 | 0.0.0.0/0 | 否 |
群組:CLUSTER-NAME-node
使用叢集組態變數 AWS_SECURITY_GROUP_NODE
來設定。
規則:
說明 | 通訊協定 | 從連接埠 | 到連接埠 | 允許入口來自 | 必要 |
---|---|---|---|---|---|
SSH | TCP | 22 | 22 | 安全群組 <cluster-name>-bastion | 否 |
節點連接埠服務 | TCP | 30000 | 32767 | 0.0.0.0/0 | 否 (請參閱下方附註) |
Kubelet API | TCP | 10250 | 10250 | 安全群組 <cluster-name>-控制平面和 <cluster-name>-節點 | 是 |
Antrea CNI | TCP | 10349-10351 | 10349-10351 | 安全群組 <cluster-name>-節點 | 是 |
GENEVE | UDP | 6081 | 6081 | 安全群組 <cluster-name>-節點 | 是 |
附註0.0.0.0/0 是輸入,並且僅來自 VPC、對等 VPC 以及任何透過 VPN 或 DirectConnect 連線的網路。0.0.0.0/0 不應解譯為可從網際網路存取。只要是管理員,就可以同時變更節點連接埠服務的連接埠範圍和入口規則,而不用來使叢集正常運作。
群組:CLUSTER-NAME-controlplane
使用叢集組態變數 AWS_SECURITY_GROUP_CONTROLPLANE
來設定。
規則:
說明 | 通訊協定 | 從連接埠 | 到連接埠 | 允許入口來自 | 必要 |
---|---|---|---|---|---|
SSH | TCP | 22 | 22 | 安全群組 <cluster-name>-bastion | 否 |
Kubernetes API | TCP | 6443* | 6443* | 安全群組 <cluster-name>-apiserver-lb、<cluster-name>-apiserver-controlplane 和 <cluster-name>-apiserver-node | 是 |
etcd | TCP | 2379 | 2379 | 安全群組 <cluster-name>-controlplane | 是 |
etcd 對等 | TCP | 2380 | 2380 | 安全群組 <cluster-name>-controlplane | 是 |
addons-manager | TCP | 9865 | 9865 | 安全群組 <cluster-name>-controlplane | 是 |
kapp-controller | TCP | 10100 | 10100 | 安全群組 <cluster-name>-controlplane | 是 |
* 如果您設定 CLUSTER_API_SERVER_PORT
,請將 6443
取代為您在變數中設定的連接埠號碼。
群組:CLUSTER-NAME-apiserver-lb
使用叢集組態變數 AWS_SECURITY_GROUP_APISERVER_LB
來設定。
規則:
說明 | 通訊協定 | 從連接埠 | 到連接埠 | 允許入口來自 | 必要 |
---|---|---|---|---|---|
Kubernetes API | TCP | 6443* | 6443* | 0.0.0.0/0 | 否 (請參閱下方附註) |
* 如果您設定 CLUSTER_API_SERVER_PORT
,請將 6443
取代為您在變數中設定的連接埠號碼。
附註如果未指定成在內部佈建負載平衡器,依預設,0.0.0.0/0 規則可從網際網路存取。如果負載平衡器是內部負載平衡器,則必須可從管理叢集 (對於工作負載叢集) 或啟動機器 (對於管理叢集) 存取它。此規則可以鎖定,但如果鎖定,則必須新增以下規則:
說明 | 通訊協定 | 從連接埠 | 到連接埠 | 允許入口來自 | 必要 |
---|---|---|---|---|---|
叢集中的 Kubernetes API | TCP | 6443* | 6443* | 安全群組 <cluster-name>-控制平面和 <cluster-name>-節點 | 是 |
* 如果您設定 CLUSTER_API_SERVER_PORT
,請將 6443
取代為您在變數中設定的連接埠號碼。
群組:CLUSTER-NAME-lb
使用叢集組態變數 AWS_SECURITY_GROUP_LB
來設定。
此安全群組用於工作負載負載平衡器。不會在此安全群組中新增任何規則,AWS 管理員應根據應用程式工作負載需求來自訂規則集。
管理叢集組態檔更新完成後,請依照從組態檔來部署管理叢集中的指示來建立管理叢集。