第1章 AWS Load Balancer Operator
AWS Load Balancer Operator は、Red Hat がサポートする Operator です。ユーザーは、これを SRE が管理する Red Hat OpenShift Service on AWS クラスターに必要に応じてインストールできます。
AWS Load Balancer Operator によって作成されたロードバランサーは、OpenShift ルート には使用できません。OpenShift ルートのレイヤー 7 機能をすべて必要としない個々のサービスまたは Ingress リソースにのみ使用する必要があります。
AWS Load Balancer Operator は、Red Hat OpenShift Service on AWS クラスターで AWS Load Balancer Controller をインストール、管理、および設定するために使用されます。
AWS Load Balancer Controller は、Kubernetes Ingress リソースを作成する際に AWS Application Load Balancers (ALB) をプロビジョニングし、LoadBalancer タイプを使用して Kubernetes Service リソースを作成する際に AWS Network Load Balancers (NLB) をプロビジョニングします。
デフォルトの AWS インツリーロードバランサープロバイダーと比較して、このコントローラーは ALB と NLB 用の詳細なアノテーションを使用して開発されています。高度な使用例としては以下が挙げられます。
- ネイティブ Kubernetes Ingress オブジェクトと ALB を使用する
- AWS ウェブアプリケーションファイアウォール (WAF) サービスと ALB を統合する
- カスタムの NLB ソース IP 範囲を指定する
- カスタムの NLB 内部 IP アドレスを指定する
1.1. AWS Load Balancer Operator のインストール準備 リンクのコピーリンクがクリップボードにコピーされました!
AWS Load Balancer Operator をインストールする前に、クラスターが要件を満たしていること、および AWS VPC リソースが適切にタグ付けされていることを確認してください。役立つ環境変数を設定するオプションもあります。
1.1.1. クラスターの要件 リンクのコピーリンクがクリップボードにコピーされました!
クラスターは、3 つのパブリックサブネットを持つ既存の VPC を使用して、3 つのアベイラビリティーゾーンにデプロイする必要があります。
これらの要件は、AWS Load Balancer Operator が一部の PrivateLink クラスターに適さない可能性があることを意味します。このようなクラスターには AWS NLB の方が適している可能性があります。
1.1.2. 一時的な環境変数のセットアップ リンクのコピーリンクがクリップボードにコピーされました!
リソース識別子と設定の詳細を保持するために、一時的な環境変数をセットアップするオプションがあります。一時環境変数を使用すると、AWS Load Balancer Operator のインストールコマンドを実行するプロセスが効率化されます。
特定の値を保存するために環境変数を使用しない場合は、関連するインストールコマンドにそれらの値を手動で入力できます。
前提条件
-
AWS CLI (
aws) をインストールしている。 -
OC CLI (
oc) がインストールされている。
手順
OpenShift CLI (
oc) を使用して、クラスター管理者としてクラスターにログインします。oc login --token=<token> --server=<cluster_url>
$ oc login --token=<token> --server=<cluster_url>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 環境変数をセットアップするには、次のコマンドを実行します。
export CLUSTER_NAME=$(oc get infrastructure cluster -o=jsonpath="{.status.apiServerURL}" | sed 's|^https://||' | awk -F . '{print $2}')$ export CLUSTER_NAME=$(oc get infrastructure cluster -o=jsonpath="{.status.apiServerURL}" | sed 's|^https://||' | awk -F . '{print $2}')Copy to Clipboard Copied! Toggle word wrap Toggle overflow export REGION=$(oc get infrastructure cluster -o=jsonpath="{.status.platformStatus.aws.region}")$ export REGION=$(oc get infrastructure cluster -o=jsonpath="{.status.platformStatus.aws.region}")Copy to Clipboard Copied! Toggle word wrap Toggle overflow export OIDC_ENDPOINT=$(oc get authentication.config.openshift.io cluster -o jsonpath='{.spec.serviceAccountIssuer}' | sed 's|^https://||')$ export OIDC_ENDPOINT=$(oc get authentication.config.openshift.io cluster -o jsonpath='{.spec.serviceAccountIssuer}' | sed 's|^https://||')Copy to Clipboard Copied! Toggle word wrap Toggle overflow export AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)
$ export AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)Copy to Clipboard Copied! Toggle word wrap Toggle overflow export SCRATCH="/tmp/${CLUSTER_NAME}/alb-operator"$ export SCRATCH="/tmp/${CLUSTER_NAME}/alb-operator"Copy to Clipboard Copied! Toggle word wrap Toggle overflow mkdir -p ${SCRATCH}$ mkdir -p ${SCRATCH}Copy to Clipboard Copied! Toggle word wrap Toggle overflow これらのコマンドは、このターミナルセッションで使用してその値をコマンドラインインターフェイスに渡すことができる環境変数を作成します。
次のコマンドを実行して、変数値が正しく設定されていることを確認します。
echo "Cluster name: ${CLUSTER_NAME}$ echo "Cluster name: ${CLUSTER_NAME} Region: ${REGION} OIDC Endpoint: ${OIDC_ENDPOINT} AWS Account ID: ${AWS_ACCOUNT_ID}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Cluster name: <cluster_id> Region: <region> OIDC Endpoint: oidc.op1.openshiftapps.com/<oidc_id> AWS Account ID: <aws_id>
Cluster name: <cluster_id> Region: <region> OIDC Endpoint: oidc.op1.openshiftapps.com/<oidc_id> AWS Account ID: <aws_id>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のステップ
- 環境変数が失われないように、同じターミナルセッションを使用して 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 VPC_ID=<vpc-id>Copy to Clipboard Copied! Toggle word wrap Toggle overflow export PUBLIC_SUBNET_IDS="<public-subnet-a-id> <public-subnet-b-id> <public-subnet-c-id>"
$ export PUBLIC_SUBNET_IDS="<public-subnet-a-id> <public-subnet-b-id> <public-subnet-c-id>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow export PRIVATE_SUBNET_IDS="<private-subnet-a-id> <private-subnet-b-id> <private-subnet-c-id>"
$ export PRIVATE_SUBNET_IDS="<private-subnet-a-id> <private-subnet-b-id> <private-subnet-c-id>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow VPC にタグを付けてクラスターに関連付けます。
aws ec2 create-tags --resources ${VPC_ID} --tags Key=kubernetes.io/cluster/${CLUSTER_NAME},Value=owned --region ${REGION}$ aws ec2 create-tags --resources ${VPC_ID} --tags Key=kubernetes.io/cluster/${CLUSTER_NAME},Value=owned --region ${REGION}Copy to Clipboard Copied! Toggle word wrap Toggle overflow パブリックサブネットにタグを付けて、Elastic Load Balancing ロールによる変更を許可し、プライベートサブネットにタグを付けて、内部 Elastic Load Balancing ロールによる変更を許可します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow スクリプトを実行します。
bash ${SCRATCH}/tag-subnets.shbash ${SCRATCH}/tag-subnets.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow
関連情報
- 複数のアベイラビリティーゾーンで Red Hat OpenShift Service on AWS クラスターをセットアップするには、マルチ AZ Red Hat OpenShift Service on AWS クラスター を参照してください。