13.4. 手順


  1. ネットワークロードバランサーを作成します。

    Red Hat build of Keycloak クラスターごとに次の操作を実行します。

    1. ROSA クラスターにログインします。
    2. Kubernetes ロードバランサーサービスを作成します。

      コマンド:

      cat <<EOF | oc apply -n $NAMESPACE -f - 1
        apiVersion: v1
        kind: Service
        metadata:
          name: accelerator-loadbalancer
          annotations:
            service.beta.kubernetes.io/aws-load-balancer-additional-resource-tags: accelerator=${ACCELERATOR_NAME},site=${CLUSTER_NAME},namespace=${NAMESPACE} 2
            service.beta.kubernetes.io/aws-load-balancer-type: "nlb"
            service.beta.kubernetes.io/aws-load-balancer-healthcheck-path: "/lb-check"
            service.beta.kubernetes.io/aws-load-balancer-healthcheck-protocol: "https"
            service.beta.kubernetes.io/aws-load-balancer-healthcheck-interval: "10" 3
            service.beta.kubernetes.io/aws-load-balancer-healthcheck-healthy-threshold: "3" 4
            service.beta.kubernetes.io/aws-load-balancer-healthcheck-unhealthy-threshold: "3" 5
        spec:
          ports:
          - name: https
            port: 443
            protocol: TCP
            targetPort: 8443
          selector:
            app: keycloak
            app.kubernetes.io/instance: keycloak
            app.kubernetes.io/managed-by: keycloak-operator
          sessionAffinity: None
          type: LoadBalancer
      EOF

      1
      $NAMESPACE は Red Hat build of Keycloak デプロイメントの namespace に置き換えてください。
      2
      AWS によって作成されたリソースにタグを追加して、後で取得できるようにします。ACCELERATOR_NAME は後続の手順で作成される Global Accelerator の名前、CLUSTER_NAME は現在のサイトの名前でなければなりません。
      3
      ヘルスチェックプローブの実行頻度 (秒単位)
      4
      NLB を正常とみなすために必要なヘルスチェックの合格回数
      5
      NLB を正常ではないとみなすために必要なヘルスチェックの不合格回数
    3. 後で必要になるため、DNS ホスト名をメモしておいてください。

      コマンド:

      oc -n $NAMESPACE get svc accelerator-loadbalancer --template="{{range .status.loadBalancer.ingress}}{{.hostname}}{{end}}"

      出力:

      abab80a363ce8479ea9c4349d116bce2-6b65e8b4272fa4b5.elb.eu-west-1.amazonaws.com

  2. Global Accelerator インスタンスを作成します。

    コマンド:

    aws globalaccelerator create-accelerator \
      --name example-accelerator \ 1
      --ip-address-type DUAL_STACK \ 2
      --region us-west-2 3

    1
    作成するアクセラレーターの名前。必要に応じて更新します。
    2
    'DUAL_STACK' または 'IPV4' を使用できます。
    3
    すべての globalaccelerator コマンドで、必ず 'us-west-2' リージョンを使用する必要があります

    出力:

    {
        "Accelerator": {
            "AcceleratorArn": "arn:aws:globalaccelerator::606671647913:accelerator/e35a94dd-391f-4e3e-9a3d-d5ad22a78c71", 1
            "Name": "example-accelerator",
            "IpAddressType": "DUAL_STACK",
            "Enabled": true,
            "IpSets": [
                {
                    "IpFamily": "IPv4",
                    "IpAddresses": [
                        "75.2.42.125",
                        "99.83.132.135"
                    ],
                    "IpAddressFamily": "IPv4"
                },
                {
                    "IpFamily": "IPv6",
                    "IpAddresses": [
                        "2600:9000:a400:4092:88f3:82e2:e5b2:e686",
                        "2600:9000:a516:b4ef:157e:4cbd:7b48:20f1"
                    ],
                    "IpAddressFamily": "IPv6"
                }
            ],
            "DnsName": "a099f799900e5b10d.awsglobalaccelerator.com", 2
            "Status": "IN_PROGRESS",
            "CreatedTime": "2023-11-13T15:46:40+00:00",
            "LastModifiedTime": "2023-11-13T15:46:42+00:00",
            "DualStackDnsName": "ac86191ca5121e885.dualstack.awsglobalaccelerator.com" 3
        }
    }

    1
    作成されたアクセラレーターインスタンスに関連付けられた ARN。後続のコマンドで使用します。
    2
    IPv4 Red Hat build of Keycloak クライアントが接続する DNS 名
    3
    IPv6 Red Hat build of Keycloak クライアントが接続する DNS 名
  3. アクセラレーターのリスナーを作成します。

    コマンド:

    aws globalaccelerator create-listener \
      --accelerator-arn 'arn:aws:globalaccelerator::606671647913:accelerator/e35a94dd-391f-4e3e-9a3d-d5ad22a78c71' \
      --port-ranges '[{"FromPort":443,"ToPort":443}]' \
      --protocol TCP \
      --region us-west-2

    出力:

    {
        "Listener": {
            "ListenerArn": "arn:aws:globalaccelerator::606671647913:accelerator/e35a94dd-391f-4e3e-9a3d-d5ad22a78c71/listener/1f396d40",
            "PortRanges": [
                {
                    "FromPort": 443,
                    "ToPort": 443
                }
            ],
            "Protocol": "TCP",
            "ClientAffinity": "NONE"
        }
    }

  4. リスナーのエンドポイントグループを作成します。

    コマンド:

    CLUSTER_1_ENDPOINT_ARN=$(aws elbv2 describe-load-balancers \
        --query "LoadBalancers[?DNSName=='abab80a363ce8479ea9c4349d116bce2-6b65e8b4272fa4b5.elb.eu-west-1.amazonaws.com'].LoadBalancerArn" \ 1
        --region eu-west-1 \ 2
        --output text
    )
    CLUSTER_2_ENDPOINT_ARN=$(aws elbv2 describe-load-balancers \
        --query "LoadBalancers[?DNSName=='a1c76566e3c334e4ab7b762d9f8dcbcf-985941f9c8d108d4.elb.eu-west-1.amazonaws.com'].LoadBalancerArn" \ 3
        --region eu-west-1 \ 4
        --output text
    )
    ENDPOINTS='[
      {
        "EndpointId": "'${CLUSTER_1_ENDPOINT_ARN}'",
        "Weight": 128,
        "ClientIPPreservationEnabled": false
      },
      {
        "EndpointId": "'${CLUSTER_2_ENDPOINT_ARN}'",
        "Weight": 128,
        "ClientIPPreservationEnabled": false
      }
    ]'
    aws globalaccelerator create-endpoint-group \
      --listener-arn 'arn:aws:globalaccelerator::606671647913:accelerator/e35a94dd-391f-4e3e-9a3d-d5ad22a78c71/listener/1f396d40' \ 5
      --traffic-dial-percentage 100 \
      --endpoint-configurations ${ENDPOINTS} \
      --endpoint-group-region eu-west-1 \ 6
      --region us-west-2

    1 3
    クラスターの NLB の DNS ホスト名
    2 4 5
    前のステップで作成したリスナーの ARN
    6
    これはクラスターをホストする AWS リージョンである必要があります。

    出力:

    {
        "EndpointGroup": {
            "EndpointGroupArn": "arn:aws:globalaccelerator::606671647913:accelerator/e35a94dd-391f-4e3e-9a3d-d5ad22a78c71/listener/1f396d40/endpoint-group/2581af0dc700",
            "EndpointGroupRegion": "eu-west-1",
            "EndpointDescriptions": [
                {
                    "EndpointId": "arn:aws:elasticloadbalancing:eu-west-1:606671647913:loadbalancer/net/abab80a363ce8479ea9c4349d116bce2/6b65e8b4272fa4b5",
                    "Weight": 128,
                    "HealthState": "HEALTHY",
                    "ClientIPPreservationEnabled": false
                },
                {
                    "EndpointId": "arn:aws:elasticloadbalancing:eu-west-1:606671647913:loadbalancer/net/a1c76566e3c334e4ab7b762d9f8dcbcf/985941f9c8d108d4",
                    "Weight": 128,
                    "HealthState": "HEALTHY",
                    "ClientIPPreservationEnabled": false
                }
            ],
            "TrafficDialPercentage": 100.0,
            "HealthCheckPort": 443,
            "HealthCheckProtocol": "TCP",
            "HealthCheckPath": "undefined",
            "HealthCheckIntervalSeconds": 30,
            "ThresholdCount": 3
        }
    }

  5. オプション: カスタムドメインを設定します。

    カスタムドメインを使用している場合は、カスタムドメインでエイリアスまたは CNAME を設定して、カスタムドメインを AWS グローバルロードバランサーにポイントします。

  6. Red Hat build of Keycloak デプロイメントを更新または作成します。

    Red Hat build of Keycloak クラスターごとに次の操作を実行します。

    1. ROSA クラスターにログインします。
    2. Keycloak CR が次の設定になっていることを確認します。

      apiVersion: k8s.keycloak.org/v2alpha1
      kind: Keycloak
      metadata:
        name: keycloak
      spec:
        hostname:
          hostname: $HOSTNAME 1
        ingress:
          enabled: false 2
      1
      Keycloak に接続するためにクライアントが使用するホスト名
      2
      すべての Red Hat build of Keycloak アクセスはプロビジョニングされた NLB 経由で行われるため、デフォルトの Ingress を無効にします。

      リクエスト転送が確実に期待通り機能するためには、Keycloak CR で、クライアントが Red Hat build of Keycloak インスタンスにアクセスするためのホスト名を指定する必要があります。これは、Global Accelerator に関連付けられた DualStackDnsName または DnsName ホスト名のいずれかになります。カスタムドメインを使用している場合は、カスタムドメインを AWS Globa Accelerator にポイントし、ここでカスタムドメインを使用します。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.