検索

8.3. 手順

download PDF
  1. すべての Red Hat build of Keycloak クライアントが接続時に経由する必要があるルートドメイン名を使用して Route53 ホストゾーン を作成します。

    "Hosted zone ID" は後の手順で必要になるため、メモしておきます。

  2. 各 ROSA クラスターに関連付けられた "Hosted zone ID" と DNS 名を取得します。

    プライマリークラスターとバックアップクラスターの両方で、次の手順を実行します。

    1. ROSA クラスターにログインします。
    2. クラスターのロードバランサーのホストゾーン ID と DNS ホスト名を取得します。

      コマンド:

      HOSTNAME=$(oc -n openshift-ingress get svc router-default \
      -o jsonpath='{.status.loadBalancer.ingress[].hostname}'
      )
      aws elbv2 describe-load-balancers \
      --query "LoadBalancers[?DNSName=='${HOSTNAME}'].{CanonicalHostedZoneId:CanonicalHostedZoneId,DNSName:DNSName}" \
      --region eu-west-1 \1
      --output json

      1
      ROSA クラスターをホストする AWS リージョン

      出力:

      [
          {
              "CanonicalHostedZoneId": "Z2IFOLAFXWLO4F",
              "DNSName": "ad62c8d2fcffa4d54aec7ffff902c925-61f5d3e1cbdc5d42.elb.eu-west-1.amazonaws.com"
          }
      ]

      注記

      OpenShift 4.13 以前を実行している ROSA クラスターは、アプリケーションロードバランサーの代わりにクラシックロードバランサーを使用します。aws elb describe-load-balancers コマンドと更新されたクエリー文字列を使用してください。

  3. Route53 ヘルスチェックを作成します。

    コマンド:

    function createHealthCheck() {
      # Creating a hash of the caller reference to allow for names longer than 64 characters
      REF=($(echo $1 | sha1sum ))
      aws route53 create-health-check \
      --caller-reference "$REF" \
      --query "HealthCheck.Id" \
      --no-cli-pager \
      --output text \
      --health-check-config '
      {
        "Type": "HTTPS",
        "ResourcePath": "/lb-check",
        "FullyQualifiedDomainName": "'$1'",
        "Port": 443,
        "RequestInterval": 30,
        "FailureThreshold": 1,
        "EnableSNI": true
      }
      '
    }
    CLIENT_DOMAIN="client.keycloak-benchmark.com" 1
    PRIMARY_DOMAIN="primary.${CLIENT_DOMAIN}" 2
    BACKUP_DOMAIN="backup.${CLIENT_DOMAIN}" 3
    createHealthCheck ${PRIMARY_DOMAIN}
    createHealthCheck ${BACKUP_DOMAIN}

    1
    Red Hat build of Keycloak クライアントが接続するドメイン。これは ホストゾーン の作成に使用したルートドメインと同じか、そのサブドメインである必要があります。
    2
    プライマリークラスター上のヘルスプローブに使用するサブドメイン
    3
    バックアップクラスター上のヘルスプローブに使用するサブドメイン

    出力:

    233e180f-f023-45a3-954e-415303f21eab 1
    799e2cbb-43ae-4848-9b72-0d9173f04912 2

    1
    プライマリーヘルスチェックの ID
    2
    バックアップヘルスチェックの ID
  4. Route53 レコードセットを作成します。

    コマンド:

    HOSTED_ZONE_ID="Z09084361B6LKQQRCVBEY" 1
    PRIMARY_LB_HOSTED_ZONE_ID="Z2IFOLAFXWLO4F"
    PRIMARY_LB_DNS=ad62c8d2fcffa4d54aec7ffff902c925-61f5d3e1cbdc5d42.elb.eu-west-1.amazonaws.com
    PRIMARY_HEALTH_ID=233e180f-f023-45a3-954e-415303f21eab
    BACKUP_LB_HOSTED_ZONE_ID="Z2IFOLAFXWLO4F"
    BACKUP_LB_DNS=a184a0e02a5d44a9194e517c12c2b0ec-1203036292.elb.eu-west-1.amazonaws.com
    BACKUP_HEALTH_ID=799e2cbb-43ae-4848-9b72-0d9173f04912
    aws route53 change-resource-record-sets \
      --hosted-zone-id Z09084361B6LKQQRCVBEY \
      --query "ChangeInfo.Id" \
      --output text \
      --change-batch '
      {
        "Comment": "Creating Record Set for '${CLIENT_DOMAIN}'",
      	"Changes": [{
      		"Action": "CREATE",
      		"ResourceRecordSet": {
      			"Name": "'${PRIMARY_DOMAIN}'",
      			"Type": "A",
            "AliasTarget": {
              "HostedZoneId": "'${PRIMARY_LB_HOSTED_ZONE_ID}'",
              "DNSName": "'${PRIMARY_LB_DNS}'",
              "EvaluateTargetHealth": true
            }
      		}
      	}, {
      		"Action": "CREATE",
      		"ResourceRecordSet": {
      			"Name": "'${BACKUP_DOMAIN}'",
      			"Type": "A",
            "AliasTarget": {
              "HostedZoneId": "'${BACKUP_LB_HOSTED_ZONE_ID}'",
              "DNSName": "'${BACKUP_LB_DNS}'",
              "EvaluateTargetHealth": true
            }
      		}
      	}, {
      		"Action": "CREATE",
      		"ResourceRecordSet": {
      			"Name": "'${CLIENT_DOMAIN}'",
      			"Type": "A",
            "SetIdentifier": "client-failover-primary-'${SUBDOMAIN}'",
            "Failover": "PRIMARY",
            "HealthCheckId": "'${PRIMARY_HEALTH_ID}'",
            "AliasTarget": {
              "HostedZoneId": "'${HOSTED_ZONE_ID}'",
              "DNSName": "'${PRIMARY_DOMAIN}'",
              "EvaluateTargetHealth": true
            }
      		}
      	}, {
      		"Action": "CREATE",
      		"ResourceRecordSet": {
      			"Name": "'${CLIENT_DOMAIN}'",
      			"Type": "A",
            "SetIdentifier": "client-failover-backup-'${SUBDOMAIN}'",
            "Failover": "SECONDARY",
            "HealthCheckId": "'${BACKUP_HEALTH_ID}'",
            "AliasTarget": {
              "HostedZoneId": "'${HOSTED_ZONE_ID}'",
              "DNSName": "'${BACKUP_DOMAIN}'",
              "EvaluateTargetHealth": true
            }
      		}
      	}]
      }
      '

    1
    前に作成した ホストゾーン の ID

    出力:

    /change/C053410633T95FR9WN3YI

  5. Route53 レコードが更新されるまで待ちます。

    コマンド:

    aws route53 wait resource-record-sets-changed --id /change/C053410633T95FR9WN3YI

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

    プライマリークラスターとバックアップクラスターの両方で、次の手順を実行します。

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

      apiVersion: k8s.keycloak.org/v2alpha1
      kind: Keycloak
      metadata:
        name: keycloak
      spec:
        hostname:
          hostname: ${CLIENT_DOMAIN} 1
      1
      Red Hat build of Keycloak に接続するために使用するドメインクライアント

      リクエスト転送を確実に機能させるために、Red Hat build of Keycloak CR を編集して、クライアントが Red Hat build of Keycloak インスタンスにアクセスするときに経由するホスト名を指定します。このホスト名は、Route53 の設定で使用される $CLIENT_DOMAIN である必要があります。

    3. ヘルスチェックルートを作成します。

      コマンド:

      cat <<EOF | oc apply -n $NAMESPACE -f - 1
      apiVersion: route.openshift.io/v1
      kind: Route
      metadata:
        name: aws-health-route
      spec:
        host: $DOMAIN 2
        port:
          targetPort: https
        tls:
          insecureEdgeTerminationPolicy: Redirect
          termination: passthrough
        to:
          kind: Service
          name: keycloak-service
          weight: 100
        wildcardPolicy: None
      
      EOF

      1
      $NAMESPACE は Red Hat build of Keycloak デプロイメントの namespace に置き換えてください。
      2
      現在のクラスターがバックアップクラスターのプライマリーである場合、$DOMAINPRIMARY_DOMAIN または BACKUP_DOMAIN にそれぞれ置き換えてください。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.