$ ./openshift-install create install-config --dir <installation_directory> (1)
在 OpenShift Container Platform 4.17 版本中,您可以使用自定义网络配置选项在 Amazon Web Services (AWS) 上安装集群。通过自定义网络配置,您的集群可以与环境中现有的 IP 地址分配共存,并与现有的 MTU 和 VXLAN 配置集成。
您必须在安装期间设置大部分网络配置参数,并且只能在运行的集群中修改kubeProxy
配置参数。
您已查看有关OpenShift Container Platform 安装和更新流程的详细信息。
您已阅读有关选择集群安装方法并为用户准备集群的文档。
您已配置 AWS 账户来托管集群。
如果您在计算机上存储了 AWS 配置文件,则该配置文件不能使用您在使用多因素身份验证设备时生成的临时会话令牌。集群将继续使用您当前的 AWS 凭证来创建 AWS 资源,直到集群生命周期结束,因此您必须使用基于密钥的长期凭证。要生成合适的密钥,请参阅 AWS 文档中的管理 IAM 用户的访问密钥。您可以在运行安装程序时提供密钥。 |
如果您使用防火墙,则您已将其配置为允许集群需要访问的站点。
在 OpenShift Container Platform 安装之前,有两个阶段可以自定义网络配置。
在创建清单文件之前,您可以在install-config.yaml
文件中自定义以下与网络相关的字段:
networking.networkType
networking.clusterNetwork
networking.serviceNetwork
networking.machineNetwork
有关更多信息,请参阅“安装配置参数”。
将 |
CIDR 范围 |
通过运行openshift-install create manifests
创建清单文件后,您可以仅使用要修改的字段定义自定义的集群网络操作符清单。您可以使用该清单来指定高级网络配置。
在阶段 2 中,您不能覆盖在阶段 1 中install-config.yaml
文件中指定的 value。但是,您可以在阶段 2 中自定义网络插件。
您可以自定义在 Amazon Web Services (AWS) 上安装的 OpenShift Container Platform 集群。
您拥有 OpenShift Container Platform 安装程序和集群的拉取密钥。
创建install-config.yaml
文件。
更改到包含安装程序的目录,并运行以下命令:
$ ./openshift-install create install-config --dir <installation_directory> (1)
1 | 对于<installation_directory> ,请指定存储安装程序创建文件的目录名称。 |
指定目录时:
验证该目录是否具有execute
权限。此权限是安装目录下运行 Terraform 二进制文件所必需的。
使用空目录。某些安装资源(例如引导 X.509 证书)的过期时间间隔很短,因此您不能重复使用安装目录。如果您想从另一个集群安装中重复使用单个文件,您可以将它们复制到您的目录中。但是,安装资源的文件名可能会在不同版本之间发生变化。从早期 OpenShift Container Platform 版本复制安装文件时,请谨慎操作。
在提示符下,提供云的配置详细信息。
可选:选择一个 SSH 密钥来访问您的集群机器。
对于要执行安装调试或灾难恢复的生产 OpenShift Container Platform 集群,请指定您的 |
选择**AWS**作为目标平台。
如果您在计算机上没有存储 Amazon Web Services (AWS) 配置文件,请输入您配置的用于运行安装程序的用户 的 AWS 访问密钥 ID 和秘密访问密钥。
选择要部署集群的 AWS 区域。
为已为集群配置的 Route 53 服务选择基本域名。
输入集群的描述性名称。
修改install-config.yaml
文件。您可以在“安装配置参数”部分找到有关可用参数的更多信息。
备份install-config.yaml
文件,以便您可以使用它来安装多个集群。
|
每台集群机器必须满足以下最低要求:
机器 | 操作系统 | vCPU [1] | 虚拟 RAM | 存储 | 每秒输入/输出 (IOPS)[2] |
---|---|---|---|---|---|
引导程序 |
RHCOS |
4 |
16 GB |
100 GB |
300 |
控制平面 |
RHCOS |
4 |
16 GB |
100 GB |
300 |
计算 |
RHCOS,RHEL 8.6 及更高版本 [3] |
2 |
8 GB |
100 GB |
300 |
当未启用同时多线程 (SMT) 或超线程时,一个 vCPU 等于一个物理核心。启用时,请使用以下公式计算相应的比率:(每个核心的线程 × 核心)× 插槽 = vCPU。
OpenShift Container Platform 和 Kubernetes 对磁盘性能很敏感,建议使用更快的存储,特别是对于控制平面节点上的 etcd,它需要 10 毫秒 p99 fsync 时长。请注意,在许多云平台上,存储大小和 IOPS 是成比例的,因此您可能需要过度分配存储卷以获得足够的性能。
与所有用户配置的安装一样,如果您选择在集群中使用 RHEL 计算机器,则您将负责所有操作系统生命周期管理和维护,包括执行系统更新、应用补丁以及完成所有其他必需的任务。RHEL 7 计算机器的使用已弃用,并在 OpenShift Container Platform 4.10 及更高版本中已被移除。
从 OpenShift Container Platform 4.13 版本开始,RHCOS 基于 RHEL 9.2 版本,这更新了微架构要求。以下列表包含每种架构所需的最低指令集架构 (ISA):
更多信息,请参见 RHEL 架构。 |
如果您的平台的实例类型满足集群机器的最低要求,则支持在 OpenShift Container Platform 中使用。
以下 Amazon Web Services (AWS) 实例类型已通过 OpenShift Container Platform 测试。
请为您的 AWS 实例使用以下图表中包含的机器类型。如果您使用图表中未列出的实例类型,请确保您使用的实例大小与“集群安装的最低资源要求”部分中列出的最低资源要求相匹配。 |
c4.*
c5.*
c5a.*
i3.*
m4.*
m5.*
m5a.*
m6a.*
m6i.*
r4.*
r5.*
r5a.*
r6i.*
t3.*
t3a.*
以下 Amazon Web Services (AWS) 64 位 ARM 实例类型已通过 OpenShift Container Platform 测试。
请为您的 AWS ARM 实例使用以下图表中包含的机器类型。如果您使用图表中未列出的实例类型,请确保您使用的实例大小与“集群安装的最低资源要求”部分中列出的最低资源要求相匹配。 |
c6g.*
c7g.*
m6g.*
m7g.*
r8g.*
您可以自定义安装配置文件 (install-config.yaml
) 以指定有关 OpenShift Container Platform 集群平台的更多详细信息或修改所需参数的值。
此 YAML 文件示例仅供参考。您必须使用安装程序获取您的 |
apiVersion: v1
baseDomain: example.com (1)
credentialsMode: Mint (2)
controlPlane: (3) (4)
hyperthreading: Enabled (5)
name: master
platform:
aws:
zones:
- us-west-2a
- us-west-2b
rootVolume:
iops: 4000
size: 500
type: io1 (6)
metadataService:
authentication: Optional (7)
type: m6i.xlarge
replicas: 3
compute: (3)
- hyperthreading: Enabled (5)
name: worker
platform:
aws:
rootVolume:
iops: 2000
size: 500
type: io1 (6)
metadataService:
authentication: Optional (7)
type: c5.4xlarge
zones:
- us-west-2c
replicas: 3
metadata:
name: test-cluster (1)
networking: (3)
clusterNetwork:
- cidr: 10.128.0.0/14
hostPrefix: 23
machineNetwork:
- cidr: 10.0.0.0/16
networkType: OVNKubernetes (8)
serviceNetwork:
- 172.30.0.0/16
platform:
aws:
region: us-west-2 (1)
propagateUserTags: true (3)
userTags:
adminContact: jdoe
costCenter: 7536
amiID: ami-0c5d3e03c0ab9b19a (9)
serviceEndpoints: (10)
- name: ec2
url: https://vpce-id.ec2.us-west-2.vpce.amazonaws.com
fips: false (11)
sshKey: ssh-ed25519 AAAA... (12)
pullSecret: '{"auths": ...}' (1)
1 | 必需。安装程序会提示您输入此值。 | ||
2 | 可选:添加此参数以强制 Cloud Credential Operator (CCO) 使用指定的模式。默认情况下,CCO 使用 kube-system 命名空间中的 root 凭据来动态尝试确定凭据的功能。有关 CCO 模式的详细信息,请参阅《身份验证和授权》指南中的“关于 Cloud Credential Operator”部分。 |
||
3 | 如果您不提供这些参数和值,安装程序将提供默认值。 | ||
4 | controlPlane 部分是一个单映射,但 compute 部分是一系列映射。为了满足不同数据结构的要求,compute 部分的第一行必须以连字符 - 开头,而 controlPlane 部分的第一行则不能。仅使用一个控制平面池。 |
||
5 | 是否启用或禁用同时多线程处理或超线程。默认情况下,启用同时多线程处理以提高机器内核的性能。您可以将其设置为 Disabled 来禁用它。如果您在某些集群机器中禁用了同时多线程处理,则必须在所有集群机器中禁用它。
|
||
6 | 要为 etcd 配置更快的存储,特别是对于更大的集群,请将存储类型设置为 io1 并将 iops 设置为 2000 。 |
||
7 | 是否需要 Amazon EC2 实例元数据服务 v2 (IMDSv2)。要需要 IMDSv2,请将参数值设置为 Required 。要允许同时使用 IMDSv1 和 IMDSv2,请将参数值设置为 Optional 。如果未指定值,则允许使用 IMDSv1 和 IMDSv2。
|
||
8 | 要安装的集群网络插件。默认值 OVNKubernetes 是唯一支持的值。 |
||
9 | 用于引导集群机器的 AMI ID。如果设置,AMI 必须属于与集群相同的区域。 | ||
10 | AWS 服务端点。安装到未知 AWS 区域时需要自定义端点。端点 URL 必须使用 https 协议,并且主机必须信任证书。 |
||
11 | 是否启用或禁用 FIPS 模式。默认情况下,未启用 FIPS 模式。如果启用 FIPS 模式,则运行 OpenShift Container Platform 的 Red Hat Enterprise Linux CoreOS (RHCOS) 机器将绕过默认的 Kubernetes 密码套件,并改用随 RHCOS 提供的密码模块。
|
||
12 | 您可以选择提供用于访问集群中机器的 sshKey 值。
|
生产环境可能会拒绝直接访问互联网,而是提供 HTTP 或 HTTPS 代理。您可以通过在 install-config.yaml
文件中配置代理设置来配置新的 OpenShift Container Platform 集群以使用代理。
您拥有现有的 install-config.yaml
文件。
您已查看集群需要访问的站点,并确定其中任何站点是否需要绕过代理。默认情况下,所有集群出站流量都将被代理,包括对托管云提供商 API 的调用。如有必要,您已将站点添加到 Proxy
对象的 spec.noProxy
字段以绕过代理。
对于在 Amazon Web Services (AWS)、Google Cloud Platform (GCP)、Microsoft Azure 和 Red Hat OpenStack Platform (RHOSP) 上的安装, |
编辑您的 install-config.yaml
文件并添加代理设置。例如
apiVersion: v1
baseDomain: my.domain.com
proxy:
httpProxy: http://<username>:<pswd>@<ip>:<port> (1)
httpsProxy: https://<username>:<pswd>@<ip>:<port> (2)
noProxy: ec2.<aws_region>.amazonaws.com,elasticloadbalancing.<aws_region>.amazonaws.com,s3.<aws_region>.amazonaws.com (3)
additionalTrustBundle: | (4)
-----BEGIN CERTIFICATE-----
<MY_TRUSTED_CA_CERT>
-----END CERTIFICATE-----
additionalTrustBundlePolicy: <policy_to_add_additionalTrustBundle> (5)
1 | 用于创建集群外部 HTTP 连接的代理 URL。URL 方案必须为 http 。 |
2 | 用于在集群外部创建 HTTPS 连接的代理 URL。 |
3 | 要从代理中排除的目标域名、IP 地址或其他网络 CIDR 的逗号分隔列表。用. 作为域名前缀仅匹配子域名。例如,.y.com 匹配 x.y.com ,但不匹配 y.com 。使用* 绕过所有目标的代理。如果您已将 Amazon 的EC2 、Elastic Load Balancing 和S3 VPC 端点添加到您的 VPC,则必须将这些端点添加到noProxy 字段。 |
4 | 如果提供,安装程序将生成一个名为user-ca-bundle 的配置映射,该映射位于openshift-config 命名空间中,其中包含一个或多个用于代理 HTTPS 连接的附加 CA 证书。集群网络操作员然后创建一个trusted-ca-bundle 配置映射,将这些内容与 Red Hat Enterprise Linux CoreOS (RHCOS) 信任捆绑包合并,并在Proxy 对象的trustedCA 字段中引用此配置映射。除非代理的身份证书由 RHCOS 信任捆绑包中的权威机构签名,否则需要additionalTrustBundle 字段。 |
5 | 可选:确定Proxy 对象的配置以在trustedCA 字段中引用user-ca-bundle 配置映射的策略。允许的值为Proxyonly 和Always 。使用Proxyonly 仅在配置了http/https 代理时才引用user-ca-bundle 配置映射。使用Always 始终引用user-ca-bundle 配置映射。默认值为Proxyonly 。 |
安装程序不支持代理 |
如果安装程序超时,请重启,然后使用安装程序的
|
保存文件并在安装 OpenShift Container Platform 时引用它。
安装程序创建一个名为cluster
的集群范围代理,该代理使用提供的install-config.yaml
文件中的代理设置。如果没有提供代理设置,仍然会创建cluster
Proxy
对象,但它将具有 nil spec
。
仅支持名为 |
默认情况下,管理员密钥存储在kube-system
项目中。如果您在install-config.yaml
文件中将credentialsMode
参数配置为Manual
,则必须使用以下替代方法之一
要手动管理长期云凭据,请按照手动创建长期凭据中的步骤操作。
要实现由集群外部为各个组件管理的短期凭据,请按照配置 AWS 集群以使用短期凭据中的步骤操作。
在无法访问云身份和访问管理 (IAM) API 或管理员更倾向于不在集群kube-system
命名空间中存储管理员级凭据密钥的环境中,可以在安装之前将云凭据操作员 (CCO) 置于手动模式。
如果您未在install-config.yaml
配置文件中将credentialsMode
参数设置为Manual
,请修改该值,如下所示
apiVersion: v1
baseDomain: example.com
credentialsMode: Manual
# ...
如果您以前没有创建安装清单文件,请运行以下命令来创建:
$ openshift-install create manifests --dir <installation_directory>
其中<installation_directory>
是安装程序创建文件的目录。
通过运行以下命令,使用安装文件中的发行版镜像设置$RELEASE_IMAGE
变量:
$ RELEASE_IMAGE=$(./openshift-install version | awk '/release image/ {print $3}')
通过运行以下命令,从 OpenShift Container Platform 发行版镜像中提取CredentialsRequest
自定义资源 (CR) 列表:
$ oc adm release extract \
--from=$RELEASE_IMAGE \
--credentials-requests \
--included \(1)
--install-config=<path_to_directory_with_installation_configuration>/install-config.yaml \(2)
--to=<path_to_directory_for_credentials_requests> (3)
1 | --included 参数仅包含您的特定集群配置所需的清单。 |
2 | 指定install-config.yaml 文件的位置。 |
3 | 指定要存储CredentialsRequest 对象的目录的路径。如果指定的目录不存在,此命令将创建它。 |
此命令将为每个CredentialsRequest
对象创建一个 YAML 文件。
CredentialsRequest
对象apiVersion: cloudcredential.openshift.io/v1
kind: CredentialsRequest
metadata:
name: <component_credentials_request>
namespace: openshift-cloud-credential-operator
...
spec:
providerSpec:
apiVersion: cloudcredential.openshift.io/v1
kind: AWSProviderSpec
statementEntries:
- effect: Allow
action:
- iam:GetUser
- iam:GetUserPolicy
- iam:ListAccessKeys
resource: "*"
...
为之前生成的openshift-install
清单目录中的密钥创建 YAML 文件。必须使用每个CredentialsRequest
对象中spec.secretRef
定义的命名空间和密钥名称来存储密钥。
CredentialsRequest
对象apiVersion: cloudcredential.openshift.io/v1
kind: CredentialsRequest
metadata:
name: <component_credentials_request>
namespace: openshift-cloud-credential-operator
...
spec:
providerSpec:
apiVersion: cloudcredential.openshift.io/v1
kind: AWSProviderSpec
statementEntries:
- effect: Allow
action:
- s3:CreateBucket
- s3:DeleteBucket
resource: "*"
...
secretRef:
name: <component_secret>
namespace: <component_namespace>
...
Secret
对象apiVersion: v1
kind: Secret
metadata:
name: <component_secret>
namespace: <component_namespace>
data:
aws_access_key_id: <base64_encoded_aws_access_key_id>
aws_secret_access_key: <base64_encoded_aws_secret_access_key>
在升级使用手动维护的凭据的集群之前,必须确保 CCO 处于可升级状态。 |
要安装配置为使用 AWS 安全令牌服务 (STS) 的集群,必须配置 CCO 实用程序并为您的集群创建所需的 AWS 资源。
当云凭据操作员 (CCO) 以手动模式运行时,要从集群外部创建和管理云凭据,请提取并准备 CCO 实用程序 (ccoctl
) 二进制文件。
|
您可以访问具有集群管理员访问权限的 OpenShift Container Platform 帐户。
您已安装 OpenShift CLI (oc
)。
您已为ccoctl
实用程序创建了一个 AWS 帐户,并具有以下权限:
所需的iam
权限
iam:CreateOpenIDConnectProvider
iam:CreateRole
iam:DeleteOpenIDConnectProvider
iam:DeleteRole
iam:DeleteRolePolicy
iam:GetOpenIDConnectProvider
iam:GetRole
iam:GetUser
iam:ListOpenIDConnectProviders
iam:ListRolePolicies
iam:ListRoles
iam:PutRolePolicy
iam:TagOpenIDConnectProvider
iam:TagRole
所需的s3
权限
s3:CreateBucket
s3:DeleteBucket
s3:DeleteObject
s3:GetBucketAcl
s3:GetBucketTagging
s3:GetObject
s3:GetObjectAcl
s3:GetObjectTagging
s3:ListBucket
s3:PutBucketAcl
s3:PutBucketPolicy
s3:PutBucketPublicAccessBlock
s3:PutBucketTagging
s3:PutObject
s3:PutObjectAcl
s3:PutObjectTagging
所需的cloudfront
权限
cloudfront:ListCloudFrontOriginAccessIdentities
cloudfront:ListDistributions
cloudfront:ListTagsForResource
如果您计划将OIDC配置存储在私有S3存储桶中,并通过公共CloudFront分发URL由IAM身份提供商访问,则运行ccoctl
实用程序的AWS账户需要以下额外权限
cloudfront:CreateCloudFrontOriginAccessIdentity
cloudfront:CreateDistribution
cloudfront:DeleteCloudFrontOriginAccessIdentity
cloudfront:DeleteDistribution
cloudfront:GetCloudFrontOriginAccessIdentity
cloudfront:GetCloudFrontOriginAccessIdentityConfig
cloudfront:GetDistribution
cloudfront:TagResource
cloudfront:UpdateDistribution
这些额外的权限支持在使用 |
通过运行以下命令设置OpenShift Container Platform发行版镜像的变量
$ RELEASE_IMAGE=$(./openshift-install version | awk '/release image/ {print $3}')
通过运行以下命令从OpenShift Container Platform发行版镜像中获取CCO容器镜像
$ CCO_IMAGE=$(oc adm release info --image-for='cloud-credential-operator' $RELEASE_IMAGE -a ~/.pull-secret)
确保 |
通过运行以下命令从OpenShift Container Platform发行版镜像中的CCO容器镜像中提取ccoctl
二进制文件
$ oc image extract $CCO_IMAGE \
--file="/usr/bin/ccoctl.<rhel_version>" \(1)
-a ~/.pull-secret
1 | 对于<rhel_version> ,请指定与主机使用的Red Hat Enterprise Linux (RHEL)版本相对应的值。如果未指定值,则默认使用ccoctl.rhel8 。有效值为:
|
通过运行以下命令更改权限以使ccoctl
可执行
$ chmod 775 ccoctl.<rhel_version>
要验证ccoctl
是否已准备好使用,请显示帮助文件。运行命令时使用相对文件名,例如
$ ./ccoctl.rhel9
OpenShift credentials provisioning tool
Usage:
ccoctl [command]
Available Commands:
aws Manage credentials objects for AWS cloud
azure Manage credentials objects for Azure
gcp Manage credentials objects for Google cloud
help Help about any command
ibmcloud Manage credentials objects for {ibm-cloud-title}
nutanix Manage credentials objects for Nutanix
Flags:
-h, --help help for ccoctl
Use "ccoctl [command] --help" for more information about a command.
创建AWS资源时,您可以选择以下选项:
您可以使用ccoctl aws create-all
命令自动创建AWS资源。这是创建资源最快的方法。请参阅使用单个命令创建AWS资源。
如果您需要在修改AWS资源之前查看ccoctl
工具创建的JSON文件,或者ccoctl
工具用于自动创建AWS资源的过程不符合您组织的要求,则可以单独创建AWS资源。请参阅单独创建AWS资源。
如果ccoctl
工具用于自动创建AWS资源的过程符合您组织的要求,则可以使用ccoctl aws create-all
命令自动创建AWS资源。
否则,您可以单独创建AWS资源。有关更多信息,请参阅“单独创建AWS资源”。
默认情况下, |
您必须:
已提取并准备ccoctl
二进制文件。
通过运行以下命令,使用安装文件中的发行版镜像设置$RELEASE_IMAGE
变量:
$ RELEASE_IMAGE=$(./openshift-install version | awk '/release image/ {print $3}')
通过运行以下命令从OpenShift Container Platform发行版镜像中提取CredentialsRequest
对象的列表
$ oc adm release extract \
--from=$RELEASE_IMAGE \
--credentials-requests \
--included \(1)
--install-config=<path_to_directory_with_installation_configuration>/install-config.yaml \(2)
--to=<path_to_directory_for_credentials_requests> (3)
1 | --included 参数仅包含您的特定集群配置所需的清单。 |
2 | 指定install-config.yaml 文件的位置。 |
3 | 指定要存储CredentialsRequest 对象的目录的路径。如果指定的目录不存在,此命令将创建它。 |
此命令可能需要几分钟才能运行。 |
使用ccoctl
工具处理所有CredentialsRequest
对象,运行以下命令:
$ ccoctl aws create-all \
--name=<name> \(1)
--region=<aws_region> \(2)
--credentials-requests-dir=<path_to_credentials_requests_directory> \(3)
--output-dir=<path_to_ccoctl_output_dir> \(4)
--create-private-s3-bucket (5)
1 | 指定用于标记为跟踪而创建的任何云资源的名称。 |
2 | 指定将创建云资源的AWS区域。 |
3 | 指定包含组件CredentialsRequest 对象文件的目录。 |
4 | 可选:指定您希望ccoctl 实用程序创建对象的目录。默认情况下,该实用程序在运行命令的目录中创建对象。 |
5 | 可选:默认情况下,ccoctl 实用程序将OpenID Connect (OIDC)配置文件存储在公共S3存储桶中,并将S3 URL用作公共OIDC端点。要改为将OIDC配置存储在私有S3存储桶中,并通过公共CloudFront分发URL由IAM身份提供商访问,请使用--create-private-s3-bucket 参数。 |
如果您的集群使用由 |
要验证OpenShift Container Platform密钥是否已创建,请列出<path_to_ccoctl_output_dir>/manifests
目录中的文件
$ ls <path_to_ccoctl_output_dir>/manifests
cluster-authentication-02-config.yaml
openshift-cloud-credential-operator-cloud-credential-operator-iam-ro-creds-credentials.yaml
openshift-cloud-network-config-controller-cloud-credentials-credentials.yaml
openshift-cluster-api-capa-manager-bootstrap-credentials-credentials.yaml
openshift-cluster-csi-drivers-ebs-cloud-credentials-credentials.yaml
openshift-image-registry-installer-cloud-credentials-credentials.yaml
openshift-ingress-operator-cloud-credentials-credentials.yaml
openshift-machine-api-aws-cloud-credentials-credentials.yaml
您可以通过查询AWS来验证IAM角色是否已创建。有关更多信息,请参阅有关列出IAM角色的AWS文档。
您可以使用ccoctl
工具单独创建AWS资源。此选项可能对在不同用户或部门之间共享创建这些资源责任的组织很有用。
否则,您可以使用ccoctl aws create-all
命令自动创建AWS资源。有关更多信息,请参阅“使用单个命令创建AWS资源”。
默认情况下, 某些 |
提取并准备ccoctl
二进制文件。
通过运行以下命令生成用于为集群设置OpenID Connect提供程序的公共和私有RSA密钥文件
$ ccoctl aws create-key-pair
2021/04/13 11:01:02 Generating RSA keypair
2021/04/13 11:01:03 Writing private key to /<path_to_ccoctl_output_dir>/serviceaccount-signer.private
2021/04/13 11:01:03 Writing public key to /<path_to_ccoctl_output_dir>/serviceaccount-signer.public
2021/04/13 11:01:03 Copying signing key for use by installer
其中serviceaccount-signer.private
和serviceaccount-signer.public
是生成的密钥文件。
此命令还会在/<path_to_ccoctl_output_dir>/tls/bound-service-account-signing-key.key
中创建一个集群在安装期间需要的私钥。
通过运行以下命令在AWS上创建一个OpenID Connect身份提供程序和S3存储桶
$ ccoctl aws create-identity-provider \
--name=<name> \(1)
--region=<aws_region> \(2)
--public-key-file=<path_to_ccoctl_output_dir>/serviceaccount-signer.public (3)
1 | <name> 是用于标记为跟踪而创建的任何云资源的名称。 |
2 | <aws-region> 是将创建云资源的AWS区域。 |
3 | <path_to_ccoctl_output_dir> 是ccoctl aws create-key-pair 命令生成的公钥文件的路径。 |
2021/04/13 11:16:09 Bucket <name>-oidc created
2021/04/13 11:16:10 OpenID Connect discovery document in the S3 bucket <name>-oidc at .well-known/openid-configuration updated
2021/04/13 11:16:10 Reading public key
2021/04/13 11:16:10 JSON web key set (JWKS) in the S3 bucket <name>-oidc at keys.json updated
2021/04/13 11:16:18 Identity Provider created with ARN: arn:aws:iam::<aws_account_id>:oidc-provider/<name>-oidc.s3.<aws_region>.amazonaws.com
其中openid-configuration
是发现文档,keys.json
是JSON Web密钥集文件。
此命令还会在/<path_to_ccoctl_output_dir>/manifests/cluster-authentication-02-config.yaml
中创建一个YAML配置文件。此文件设置集群生成的Service Account令牌的发行者URL字段,以便AWS IAM身份提供程序信任这些令牌。
为集群中的每个组件创建IAM角色
通过运行以下命令,使用安装文件中的发行版镜像设置$RELEASE_IMAGE
变量:
$ RELEASE_IMAGE=$(./openshift-install version | awk '/release image/ {print $3}')
从OpenShift Container Platform发行版镜像中提取CredentialsRequest
对象的列表
$ oc adm release extract \
--from=$RELEASE_IMAGE \
--credentials-requests \
--included \(1)
--install-config=<path_to_directory_with_installation_configuration>/install-config.yaml \(2)
--to=<path_to_directory_for_credentials_requests> (3)
1 | --included 参数仅包含您的特定集群配置所需的清单。 |
2 | 指定install-config.yaml 文件的位置。 |
3 | 指定要存储CredentialsRequest 对象的目录的路径。如果指定的目录不存在,此命令将创建它。 |
使用ccoctl
工具处理所有CredentialsRequest
对象,运行以下命令:
$ ccoctl aws create-iam-roles \
--name=<name> \
--region=<aws_region> \
--credentials-requests-dir=<path_to_credentials_requests_directory> \
--identity-provider-arn=arn:aws:iam::<aws_account_id>:oidc-provider/<name>-oidc.s3.<aws_region>.amazonaws.com
对于使用替代IAM API端点(例如GovCloud)的AWS环境,您还必须使用 如果您的集群使用由 |
对于每个CredentialsRequest
对象,ccoctl
都会创建一个IAM角色,该角色具有与指定的OIDC身份提供商绑定的信任策略,以及在OpenShift Container Platform发行版镜像的每个CredentialsRequest
对象中定义的权限策略。
要验证OpenShift Container Platform密钥是否已创建,请列出<path_to_ccoctl_output_dir>/manifests
目录中的文件
$ ls <path_to_ccoctl_output_dir>/manifests
cluster-authentication-02-config.yaml
openshift-cloud-credential-operator-cloud-credential-operator-iam-ro-creds-credentials.yaml
openshift-cloud-network-config-controller-cloud-credentials-credentials.yaml
openshift-cluster-api-capa-manager-bootstrap-credentials-credentials.yaml
openshift-cluster-csi-drivers-ebs-cloud-credentials-credentials.yaml
openshift-image-registry-installer-cloud-credentials-credentials.yaml
openshift-ingress-operator-cloud-credentials-credentials.yaml
openshift-machine-api-aws-cloud-credentials-credentials.yaml
您可以通过查询AWS来验证IAM角色是否已创建。有关更多信息,请参阅有关列出IAM角色的AWS文档。
要实现对单个组件进行集群外部管理的短期安全凭据,必须将Cloud Credential Operator实用程序(ccoctl
)创建的清单文件移动到安装程序的正确目录。
您已配置了一个帐户,该帐户与托管您的集群的云平台连接。
您已配置Cloud Credential Operator实用程序(ccoctl
)。
您已使用ccoctl
实用程序创建了集群所需的云提供商资源。
如果您未在install-config.yaml
配置文件中将credentialsMode
参数设置为Manual
,请修改该值,如下所示
apiVersion: v1
baseDomain: example.com
credentialsMode: Manual
# ...
如果您以前没有创建安装清单文件,请运行以下命令来创建:
$ openshift-install create manifests --dir <installation_directory>
其中<installation_directory>
是安装程序创建文件的目录。
通过运行以下命令,将ccoctl
实用程序生成的清单复制到安装程序创建的manifests
目录
$ cp /<path_to_ccoctl_output_dir>/manifests/* ./manifests/
将包含私钥的tls
目录复制到安装目录
$ cp -a /<path_to_ccoctl_output_dir>/tls .
集群网络的配置作为集群网络操作员(CNO)配置的一部分指定,并存储在一个名为cluster
的自定义资源(CR)对象中。CR指定operator.openshift.io
API组中Network
API的字段。
在集群安装期间,CNO配置从Network.config.openshift.io
API组中的Network
API继承以下字段
clusterNetwork
分配Pod IP地址的IP地址池。
serviceNetwork
服务的IP地址池。
defaultNetwork.type
集群网络插件。在安装过程中,唯一支持的插件是OVNKubernetes
。
您可以通过设置名为cluster
的CNO对象中defaultNetwork
对象的字段来指定集群的集群网络插件配置。
集群网络操作员(CNO)的字段在以下表格中描述
字段 | 类型 | 描述 |
---|---|---|
|
|
CNO对象的名称。此名称始终为 |
|
|
一个列表,指定分配Pod IP地址的IP地址块以及分配给集群中每个节点的子网前缀长度。例如
|
|
|
服务的IP地址块。OVN-Kubernetes网络插件仅支持服务网络的单个IP地址块。例如
您只能在创建清单之前在 |
|
|
配置集群网络的网络插件。 |
|
|
此对象的字段指定kube-proxy配置。如果您使用的是OVN-Kubernetes集群网络插件,则kube-proxy配置无效。 |
对于需要跨多个网络部署对象的集群,请确保为 |
defaultNetwork
对象的取值在以下表格中定义
字段 | 类型 | 描述 | ||
---|---|---|---|---|
|
|
|
||
|
|
此对象仅对OVN-Kubernetes网络插件有效。 |
下表描述了OVN-Kubernetes网络插件的配置字段
字段 | 类型 | 描述 | ||
---|---|---|---|---|
|
|
Geneve(通用网络虚拟化封装)覆盖网络的最大传输单元 (MTU)。这会根据主网络接口的MTU自动检测。您通常不需要覆盖检测到的MTU。 如果自动检测到的值与您预期值不符,请确认节点上主网络接口上的MTU是否正确。您不能使用此选项更改节点上主网络接口的MTU值。 如果您的集群需要为不同的节点使用不同的MTU值,则必须将此值设置为集群中最低MTU值减去 |
||
|
|
用于所有Geneve数据包的端口。默认值为 |
||
|
|
指定一个配置对象以自定义IPsec配置。 |
||
|
|
指定IPv4设置的配置对象。 |
||
|
|
指定IPv6设置的配置对象。 |
||
|
|
指定一个配置对象以自定义网络策略审计日志记录。如果未设置,则使用默认审计日志设置。 |
||
|
|
可选:指定一个配置对象以自定义如何将出站流量发送到节点网关。
|
字段 | 类型 | 描述 |
---|---|---|
|
字符串 |
如果您的现有网络基础设施与 默认值为 |
|
字符串 |
如果现有网络基础设施与 默认值为 |
字段 | 类型 | 描述 |
---|---|---|
|
字符串 |
如果现有网络基础设施与 默认值为 |
|
字符串 |
如果现有网络基础设施与 默认值为 |
字段 | 类型 | 描述 |
---|---|---|
|
整数 |
每个节点每秒生成的最多消息数。默认值为每秒 |
|
整数 |
审计日志的最大大小(字节)。默认值为 |
|
整数 |
保留的最大日志文件数。 |
|
字符串 |
以下附加审计日志目标之一
|
|
字符串 |
syslog 设施,例如 |
字段 | 类型 | 描述 |
---|---|---|
|
|
将此字段设置为 此字段与 Open vSwitch 硬件卸载功能存在交互。如果将此字段设置为 |
|
|
您可以使用 |
|
|
可选:指定一个对象来配置用于 IPv4 地址的主机到服务的内部 OVN-Kubernetes 伪装地址。 |
|
|
可选:指定一个对象来配置用于 IPv6 地址的主机到服务的内部 OVN-Kubernetes 伪装地址。 |
字段 | 类型 | 描述 | ||
---|---|---|---|---|
|
|
在内部使用的伪装 IPv4 地址,用于启用主机到服务的流量。主机也配置了这些 IP 地址以及共享网关桥接接口。默认值为
|
字段 | 类型 | 描述 | ||
---|---|---|---|---|
|
|
在内部使用的伪装 IPv6 地址,用于启用主机到服务的流量。主机也配置了这些 IP 地址以及共享网关桥接接口。默认值为
|
字段 | 类型 | 描述 |
---|---|---|
|
|
指定 IPsec 实现的行为。必须是以下值之一
|
defaultNetwork:
type: OVNKubernetes
ovnKubernetesConfig:
mtu: 1400
genevePort: 6081
ipsecConfig:
mode: Full
您可以将高级网络配置用于您的网络插件,以将您的集群集成到您现有的网络环境中。
您只能在安装集群之前指定高级网络配置。
不支持通过修改安装程序创建的 OpenShift Container Platform 清单文件来自定义网络配置。支持应用您创建的清单文件,如以下过程所示。 |
您已创建install-config.yaml
文件并完成了对其的任何修改。
更改到包含安装程序的目录并创建清单
$ ./openshift-install create manifests --dir <installation_directory> (1)
1 | <installation_directory> 指定包含集群install-config.yaml 文件的目录的名称。 |
为高级网络配置创建一个存根清单文件,该文件名为cluster-network-03-config.yml
,位于<installation_directory>/manifests/
目录中
apiVersion: operator.openshift.io/v1
kind: Network
metadata:
name: cluster
spec:
在cluster-network-03-config.yml
文件中指定集群的高级网络配置,例如以下示例
apiVersion: operator.openshift.io/v1
kind: Network
metadata:
name: cluster
spec:
defaultNetwork:
ovnKubernetesConfig:
ipsecConfig:
mode: Full
可选:备份manifests/cluster-network-03-config.yml
文件。当您创建 Ignition 配置文件时,安装程序会使用manifests/
目录。
有关在 AWS 上使用网络负载均衡器 (NLB) 的更多信息,请参见 使用网络负载均衡器配置 AWS 上的 Ingress 集群流量。 |
您可以在新集群上创建由 AWS 网络负载均衡器 (NLB) 支持的 Ingress Controller。
创建install-config.yaml
文件并完成任何修改。
在新集群上创建由 AWS NLB 支持的 Ingress Controller。
更改到包含安装程序的目录并创建清单
$ ./openshift-install create manifests --dir <installation_directory> (1)
1 | 对于<installation_directory> ,请指定包含集群install-config.yaml 文件的目录名称。 |
在<installation_directory>/manifests/
目录中创建一个名为cluster-ingress-default-ingresscontroller.yaml
的文件。
$ touch <installation_directory>/manifests/cluster-ingress-default-ingresscontroller.yaml (1)
1 | 对于<installation_directory> ,请指定包含集群manifests/ 目录的目录名称。 |
创建文件后,manifests/
目录中将包含多个网络配置文件,如下所示
$ ls <installation_directory>/manifests/cluster-ingress-default-ingresscontroller.yaml
cluster-ingress-default-ingresscontroller.yaml
在编辑器中打开cluster-ingress-default-ingresscontroller.yaml
文件,并输入描述所需 Operator 配置的自定义资源 (CR)。
apiVersion: operator.openshift.io/v1
kind: IngressController
metadata:
creationTimestamp: null
name: default
namespace: openshift-ingress-operator
spec:
endpointPublishingStrategy:
loadBalancer:
scope: External
providerParameters:
type: AWS
aws:
type: NLB
type: LoadBalancerService
保存cluster-ingress-default-ingresscontroller.yaml
文件并退出文本编辑器。
可选:备份manifests/cluster-ingress-default-ingresscontroller.yaml
文件。安装程序在创建集群时会删除manifests/
目录。
您可以将集群配置为使用 OVN-Kubernetes 网络插件的混合网络。这允许支持不同节点网络配置的混合集群。
此配置对于在同一集群中运行 Linux 和 Windows 节点是必需的。 |
您在install-config.yaml
文件中为networking.networkType
参数定义了OVNKubernetes
。有关在您选择的云提供商上配置 OpenShift Container Platform 网络自定义的更多信息,请参阅安装文档。
更改到包含安装程序的目录并创建清单
$ ./openshift-install create manifests --dir <installation_directory>
其中
<installation_directory>
指定包含集群install-config.yaml
文件的目录名称。
为高级网络配置创建一个存根清单文件,该文件名为cluster-network-03-config.yml
,位于<installation_directory>/manifests/
目录中
$ cat <<EOF > <installation_directory>/manifests/cluster-network-03-config.yml
apiVersion: operator.openshift.io/v1
kind: Network
metadata:
name: cluster
spec:
EOF
其中
<installation_directory>
指定包含manifests/
目录的目录名称。
在编辑器中打开cluster-network-03-config.yml
文件,并按照以下示例配置使用混合网络的 OVN-Kubernetes
apiVersion: operator.openshift.io/v1
kind: Network
metadata:
name: cluster
spec:
defaultNetwork:
ovnKubernetesConfig:
hybridOverlayConfig:
hybridClusterNetwork: (1)
- cidr: 10.132.0.0/14
hostPrefix: 23
hybridOverlayVXLANPort: 9898 (2)
1 | 指定用于附加覆盖网络上节点的 CIDR 配置。hybridClusterNetwork CIDR 必须与clusterNetwork CIDR 不重叠。 |
2 | 为附加覆盖网络指定自定义 VXLAN 端口。这对于在 vSphere 上安装的集群中运行 Windows 节点是必需的,并且不能为任何其他云提供商配置。自定义端口可以是任何开放端口,但不包括默认的4789 端口。有关此要求的更多信息,请参阅 Microsoft 文档 主机之间的 Pod 到 Pod 连接在我的 Kubernetes 集群上中断。 |
Windows Server 长期服务通道 (LTSC):对于具有自定义 |
保存cluster-network-03-config.yml
文件并退出文本编辑器。
可选:备份manifests/cluster-network-03-config.yml
文件。安装程序在创建集群时会删除manifests/
目录。
有关在同一集群中使用 Linux 和 Windows 节点的更多信息,请参阅 了解 Windows 容器工作负载。 |
您可以在兼容的云平台上安装 OpenShift Container Platform。
您只能在初始安装期间运行安装程序的 |
您已配置了一个帐户,该帐户与托管您的集群的云平台连接。
您拥有 OpenShift Container Platform 安装程序和集群的拉取密钥。
您已验证主机上的云提供商帐户具有部署集群的正确权限。权限错误的帐户会导致安装过程失败,并显示一条显示缺少权限的错误消息。
切换到包含安装程序的目录并初始化集群部署
$ ./openshift-install create cluster --dir <installation_directory> \ (1)
--log-level=info (2)
1 | 对于<installation_directory> ,请指定您自定义的./install-config.yaml 文件的位置。 |
2 | 要查看不同的安装详细信息,请指定warn 、debug 或error 代替info 。 |
可选:从用于安装集群的 IAM 帐户中删除或禁用AdministratorAccess
策略。
只有在安装过程中才需要 |
当集群部署成功完成时
终端将显示访问集群的方向,包括指向 Web 控制台的链接和kubeadmin
用户的凭据。
凭据信息也会输出到<installation_directory>/.openshift_install.log
。
不要删除安装程序或安装程序创建的文件。两者都是删除集群所必需的。 |
...
INFO Install complete!
INFO To access the cluster as the system:admin user when using 'oc', run 'export KUBECONFIG=/home/myuser/install_dir/auth/kubeconfig'
INFO Access the OpenShift web-console here: https://console-openshift-console.apps.mycluster.example.com
INFO Login to the console with user: "kubeadmin", and password: "password"
INFO Time elapsed: 36m22s
|
您可以通过导出集群kubeconfig
文件以默认系统用户身份登录到集群。kubeconfig
文件包含集群信息,CLI 使用这些信息将客户端连接到正确的集群和 API 服务器。该文件特定于一个集群,并在 OpenShift Container Platform 安装期间创建。
您部署了一个 OpenShift Container Platform 集群。
您安装了oc
CLI。
导出kubeadmin
凭据
$ export KUBECONFIG=<installation_directory>/auth/kubeconfig (1)
1 | 对于<installation_directory> ,请指定您存储安装文件的目录的路径。 |
验证您可以使用导出的配置成功运行oc
命令
$ oc whoami
system:admin
安装 OpenShift Container Platform 后,默认情况下会存在kubeadmin
用户。您可以使用 OpenShift Container Platform Web 控制台以kubeadmin
用户身份登录集群。
您可以访问安装主机。
您已完成集群安装,并且所有集群操作员都可用。
从安装主机上的kubeadmin-password
文件中获取kubeadmin
用户的密码。
$ cat <installation_directory>/auth/kubeadmin-password
或者,您可以从安装主机上的 |
列出 OpenShift Container Platform Web 控制台路由。
$ oc get routes -n openshift-console | grep 'console-openshift'
或者,您可以从安装主机上的 |
console console-openshift-console.apps.<cluster_name>.<base_domain> console https reencrypt/Redirect None
在 Web 浏览器中导航到前面命令输出中详细说明的路由,并以kubeadmin
用户身份登录。
有关访问和了解 OpenShift Container Platform Web 控制台的更多详细信息,请参见访问 Web 控制台。
验证安装.
如有必要,您可以选择退出远程健康报告。
如有必要,您可以删除云提供商凭据。