第9章 チュートリアル: ROSA 上の AWS Load Balancer Operator


重要

このコンテンツは Red Hat のエキスパートが作成したものですが、サポート対象のすべての設定でまだテストされていません。

ヒント

AWS Load Balancer Operator によって作成されたロードバランサーは、OpenShift ルート には使用できません。OpenShift ルートのレイヤー 7 機能をすべて必要としない個々のサービスまたは Ingress リソースにのみ使用する必要があります。

AWS Load Balancer Controller は、Red Hat OpenShift Service on AWS (ROSA) クラスターの AWS Elastic Load Balancer を管理します。このコントローラーは、Kubernetes Ingress リソースを作成するときに AWS Application Load Balancer (ALB) をプロビジョニングし、LoadBalancer タイプを使用して Kubernetes Service リソースを実装するときに AWS Network Load Balancer (NLB) をプロビジョニングします。

デフォルトの AWS インツリーロードバランサープロバイダーと比較して、このコントローラーは ALB と NLB 用の詳細なアノテーションを使用して開発されています。高度な使用例としては以下が挙げられます。

  • ネイティブ Kubernetes Ingress オブジェクトと ALB を使用する
  • AWS ウェブアプリケーションファイアウォール (WAF) サービスと ALB を統合する
  • カスタムの NLB ソース IP 範囲を指定する
  • カスタムの NLB 内部 IP アドレスを指定する

AWS Load Balancer Operator は、ROSA クラスター内の aws-load-balancer-controller のインスタンスをインストール、管理、設定するために使用します。

9.1. 前提条件

注記

AWS ALB には、マルチ AZ クラスターと、クラスターと同じ VPC 内の 3 つの AZ に分割された 3 つのパブリックサブネットが必要です。このため、ALB は多くの PrivateLink クラスターには適していません。AWS NLB にはこの制限はありません。

9.1.1. 環境

  • 環境変数を準備します。

    $ export AWS_PAGER=""
    $ export ROSA_CLUSTER_NAME=$(oc get infrastructure cluster -o=jsonpath="{.status.infrastructureName}"  | sed 's/-[a-z0-9]\{5\}$//')
    $ 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/${ROSA_CLUSTER_NAME}/alb-operator"
    $ mkdir -p ${SCRATCH}
    $ echo "Cluster: ${ROSA_CLUSTER_NAME}, Region: ${REGION}, OIDC Endpoint: ${OIDC_ENDPOINT}, AWS Account ID: ${AWS_ACCOUNT_ID}"

9.1.2. AWS VPC とサブネット

注記

このセクションは、既存の VPC にデプロイされたクラスターにのみ適用されます。クラスターを既存の VPC にデプロイしなかった場合は、このセクションをスキップして、その後のインストールセクションに進んでください。

  1. 以下の変数を、ROSA デプロイメントに合わせて適切な値に設定します。

    $ export VPC_ID=<vpc-id>
    $ export PUBLIC_SUBNET_IDS=<public-subnets>
    $ export PRIVATE_SUBNET_IDS=<private-subnets>
    $ export CLUSTER_NAME=$(oc get infrastructure cluster -o=jsonpath="{.status.infrastructureName}")
  2. クラスター名を使用してクラスターの VPC にタグを追加します。

    $ aws ec2 create-tags --resources ${VPC_ID} --tags Key=kubernetes.io/cluster/${CLUSTER_NAME},Value=owned --region ${REGION}
  3. パブリックサブネットにタグを追加します。

    $ aws ec2 create-tags \
         --resources ${PUBLIC_SUBNET_IDS} \
         --tags Key=kubernetes.io/role/elb,Value='' \
         --region ${REGION}
  4. プライベートサブネットにタグを追加します。

    $ aws ec2 create-tags \
         --resources "${PRIVATE_SUBNET_IDS}" \
         --tags Key=kubernetes.io/role/internal-elb,Value='' \
         --region ${REGION}
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.