5.2. AWS Load Balancer Operator
5.2.1. AWS Load Balancer Operator 发行注记 复制链接链接已复制到粘贴板!
AWS Load Balancer (ALB) Operator 部署和管理 AWSLoadBalancerController
资源的实例。
AWS Load Balancer (ALB) Operator 仅在 x86_64
构架中被支持。
本发行注记介绍了 OpenShift Container Platform 中的 AWS Load Balancer Operator 的开发。
如需 AWS Load Balancer Operator 的概述,请参阅 OpenShift Container Platform 中的 AWS Load Balancer Operator。
AWS Load Balancer Operator 目前不支持 AWS GovCloud。
5.2.1.1. AWS Load Balancer Operator 1.2.0 复制链接链接已复制到粘贴板!
以下公告可用于 AWS Load Balancer Operator 版本 1.2.0 :
5.2.1.1.1. 主要变化 复制链接链接已复制到粘贴板!
- 此发行版本支持 AWS Load Balancer Controller 版本 2.8.2。
-
在这个版本中,
Infrastructure
资源中定义的平台标签将添加到控制器创建的所有 AWS 对象中。
5.2.1.2. AWS Load Balancer Operator 1.1.1 复制链接链接已复制到粘贴板!
以下公告可用于 AWS Load Balancer Operator 版本 1.1.1:
5.2.1.3. AWS Load Balancer Operator 1.1.0 复制链接链接已复制到粘贴板!
AWS Load Balancer Operator 版本 1.1.0 支持 AWS Load Balancer Controller 版本 2.4.4。
以下公告可用于 AWS Load Balancer Operator 版本 1.1.0:
5.2.1.3.1. 主要变化 复制链接链接已复制到粘贴板!
- 此发行版本使用 Kubernetes API 版本 0.27.2。
5.2.1.3.2. 新功能 复制链接链接已复制到粘贴板!
- AWS Load Balancer Operator 现在支持使用 Cloud Credential Operator 的标准化安全令牌服务 (STS) 流。
5.2.1.3.3. 程序错误修复 复制链接链接已复制到粘贴板!
FIPS 兼容集群必须使用 TLS 版本 1.2。在以前的版本中,AWS Load Balancer Controller 的 Webhook 只接受 TLS 1.3 作为最小版本,从而导致在与 FIPS 兼容的集群中出现以下错误:
remote error: tls: protocol version not supported
remote error: tls: protocol version not supported
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 现在,AWS Load Balancer Controller 接受 TLS 1.2 作为最小 TLS 版本,从而解决了这个问题。(OCPBUGS-14846)
5.2.1.4. AWS Load Balancer Operator 1.0.1 复制链接链接已复制到粘贴板!
以下公告可用于 AWS Load Balancer Operator 版本 1.0.1:
5.2.1.5. AWS Load Balancer Operator 1.0.0 复制链接链接已复制到粘贴板!
现在,AWS Load Balancer Operator 已正式发布。AWS Load Balancer Operator 版本 1.0.0 支持 AWS Load Balancer Controller 版本 2.4.4。
以下公告可用于 AWS Load Balancer Operator 版本 1.0.0:
AWS Load Balancer (ALB) Operator 版本 1.x.x 无法从技术预览版本 0.x.x 自动升级。要从早期版本升级,您必须卸载 ALB 操作对象并删除 aws-load-balancer-operator
命名空间。
5.2.1.5.1. 主要变化 复制链接链接已复制到粘贴板!
-
此发行版本使用新的
v1
API 版本。
5.2.1.5.2. 程序错误修复 复制链接链接已复制到粘贴板!
- 在以前的版本中,AWS Load Balancer Operator 置备的控制器无法正确将配置用于集群范围代理。这些设置现在对控制器正确应用。(OCPBUGS-4052, OCPBUGS-5295)
5.2.1.6. 早期版本 复制链接链接已复制到粘贴板!
AWS Load Balancer Operator 的两个最早版本作为技术预览提供。这些版本不应在生产环境中使用。有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
以下公告可用于 AWS Load Balancer Operator 版本 0.2.0 :
以下公告可用于 AWS Load Balancer Operator 版本 0.0.1:
AWS Load Balancer Operator 部署和管理 AWS Load Balancer Controller。您可以使用 OpenShift Container Platform Web 控制台或 CLI 安装来自 OperatorHub 的 AWS Load Balancer Operator。
5.2.2.1. AWS Load Balancer Operator 的注意事项 复制链接链接已复制到粘贴板!
在安装和使用 AWS Load Balancer Operator 前查看以下限制:
- IP 流量模式仅适用于 AWS Elastic Kubernetes Service (EKS)。AWS Load Balancer Operator 禁用 AWS Load Balancer Controller 的 IP 流量模式。禁用 IP 流量模式后,AWS Load Balancer Controller 无法使用 pod 就绪度。
-
AWS Load Balancer Operator 将命令行标记(如
--disable-ingress-class-annotation
和--disable-ingress-group-name-annotation
)添加到 AWS Load Balancer Controller。因此,AWS Load Balancer Operator 不允许在Ingress
资源中使用kubernetes.io/ingress.class
和alb.ingress.kubernetes.io/group.name
注解。 -
您已配置了 AWS Load Balancer Operator,使 SVC 类型是
NodePort
(而不是LoadBalancer
或ClusterIP
)。
5.2.2.2. AWS Load Balancer Operator 复制链接链接已复制到粘贴板!
如果缺少 kubernetes.io/role/elb
标签,AWS Load Balancer Operator 可以标记公共子网。另外,AWS Load Balancer Operator 从底层 AWS 云检测到以下信息:
- 托管 Operator 的集群的虚拟私有云 (VPC) 的 ID。
- 发现 VPC 的公共和私有子网。
AWS Load Balancer Operator 支持类型为 LoadBalancer
的 Kubernetes 服务资源,使用只有 instance
目标类型的 Network Load Balancer (NLB)。
流程
您可以通过运行以下命令来创建
Subscription
对象,以按需部署 AWS Load Balancer Operator:oc -n aws-load-balancer-operator get sub aws-load-balancer-operator --template='{{.status.installplan.name}}{{"\n"}}'
$ oc -n aws-load-balancer-operator get sub aws-load-balancer-operator --template='{{.status.installplan.name}}{{"\n"}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,检查安装计划的状态是否为
Complete
:oc -n aws-load-balancer-operator get ip <install_plan_name> --template='{{.status.phase}}{{"\n"}}'
$ oc -n aws-load-balancer-operator get ip <install_plan_name> --template='{{.status.phase}}{{"\n"}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,查看
aws-load-balancer-operator-controller-manager
部署的状态:oc get -n aws-load-balancer-operator deployment/aws-load-balancer-operator-controller-manager
$ oc get -n aws-load-balancer-operator deployment/aws-load-balancer-operator-controller-manager
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME READY UP-TO-DATE AVAILABLE AGE aws-load-balancer-operator-controller-manager 1/1 1 1 23h
NAME READY UP-TO-DATE AVAILABLE AGE aws-load-balancer-operator-controller-manager 1/1 1 1 23h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
您可以配置 AWS Load Balancer Operator,以便在 AWS VPC 集群中置备 AWS Application Load Balancer。AWS Outposts 不支持 AWS Network Load Balancers。因此,AWS Load Balancer Operator 无法在 Outpost 中置备 Network Load Balancers。
您可以在云子网或 Outpost 子网中创建 AWS Application Load Balancer。云中的 Application Load Balancer 可以附加到基于云的计算节点,而 Outpost 中的 Application Load Balancer 可以附加到边缘计算节点。您必须使用 Outpost 子网或 VPC 子网来注解 Ingress 资源,但不能同时注解两者。
先决条件
- 您已将 AWS VPC 集群扩展到 Outpost。
-
已安装 OpenShift CLI(
oc
)。 - 已安装 AWS Load Balancer Operator 并创建了 AWS Load Balancer Controller。
流程
将
Ingress
资源配置为使用指定的子网:Ingress
资源配置示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定要使用的子网。
- 要在 Outpost 中使用 Application Load Balancer,请指定 Outpost 子网 ID。
- 要在云中使用 Application Load Balancer,您必须在不同的可用区中指定至少两个子网。
5.2.3. 为 AWS Load Balancer Operator 准备 AWS STS 集群 复制链接链接已复制到粘贴板!
您可以在使用安全令牌服务 (STS) 的集群中安装 Amazon Web Services (AWS) Load Balancer Operator。在安装 Operator 前,按照以下步骤准备集群。
AWS Load Balancer Operator 依赖于 CredentialsRequest
对象来引导 Operator 和 AWS Load Balancer Controller。AWS Load Balancer Operator 等待所需的 secret 创建并可用。
5.2.3.1. 先决条件 复制链接链接已复制到粘贴板!
-
已安装 OpenShift CLI(
oc
)。 您知道集群的基础架构 ID。要显示此 ID,请在 CLI 中运行以下命令:
oc get infrastructure cluster -o=jsonpath="{.status.infrastructureName}"
$ oc get infrastructure cluster -o=jsonpath="{.status.infrastructureName}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您知道集群的 OpenID Connect (OIDC) DNS 信息。要显示此信息,请在 CLI 中输入以下命令:
oc get authentication.config cluster -o=jsonpath="{.spec.serviceAccountIssuer}"
$ oc get authentication.config cluster -o=jsonpath="{.spec.serviceAccountIssuer}"
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
https://rh-oidc.s3.us-east-1.amazonaws.com/28292va7ad7mr9r4he1fb09b14t59t4f
是 OIDC DNS 的一个示例。
-
已登陆到 AWS Web 控制台,进入到 IAM
Access management Identity provider,以及 OIDC Amazon Resource Name (ARN) 信息。一个 OIDC ARN 示例为 arn:aws:iam::777777777777:oidc-provider/<oidc_dns_url>
。
5.2.3.2. 为 AWS Load Balancer Operator 创建 IAM 角色 复制链接链接已复制到粘贴板!
需要额外的 Amazon Web Services (AWS) Identity 和 Access Management (IAM) 角色,才能在使用 STS 的集群中安装 AWS Load Balancer Operator。需要 IAM 角色与子网和虚拟私有云(VPC)交互。AWS Load Balancer Operator 使用 IAM 角色生成 CredentialsRequest
对象来引导其自身。
您可以使用以下选项创建 IAM 角色:
-
使用 Cloud Credential Operator 实用程序 (
ccoctl
) 和预定义的CredentialsRequest
对象。 - 使用 AWS CLI 和预定义的 AWS 清单。
如果您的环境不支持 ccoctl
命令,请使用 AWS CLI。
您可以使用 Cloud Credential Operator 实用程序(ccoctl
) 为 AWS Load Balancer Operator 创建 AWS IAM 角色。AWS IAM 角色与子网和虚拟私有云 (VPC) 交互。
先决条件
-
您必须提取并准备
ccoctl
二进制文件。
流程
运行以下命令,下载
CredentialsRequest
自定义资源 (CR) 并将其存储在目录中:curl --create-dirs -o <credentials_requests_dir>/operator.yaml https://raw.githubusercontent.com/openshift/aws-load-balancer-operator/main/hack/operator-credentials-request.yaml
$ curl --create-dirs -o <credentials_requests_dir>/operator.yaml https://raw.githubusercontent.com/openshift/aws-load-balancer-operator/main/hack/operator-credentials-request.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,使用
ccoctl
实用程序创建 AWS IAM 角色:ccoctl aws create-iam-roles \ --name <name> \ --region=<aws_region> \ --credentials-requests-dir=<credentials_requests_dir> \ --identity-provider-arn <oidc_arn>
$ ccoctl aws create-iam-roles \ --name <name> \ --region=<aws_region> \ --credentials-requests-dir=<credentials_requests_dir> \ --identity-provider-arn <oidc_arn>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
2023/09/12 11:38:57 Role arn:aws:iam::777777777777:role/<name>-aws-load-balancer-operator-aws-load-balancer-operator created 2023/09/12 11:38:57 Saved credentials configuration to: /home/user/<credentials_requests_dir>/manifests/aws-load-balancer-operator-aws-load-balancer-operator-credentials.yaml 2023/09/12 11:38:58 Updated Role policy for Role <name>-aws-load-balancer-operator-aws-load-balancer-operator created
2023/09/12 11:38:57 Role arn:aws:iam::777777777777:role/<name>-aws-load-balancer-operator-aws-load-balancer-operator created
1 2023/09/12 11:38:57 Saved credentials configuration to: /home/user/<credentials_requests_dir>/manifests/aws-load-balancer-operator-aws-load-balancer-operator-credentials.yaml 2023/09/12 11:38:58 Updated Role policy for Role <name>-aws-load-balancer-operator-aws-load-balancer-operator created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 请注意为 AWS Load Balancer Operator 创建的 AWS IAM 角色的 Amazon Resource Name (ARN),如
arn:aws:iam::777777777777:role/<name>-aws-load-balancer-operator-aws-load-balancer-operator
。
注意AWS IAM 角色名称的长度必须小于或等于 12 个字符。
5.2.3.2.2. 使用 AWS CLI 创建 AWS IAM 角色 复制链接链接已复制到粘贴板!
您可以使用 AWS 命令行界面为 AWS Load Balancer Operator 创建 IAM 角色。IAM 角色用于与子网和虚拟私有云 (VPC) 交互。
先决条件
-
您必须有权访问 AWS 命令行界面 (
aws
)。
流程
运行以下命令,使用身份提供程序生成信任策略文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,使用生成的信任策略创建 IAM 角色:
aws iam create-role --role-name albo-operator --assume-role-policy-document file://albo-operator-trust-policy.json
$ aws iam create-role --role-name albo-operator --assume-role-policy-document file://albo-operator-trust-policy.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
ROLE arn:aws:iam::<aws_account_number>:role/albo-operator 2023-08-02T12:13:22Z ASSUMEROLEPOLICYDOCUMENT 2012-10-17 STATEMENT sts:AssumeRoleWithWebIdentity Allow STRINGEQUALS system:serviceaccount:aws-load-balancer-operator:aws-load-balancer-controller-manager PRINCIPAL arn:aws:iam:<aws_account_number>:oidc-provider/<cluster_oidc_endpoint>
ROLE arn:aws:iam::<aws_account_number>:role/albo-operator 2023-08-02T12:13:22Z
1 ASSUMEROLEPOLICYDOCUMENT 2012-10-17 STATEMENT sts:AssumeRoleWithWebIdentity Allow STRINGEQUALS system:serviceaccount:aws-load-balancer-operator:aws-load-balancer-controller-manager PRINCIPAL arn:aws:iam:<aws_account_number>:oidc-provider/<cluster_oidc_endpoint>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 为 AWS Load Balancer Operator 创建的 AWS IAM 角色的 ARN,如
arn:aws:iam::777777777777:role/albo-operator
。
运行以下命令,下载 AWS Load Balancer Operator 的权限策略:
curl -o albo-operator-permission-policy.json https://raw.githubusercontent.com/openshift/aws-load-balancer-operator/main/hack/operator-permission-policy.json
$ curl -o albo-operator-permission-policy.json https://raw.githubusercontent.com/openshift/aws-load-balancer-operator/main/hack/operator-permission-policy.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将 AWS Load Balancer Controller 的权限策略附加到 IAM 角色:
aws iam put-role-policy --role-name albo-operator --policy-name perms-policy-albo-operator --policy-document file://albo-operator-permission-policy.json
$ aws iam put-role-policy --role-name albo-operator --policy-name perms-policy-albo-operator --policy-document file://albo-operator-permission-policy.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2.3.3. 为 AWS Load Balancer Operator 配置 ARN 角色 复制链接链接已复制到粘贴板!
您可以将 AWS Load Balancer Operator 的 Amazon 资源名称 (ARN) 角色配置为环境变量。您可以使用 CLI 配置 ARN 角色。
先决条件
-
已安装 OpenShift CLI(
oc
)。
流程
运行以下命令来创建
aws-load-balancer-operator
项目:oc new-project aws-load-balancer-operator
$ oc new-project aws-load-balancer-operator
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建
OperatorGroup
对象:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建
Subscription
对象:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定
CredentialsRequest
中使用的 ARN 角色,以便为 AWS Load Balancer Operator 置备 AWS 凭证。一个<albo_role_arn>
示例是arn:aws:iam::<aws_account_number>:role/albo-operator
。
注意AWS Load Balancer Operator 会在进入
Available
状态前等待创建 secret。
5.2.3.4. 为 AWS Load Balancer Controller 创建 IAM 角色 复制链接链接已复制到粘贴板!
AWS Load Balancer Controller 的 CredentialsRequest
对象必须使用手动置备的 IAM 角色设置。
您可以使用以下选项创建 IAM 角色:
-
使用 Cloud Credential Operator 实用程序 (
ccoctl
) 和预定义的CredentialsRequest
对象。 - 使用 AWS CLI 和预定义的 AWS 清单。
如果您的环境不支持 ccoctl
命令,请使用 AWS CLI。
您可以使用 Cloud Credential Operator 实用程序(ccoctl
) 为 AWS Load Balancer Controller 创建 AWS IAM 角色。AWS IAM 角色用于与子网和虚拟私有云 (VPC) 交互。
先决条件
-
您必须提取并准备
ccoctl
二进制文件。
流程
运行以下命令,下载
CredentialsRequest
自定义资源 (CR) 并将其存储在目录中:curl --create-dirs -o <credentials_requests_dir>/controller.yaml https://raw.githubusercontent.com/openshift/aws-load-balancer-operator/main/hack/controller/controller-credentials-request.yaml
$ curl --create-dirs -o <credentials_requests_dir>/controller.yaml https://raw.githubusercontent.com/openshift/aws-load-balancer-operator/main/hack/controller/controller-credentials-request.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,使用
ccoctl
实用程序创建 AWS IAM 角色:ccoctl aws create-iam-roles \ --name <name> \ --region=<aws_region> \ --credentials-requests-dir=<credentials_requests_dir> \ --identity-provider-arn <oidc_arn>
$ ccoctl aws create-iam-roles \ --name <name> \ --region=<aws_region> \ --credentials-requests-dir=<credentials_requests_dir> \ --identity-provider-arn <oidc_arn>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
2023/09/12 11:38:57 Role arn:aws:iam::777777777777:role/<name>-aws-load-balancer-operator-aws-load-balancer-controller created 2023/09/12 11:38:57 Saved credentials configuration to: /home/user/<credentials_requests_dir>/manifests/aws-load-balancer-operator-aws-load-balancer-controller-credentials.yaml 2023/09/12 11:38:58 Updated Role policy for Role <name>-aws-load-balancer-operator-aws-load-balancer-controller created
2023/09/12 11:38:57 Role arn:aws:iam::777777777777:role/<name>-aws-load-balancer-operator-aws-load-balancer-controller created
1 2023/09/12 11:38:57 Saved credentials configuration to: /home/user/<credentials_requests_dir>/manifests/aws-load-balancer-operator-aws-load-balancer-controller-credentials.yaml 2023/09/12 11:38:58 Updated Role policy for Role <name>-aws-load-balancer-operator-aws-load-balancer-controller created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 请注意为 AWS Load Balancer Controller 创建的 AWS IAM 角色的 Amazon Resource Name (ARN),如
arn:aws:iam::777777777777:role/<name>-aws-load-balancer-operator-aws-load-balancer-controller
。
注意AWS IAM 角色名称的长度必须小于或等于 12 个字符。
5.2.3.4.2. 使用 AWS CLI 为控制器创建 AWS IAM 角色 复制链接链接已复制到粘贴板!
您可以使用 AWS 命令行界面为 AWS Load Balancer Controller 创建 AWS IAM 角色。AWS IAM 角色用于与子网和虚拟私有云 (VPC) 交互。
先决条件
-
您必须有权访问 AWS 命令行界面 (
aws
)。
流程
运行以下命令,使用身份提供程序生成信任策略文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,使用生成的信任策略创建 AWS IAM 角色:
aws iam create-role --role-name albo-controller --assume-role-policy-document file://albo-controller-trust-policy.json
$ aws iam create-role --role-name albo-controller --assume-role-policy-document file://albo-controller-trust-policy.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
ROLE arn:aws:iam::<aws_account_number>:role/albo-controller 2023-08-02T12:13:22Z ASSUMEROLEPOLICYDOCUMENT 2012-10-17 STATEMENT sts:AssumeRoleWithWebIdentity Allow STRINGEQUALS system:serviceaccount:aws-load-balancer-operator:aws-load-balancer-operator-controller-manager PRINCIPAL arn:aws:iam:<aws_account_number>:oidc-provider/<cluster_oidc_endpoint>
ROLE arn:aws:iam::<aws_account_number>:role/albo-controller 2023-08-02T12:13:22Z
1 ASSUMEROLEPOLICYDOCUMENT 2012-10-17 STATEMENT sts:AssumeRoleWithWebIdentity Allow STRINGEQUALS system:serviceaccount:aws-load-balancer-operator:aws-load-balancer-operator-controller-manager PRINCIPAL arn:aws:iam:<aws_account_number>:oidc-provider/<cluster_oidc_endpoint>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- AWS Load Balancer Controller 的 AWS IAM 角色的 ARN,如
arn:aws:iam::777777777777:role/albo-controller
。
运行以下命令,下载 AWS Load Balancer Controller 的权限策略:
curl -o albo-controller-permission-policy.json https://raw.githubusercontent.com/openshift/aws-load-balancer-operator/main/assets/iam-policy.json
$ curl -o albo-controller-permission-policy.json https://raw.githubusercontent.com/openshift/aws-load-balancer-operator/main/assets/iam-policy.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将 AWS Load Balancer Controller 的权限策略附加到 AWS IAM 角色:
aws iam put-role-policy --role-name albo-controller --policy-name perms-policy-albo-controller --policy-document file://albo-controller-permission-policy.json
$ aws iam put-role-policy --role-name albo-controller --policy-name perms-policy-albo-controller --policy-document file://albo-controller-permission-policy.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建定义
AWSLoadBalancerController
对象的 YAML 文件:sample-aws-lb-manual-creds.yaml
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2.4. 安装 AWS Load Balancer Operator 复制链接链接已复制到粘贴板!
AWS Load Balancer Operator 部署和管理 AWS Load Balancer Controller。您可以使用 OpenShift Container Platform Web 控制台或 CLI 安装来自 OperatorHub 的 AWS Load Balancer Operator。
5.2.4.1. 使用 Web 控制台安装 AWS Load Balancer Operator 复制链接链接已复制到粘贴板!
您可以使用 Web 控制台安装 AWS Load Balancer Operator。
先决条件
-
已作为具有
cluster-admin
权限的用户身份登录 OpenShift Container Platform Web 控制台。 - 集群被配置为使用 AWS 作为平台类型和云供应商。
- 如果您使用安全令牌服务(STS)或用户置备的基础架构,请按照相关的准备步骤操作。例如,如果您使用 AWS 安全令牌服务,请参阅使用 AWS 安全令牌服务(STS) "在集群中准备 AWS Load Balancer Operator"。
流程
-
在 OpenShift Container Platform Web 控制台中进入 Operators
OperatorHub。 - 选择 AWS Load Balancer Operator。您可以使用 Filter by keyword 文本框,或者使用过滤器列表从 Operator 列表搜索 AWS Load Balancer Operator。
-
选择
aws-load-balancer-operator
命名空间。 在 Install Operator 页面中,选择以下选项:
- 更新频道为 stable-v1。
- 安装模式 为 All namespaces on the cluster (default)。
-
Installed Namespace 为
aws-load-balancer-operator
。如果aws-load-balancer-operator
命名空间不存在,它会在 Operator 安装过程中创建。 - 选择 Update approval 为 Automatic 或 Manual。默认情况下,Update approval 设置为 Automatic。如果选择自动更新,Operator Lifecycle Manager(OLM)将自动升级 Operator 的运行实例,而无需任何干预。如果选择手动更新,OLM 将创建一个更新请求。作为集群管理员,您必须手动批准该更新请求,以便将 Operator 更新至新版本。
- 点 Install。
验证
- 在 Installed Operators 仪表板中验证 AWS Load Balancer Operator 的 Status 显示为 Succeeded。
5.2.4.2. 使用 CLI 安装 AWS Load Balancer Operator 复制链接链接已复制到粘贴板!
您可以使用 CLI 安装 AWS Load Balancer Operator。
先决条件
-
以具有
cluster-admin
权限的用户身份登录 OpenShift Container Platform Web 控制台。 - 集群被配置为使用 AWS 作为平台类型和云供应商。
-
已登陆到 OpenShift CLI (
oc
)。
流程
创建一个
Namespace
对象:创建定义
Namespace
对象的 YAML 文件:namespace.yaml
文件示例apiVersion: v1 kind: Namespace metadata: name: aws-load-balancer-operator
apiVersion: v1 kind: Namespace metadata: name: aws-load-balancer-operator
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建
Namespace
对象:oc apply -f namespace.yaml
$ oc apply -f namespace.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
创建一个
OperatorGroup
对象:创建定义
OperatorGroup
对象的 YAML 文件:operatorgroup.yaml
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建
OperatorGroup
对象:oc apply -f operatorgroup.yaml
$ oc apply -f operatorgroup.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
创建
Subscription
对象:创建定义
Subscription
对象的 YAML 文件:subscription.yaml
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建
Subscription
对象:oc apply -f subscription.yaml
$ oc apply -f subscription.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
从订阅中获取安装计划的名称:
oc -n aws-load-balancer-operator \ get subscription aws-load-balancer-operator \ --template='{{.status.installplan.name}}{{"\n"}}'
$ oc -n aws-load-balancer-operator \ get subscription aws-load-balancer-operator \ --template='{{.status.installplan.name}}{{"\n"}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查安装计划的状态:
oc -n aws-load-balancer-operator \ get ip <install_plan_name> \ --template='{{.status.phase}}{{"\n"}}'
$ oc -n aws-load-balancer-operator \ get ip <install_plan_name> \ --template='{{.status.phase}}{{"\n"}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出必须是
Complete
。
5.2.4.3. 创建 AWS Load Balancer Controller 复制链接链接已复制到粘贴板!
您只能在集群中安装 AWSLoadBalancerController
对象的单个实例。您可以使用 CLI 创建 AWS Load Balancer Controller。AWS Load Balancer Operator 只协调名为 resource 的集群
。
先决条件
-
您已创建了
echoserver
命名空间。 -
您可以访问 OpenShift CLI(
oc
)。
流程
创建定义
AWSLoadBalancerController
对象的 YAML 文件:sample-aws-lb.yaml
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 定义
AWSLoadBalancerController
对象。 - 2
- 定义 AWS Load Balancer Controller 名称。此实例名称作为后缀添加到所有相关资源。
- 3
- 配置 AWS Load Balancer Controller 的子网标记方法。以下值有效:
-
Auto
:AWS Load Balancer Operator 决定属于集群的子网,并相应地标记它们。如果内部子网上不存在内部子网标签,Operator 无法正确确定角色。 -
Manual
:您可以使用适当的角色标签手动标记属于集群的子网。如果在用户提供的基础架构上安装集群,则使用这个选项。
-
- 4
- 定义在置备 AWS 资源时 AWS Load Balancer Controller 使用的标签。
- 5
- 定义入口类名称。默认值为
alb
。 - 6
- 指定 AWS Load Balancer Controller 的副本数。
- 7
- 将注解指定为 AWS Load Balancer Controller 的附加组件。
- 8
- 启用
alb.ingress.kubernetes.io/wafv2-acl-arn
注解。
运行以下命令来创建
AWSLoadBalancerController
对象:oc create -f sample-aws-lb.yaml
$ oc create -f sample-aws-lb.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建定义
Deployment
资源的 YAML 文件:sample-aws-lb.yaml
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建定义
Service
资源的 YAML 文件:service-albo.yaml
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建定义
Ingress
资源的 YAML 文件:ingress-albo.yaml
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令,将
Ingress
资源的状态保存到HOST
变量中:HOST=$(oc get ingress -n echoserver echoserver --template='{{(index .status.loadBalancer.ingress 0).hostname}}')
$ HOST=$(oc get ingress -n echoserver echoserver --template='{{(index .status.loadBalancer.ingress 0).hostname}}')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证
Ingress
资源的状态:curl $HOST
$ curl $HOST
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2.5. 配置 AWS Load Balancer Operator 复制链接链接已复制到粘贴板!
5.2.5.1. 信任集群范围代理的证书颁发机构 复制链接链接已复制到粘贴板!
您可以在 AWS Load Balancer Operator 中配置集群范围代理。配置集群范围代理后,Operator Lifecycle Manager (OLM) 会使用 HTTP_PROXY
、HTTPS_PROXY
和 NO_PROXY
等环境变量自动更新 Operator 的所有部署。这些变量由 AWS Load Balancer Operator 填充给受管控制器。
运行以下命令,创建配置映射以在
aws-load-balancer-operator
命名空间中包含证书颁发机构 (CA) 捆绑包:oc -n aws-load-balancer-operator create configmap trusted-ca
$ oc -n aws-load-balancer-operator create configmap trusted-ca
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要将可信 CA 捆绑包注入配置映射中,请运行以下命令将
config.openshift.io/inject-trusted-cabundle=true
标签添加到配置映射中:oc -n aws-load-balancer-operator label cm trusted-ca config.openshift.io/inject-trusted-cabundle=true
$ oc -n aws-load-balancer-operator label cm trusted-ca config.openshift.io/inject-trusted-cabundle=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,更新 AWS Load Balancer Operator 订阅以访问 AWS Load Balancer Operator 部署中的配置映射:
oc -n aws-load-balancer-operator patch subscription aws-load-balancer-operator --type='merge' -p '{"spec":{"config":{"env":[{"name":"TRUSTED_CA_CONFIGMAP_NAME","value":"trusted-ca"}],"volumes":[{"name":"trusted-ca","configMap":{"name":"trusted-ca"}}],"volumeMounts":[{"name":"trusted-ca","mountPath":"/etc/pki/tls/certs/albo-tls-ca-bundle.crt","subPath":"ca-bundle.crt"}]}}}'
$ oc -n aws-load-balancer-operator patch subscription aws-load-balancer-operator --type='merge' -p '{"spec":{"config":{"env":[{"name":"TRUSTED_CA_CONFIGMAP_NAME","value":"trusted-ca"}],"volumes":[{"name":"trusted-ca","configMap":{"name":"trusted-ca"}}],"volumeMounts":[{"name":"trusted-ca","mountPath":"/etc/pki/tls/certs/albo-tls-ca-bundle.crt","subPath":"ca-bundle.crt"}]}}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 部署 AWS Load Balancer Operator 后,运行以下命令来验证 CA 捆绑包是否已添加到
aws-load-balancer-operator-controller-manager
部署中:oc -n aws-load-balancer-operator exec deploy/aws-load-balancer-operator-controller-manager -c manager -- bash -c "ls -l /etc/pki/tls/certs/albo-tls-ca-bundle.crt; printenv TRUSTED_CA_CONFIGMAP_NAME"
$ oc -n aws-load-balancer-operator exec deploy/aws-load-balancer-operator-controller-manager -c manager -- bash -c "ls -l /etc/pki/tls/certs/albo-tls-ca-bundle.crt; printenv TRUSTED_CA_CONFIGMAP_NAME"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
-rw-r--r--. 1 root 1000690000 5875 Jan 11 12:25 /etc/pki/tls/certs/albo-tls-ca-bundle.crt trusted-ca
-rw-r--r--. 1 root 1000690000 5875 Jan 11 12:25 /etc/pki/tls/certs/albo-tls-ca-bundle.crt trusted-ca
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:通过运行以下命令,每次 configmap 发生变化时重启 AWS Load Balancer Operator 的部署:
oc -n aws-load-balancer-operator rollout restart deployment/aws-load-balancer-operator-controller-manager
$ oc -n aws-load-balancer-operator rollout restart deployment/aws-load-balancer-operator-controller-manager
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2.5.2. 在 AWS Load Balancer 中添加 TLS 终止 复制链接链接已复制到粘贴板!
您可以将域的流量路由到服务的 pod,并在 AWS 负载均衡器中添加 TLS 终止。
先决条件
-
您可以访问 OpenShift CLI(
oc
)。
流程
创建定义
AWSLoadBalancerController
资源的 YAML 文件:add-tls-termination-albc.yaml
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 定义入口类名称。如果集群中没有 ingress 类,AWS Load Balancer Controller 会创建一个。如果
spec.controller
设置为ingress.k8s.aws/alb
,AWS Load Balancer Controller 会协调额外的入口类值。
创建定义
Ingress
资源的 YAML 文件:add-tls-termination-ingress.yaml
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2.5.3. 通过单个 AWS Load Balancer 创建多个入口资源 复制链接链接已复制到粘贴板!
您可以通过单个 AWS Load Balancer 将流量路由到属于单个域一部分的、带有多个 ingress 资源的不同服务。每个 ingress 资源提供了域的不同端点。
先决条件
-
您可以访问 OpenShift CLI(
oc
)。
流程
创建一个
IngressClassParams
资源 YAML 文件,如sample-single-lb-params.yaml
,如下所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建
IngressClassParams
资源:oc create -f sample-single-lb-params.yaml
$ oc create -f sample-single-lb-params.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
IngressClass
资源 YAML 文件,如sample-single-lb-class.yaml
,如下所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建
IngressClass
资源:oc create -f sample-single-lb-class.yaml
$ oc create -f sample-single-lb-class.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
AWSLoadBalancerController
资源 YAML 文件,如sample-single-lb.yaml
,如下所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 定义
IngressClass
资源的名称。
运行以下命令来创建
AWSLoadBalancerController
资源:oc create -f sample-single-lb.yaml
$ oc create -f sample-single-lb.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
Ingress
资源 YAML 文件,如sample-multiple-ingress.yaml
,如下所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建
Ingress
资源:oc create -f sample-multiple-ingress.yaml
$ oc create -f sample-multiple-ingress.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2.5.4. AWS Load Balancer Operator 日志 复制链接链接已复制到粘贴板!
您可以使用 oc logs
命令查看 AWS Load Balancer Operator 日志。
流程
运行以下命令,查看 AWS Load Balancer Operator 的日志:
oc logs -n aws-load-balancer-operator deployment/aws-load-balancer-operator-controller-manager -c manager
$ oc logs -n aws-load-balancer-operator deployment/aws-load-balancer-operator-controller-manager -c manager
Copy to Clipboard Copied! Toggle word wrap Toggle overflow