第 1 章 AWS Load Balancer Operator
AWS Load Balancer Operator 是红帽支持的 Operator,用户可以选择性地在 SRE 管理的 Red Hat OpenShift Service on AWS 集群上安装。
AWS Load Balancer Operator 创建的负载均衡器不能用于 OpenShift 路由,并且只应用于不需要 OpenShift Route 完整第 7 层功能的单个服务或入口资源。
AWS Load Balancer Operator 用于在 Red Hat OpenShift Service on AWS 集群中安装、管理和配置 AWS Load Balancer Controller。
当创建 Kubernetes Ingress 资源和 AWS Network Load Balancers (NLB) 时,当使用 LoadBalancer 类型创建 Kubernetes Service 资源时,AWS Load Balancer Controller 置备 AWS Application Load Balancers (ALB)。
与默认的 AWS 树内负载均衡器供应商相比,这个控制器会使用 ALBs 和 NLBs 的高级注解开发。一些高级用例有:
- 使用带有 ALB 的原生 Kubernetes Ingress 对象
- 将 ALBs 与 AWS Web 应用程序防火墙(WAF)服务集成
- 指定自定义 NLB 源 IP 范围
- 指定自定义 NLB 内部 IP 地址
1.1. 准备安装 AWS Load Balancer Operator 复制链接链接已复制到粘贴板!
在安装 AWS Load Balancer Operator 前,请确保集群满足要求,并且 AWS VPC 资源被正确标记。您还可以选择配置一些有用的环境变量。
1.1.1. 集群要求 复制链接链接已复制到粘贴板!
您的集群必须部署到三个可用区,使用带有三个公共子网的预先存在的 VPC。
这些要求意味着 AWS Load Balancer Operator 可能不适用于某些 PrivateLink 集群。AWS NLBs 可能是此类集群的更好选择。
1.1.2. 设置临时环境变量 复制链接链接已复制到粘贴板!
您可以选择设置临时环境变量来保存资源标识符和配置详情。使用临时环境变量简化了为 AWS Load Balancer Operator 运行安装命令的过程。
如果您不想使用环境变量来存储某些值,您可以在相关安装命令中手动输入这些值。
先决条件
-
已安装 AWS CLI (
aws)。 -
已安装 OC CLI (
oc)。
流程
使用 OpenShift CLI (
oc)以集群管理员身份登录集群。$ oc login --token=<token> --server=<cluster_url>运行以下命令来设置环境变量。
$ export CLUSTER_NAME=$(oc get infrastructure cluster -o=jsonpath="{.status.apiServerURL}" | sed 's|^https://||' | awk -F . '{print $2}')$ export REGION=$(oc get infrastructure cluster -o=jsonpath="{.status.platformStatus.aws.region}")$ export OIDC_ENDPOINT=$(oc get authentication.config.openshift.io cluster -o jsonpath='{.spec.serviceAccountIssuer}' | sed 's|^https://||')$ export AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)$ export SCRATCH="/tmp/${CLUSTER_NAME}/alb-operator"$ mkdir -p ${SCRATCH}这些命令创建可在此终端会话中使用的环境变量,以将其值传递给命令行界面。
运行以下命令验证变量值是否已正确设置:
$ echo "Cluster name: ${CLUSTER_NAME} Region: ${REGION} OIDC Endpoint: ${OIDC_ENDPOINT} AWS Account ID: ${AWS_ACCOUNT_ID}"输出示例
Cluster name: <cluster_id> Region: <region> OIDC Endpoint: oidc.op1.openshiftapps.com/<oidc_id> AWS Account ID: <aws_id>
后续步骤
- 使用同一终端会话继续安装 AWS Load Balancer Operator,以确保您的环境变量不会丢失。
1.1.3. 标记 AWS VPC 和子网 复制链接链接已复制到粘贴板!
在安装 AWS Load Balancer Operator 前,您必须标记 AWS VPC 资源。
先决条件
-
已安装 AWS CLI (
aws)。 -
已安装 OC CLI (
oc)。
流程
可选:为 AWS VPC 资源设置环境变量。
$ export VPC_ID=<vpc-id>$ export PUBLIC_SUBNET_IDS="<public-subnet-a-id> <public-subnet-b-id> <public-subnet-c-id>"$ export PRIVATE_SUBNET_IDS="<private-subnet-a-id> <private-subnet-b-id> <private-subnet-c-id>"标记您的 VPC 将其与集群关联:
$ aws ec2 create-tags --resources ${VPC_ID} --tags Key=kubernetes.io/cluster/${CLUSTER_NAME},Value=owned --region ${REGION}标记您的公共子网,以允许通过弹性负载平衡角色进行更改,并标记您的专用子网,以便通过内部弹性负载均衡角色进行更改:
cat <<EOF > "${SCRATCH}/tag-subnets.sh" #!/bin/bash aws ec2 create-tags \ --resources ${PUBLIC_SUBNET_IDS} \ --tags Key=kubernetes.io/role/elb,Value='' \ --region ${REGION} aws ec2 create-tags \ --resources ${PRIVATE_SUBNET_IDS} \ --tags Key=kubernetes.io/role/internal-elb,Value='' \ --region ${REGION} EOF运行脚本:
bash ${SCRATCH}/tag-subnets.sh
其他资源
- 要在具有多个可用区的 Red Hat OpenShift Service on AWS 集群上设置 Red Hat OpenShift Service,请参阅 AWS 集群上的 multi-AZ Red Hat OpenShift Service on AWS 集群