要创建集群配置文件,您可以将先前部署的现有配置文件复制到 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 编码。默认情况下,Tanzu Kubernetes Grid on AWS 为管理集群的 Kubernetes API 服务器创建面向公众的负载均衡器。
对于 Internet 受限的环境(如气隙或代理),可以通过在集群配置文件中将 AWS_LOAD_BALANCER_SCHEME_INTERNAL
设置为 true
来避免创建面向公众的负载均衡器:
AWS_LOAD_BALANCER_SCHEME_INTERNAL: true
此设置可将管理集群的负载均衡器自定义为使用内部方案,这意味着将无法通过 Internet 访问和路由其 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 不应解释为可访问 Internet。只要是管理员,就可以同时更改节点端口服务的端口范围和输入规则,而不用于运行集群。
组: 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-控制平面和 <cluster-name>-apiserver-节点 | 是 |
etcd | TCP | 2379 | 2379 | 安全组 <cluster-name>-控制平面 | 是 |
etcd 对等 | TCP | 2380 | 2380 | 安全组 <cluster-name>-控制平面 | 是 |
addons-manager | TCP | 9865 | 9865 | 安全组 <cluster-name>-控制平面 | 是 |
kapp-controller | TCP | 10100 | 10100 | 安全组 <cluster-name>-控制平面 | 是 |
* 如果设置 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 规则可以访问 Internet。如果负载均衡器是内部负载均衡器,则必须可从管理集群(对于工作负载集群)或引导计算机(对于管理集群)访问该负载均衡器。此规则可以锁定,但如果锁定,则必须添加以下规则:
描述 | 协议 | 从端口 | 到端口 | 允许输入来自 | 强制性 |
---|---|---|---|---|---|
集群中的 Kubernetes API | TCP | 6443* | 6443* | 安全组 <cluster-name>-控制平面和 <cluster-name>-节点 | 是 |
* 如果设置 CLUSTER_API_SERVER_PORT
,请将 6443
替换为您在变量中设置的端口号。
组: CLUSTER-NAME-lb
使用集群配置变量 AWS_SECURITY_GROUP_LB
进行设置。
此安全组用于工作负载负载均衡器。不会向此安全组添加任何规则,AWS 管理员应根据应用程序工作负载需求自定义规则集。
更新完管理集群配置文件后,按照从配置文件部署管理集群中的说明创建管理集群。