6.3. External DNS Operator


6.3.1. External DNS Operator のリリースノート

External DNS Operator は、ExternalDNS をデプロイおよび管理して、外部 DNS プロバイダーから OpenShift Container Platform へのサービスとルートの名前解決を提供します。

重要

External DNS Operator は、x86_64 アーキテクチャーでのみサポートされます。

これらのリリースノートでは、OpenShift Container Platform での外部 DNS Operator の開発を追跡しています。

6.3.1.1. 外部 DNS Operator 1.2.0

External DNS Operator バージョン 1.2.0 では、以下のアドバイザリーを利用できます。

6.3.1.1.1. 新機能
6.3.1.1.2. バグ修正
  • オペランドの更新ストラテジーが、Rolling から Recreate に変更されました。(OCPBUGS-3630)

6.3.1.2. External DNS Operator 1.1.1

External DNS Operator バージョン 1.1.1 では、以下のアドバイザリーを利用できます。利用できます。

6.3.1.3. External DNS Operator 1.1.0

このリリースには、アップストリームプロジェクトバージョン 0.13.1 からのオペランドのリベースが含まれていました。External DNS Operator バージョン 1.1.0 では、以下のアドバイザリーを利用できます。

6.3.1.3.1. バグ修正
  • 以前は、ExternalDNS Operator がボリュームに空の defaultMode 値を強制していたため、OpenShift API との競合により更新が随時行われていました。現在は、defaultMode 値は強制されず、オペランドのデプロイは随時更新されなくなりました。(OCPBUGS-2793)

6.3.1.4. External DNS Operator 1.0.1

External DNS Operator バージョン 1.0.1 では、以下のアドバイザリーを利用できます。

6.3.1.5. External DNS Operator 1.0.0

External DNS Operator バージョン 1.0.0 では、以下のアドバイザリーを利用できます。

6.3.1.5.1. バグ修正
  • 以前は、External DNS Operator は、ExternalDNS オペランド Pod のデプロイメント中に制限付き SCC ポリシーの違反に関する警告を発していました。この問題は解決されています。(BZ#2086408)

6.3.2. External DNS Operator について

External DNS Operator は、ExternalDNS をデプロイおよび管理して、外部 DNS プロバイダーから OpenShift Container Platform へのサービスとルートの名前解決を提供します。

6.3.2.1. External DNS Operator

External DNS Operator は、olm.openshift.io API グループから External DNS API を実装します。External DNS Operator は、サービス、ルート、外部 DNS プロバイダーを更新します。

前提条件

  • yq CLI ツールがインストールされている。

手順

OperatorHub からオンデマンドで External DNS Operator をデプロイできます。External DNS Operator をデプロイすると、Subscription オブジェクトが作成されます。

  1. 次のコマンドを実行して、インストールプランの名前を確認します。

    $ oc -n external-dns-operator get sub external-dns-operator -o yaml | yq '.status.installplan.name'

    出力例

    install-zcvlr

  2. 次のコマンドを実行して、インストールプランのステータスが Complete になっているか確認します。

    $ oc -n external-dns-operator get ip <install_plan_name> -o yaml | yq '.status.phase'

    出力例

    Complete

  3. 次のコマンドを実行して、external-dns-operator デプロイメントのステータスを表示します。

    $ oc get -n external-dns-operator deployment/external-dns-operator

    出力例

    NAME                    READY     UP-TO-DATE   AVAILABLE   AGE
    external-dns-operator   1/1       1            1           23h

6.3.2.2. External DNS Operator のログの表示

oc logs コマンドを使用して、External DNS Operator のログを表示できます。

手順

  1. 次のコマンドを実行して、External DNS Operator のログを表示します。

    $ oc logs -n external-dns-operator deployment/external-dns-operator -c external-dns-operator
6.3.2.2.1. External DNS Operator のドメイン名の制限

External DNS Operator は、TXT レコードの接頭辞を追加する TXT レジストリーを使用します。これにより、TXT レコードのドメイン名の最大長が短くなります。DNS レコードは対応する TXT レコードなしでは存在できないため、DNS レコードのドメイン名は TXT レコードと同じ制限に従う必要があります。たとえば、DNS レコードが <domain_name_from_source> の場合、TXT レコードは external-dns-<record_type>-<domain_name_from_source> になります。

External DNS Operator によって生成される DNS レコードのドメイン名には、次の制限があります。

レコードの種類文字数

CNAME

44

AzureDNS のワイルドカード CNAME レコード

42

A

48

AzureDNS のワイルドカード A レコード

46

生成されたドメイン名がドメイン名の制限を超えると、External DNS Operator のログに次のエラーが表示されます。

time="2022-09-02T08:53:57Z" level=error msg="Failure in zone test.example.io. [Id: /hostedzone/Z06988883Q0H0RL6UMXXX]"
time="2022-09-02T08:53:57Z" level=error msg="InvalidChangeBatch: [FATAL problem: DomainLabelTooLong (Domain label is too long) encountered with 'external-dns-a-hello-openshift-aaaaaaaaaa-bbbbbbbbbb-ccccccc']\n\tstatus code: 400, request id: e54dfd5a-06c6-47b0-bcb9-a4f7c3a4e0c6"

6.3.3. External DNS Operator のインストール

AWS、Azure、GCP などのクラウドプロバイダーに External DNS Operator をインストールできます。

6.3.3.1. OperatorHub を使用した External DNS Operator のインストール

OpenShift Container Platform OperatorHub を使用して、External DNS Operator をインストールできます。

手順

  1. OpenShift Container Platform Web コンソールで、Operators OperatorHub をクリックします。
  2. External DNS Operator をクリックします。Filter by keyword のテキストボックスまたはフィルターリストを使用して、Operator のリストから External DNS Operator を検索できます。
  3. external-dns-operator namespace を選択します。
  4. External DNS Operator ページで Install をクリックします。
  5. Install Operator ページで、次のオプションを選択していることを確認してください。

    1. チャネルを stable-v1.0 として更新している。
    2. インストールモードに A specific name on the cluster を選択している。
    3. namespace をexternal-dns-operatorとしてインストールしている。namespace external-dns-operator が存在しない場合は、Operator のインストール中に作成されます。
    4. 承認ストラテジーAutomatic または Manual として選択している。承認ストラテジーはデフォルトで Automatic に設定されます。
    5. Install をクリックします。

Automatic (自動) 更新を選択した場合、Operator Lifecycle Manager (OLM) は介入なしに、Operator の実行中のインスタンスを自動的にアップグレードします。

Manual 更新を選択した場合、OLM は更新要求を作成します。クラスター管理者は、Operator が新規バージョンに更新されるように更新要求を手動で承認する必要があります。

検証

Installed Operators ダッシュボードで、External DNS Operator の StatusSucceeded と表示されることを確認します。

6.3.3.2. CLI を使用した External DNS Operator のインストール

CLI を使用して External DNS Operator をインストールできます。

前提条件

  • cluster-admin 権限を持つユーザーとして OpenShift Container Platform Web コンソールにログインしている。
  • OpenShift CLI (oc) にログイン済みである。

手順

  1. Namespace オブジェクトを作成します。

    1. Namespace オブジェクトを定義する YAML ファイルを作成します。

      namespace.yaml ファイルの例

      apiVersion: v1
      kind: Namespace
      metadata:
        name: external-dns-operator

    2. 次のコマンドを実行して、Namespace オブジェクトを作成します。

      $ oc apply -f namespace.yaml
  2. OperatorGroup オブジェクトを作成します。

    1. OperatorGroup オブジェクトを定義する YAML ファイルを作成します。

      operatorgroup.yaml ファイルの例

      apiVersion: operators.coreos.com/v1
      kind: OperatorGroup
      metadata:
        name: external-dns-operator
        namespace: external-dns-operator
      spec:
        upgradeStrategy: Default
        targetNamespaces:
        - external-dns-operator

    2. 以下のコマンドを実行して OperatorGroup オブジェクトを作成します。

      $ oc apply -f operatorgroup.yaml
  3. Subscription オブジェクトを作成します。

    1. Subscription オブジェクトを定義する YAML ファイルを作成します。

      subscription.yaml ファイルの例

      apiVersion: operators.coreos.com/v1alpha1
      kind: Subscription
      metadata:
        name: external-dns-operator
        namespace: external-dns-operator
      spec:
        channel: stable-v1
        installPlanApproval: Automatic
        name: external-dns-operator
        source: redhat-operators
        sourceNamespace: openshift-marketplace

    2. 以下のコマンドを実行して Subscription オブジェクトを作成します。

      $ oc apply -f subscription.yaml

検証

  1. 次のコマンドを実行して、サブスクリプションからインストールプランの名前を取得します。

    $ oc -n external-dns-operator \
        get subscription external-dns-operator \
        --template='{{.status.installplan.name}}{{"\n"}}'
  2. 次のコマンドを実行して、インストールプランのステータスが Complete であることを確認します。

    $ oc -n external-dns-operator \
        get ip <install_plan_name> \
        --template='{{.status.phase}}{{"\n"}}'
  3. 次のコマンドを実行して、external-dns-operator Pod のステータスが Running であることを確認します。

    $ oc -n external-dns-operator get pod

    出力例

    NAME                                     READY   STATUS    RESTARTS   AGE
    external-dns-operator-5584585fd7-5lwqm   2/2     Running   0          11m

  4. 次のコマンドを実行して、サブスクリプションのカタログソースが redhat-operators であることを確認します。

    $ oc -n external-dns-operator get subscription

    出力例

    NAME                    PACKAGE                 SOURCE             CHANNEL
    external-dns-operator   external-dns-operator   redhat-operators   stable-v1

  5. 次のコマンドを実行して、external-dns-Operator のバージョンを確認します。

    $ oc -n external-dns-operator get csv

    出力例

    NAME                           DISPLAY                VERSION   REPLACES   PHASE
    external-dns-operator.v<1.y.z>   ExternalDNS Operator   <1.y.z>                Succeeded

6.3.4. External DNS Operator の設定パラメーター

External DNS Operator には、次の設定パラメーターがあります。

6.3.4.1. External DNS Operator の設定パラメーター

External DNS Operator には、次の設定パラメーターがあります。

パラメーター説明

spec

クラウドプロバイダーのタイプを有効にします。

spec:
  provider:
    type: AWS 1
    aws:
      credentials:
        name: aws-access-key 2
1
AWS、GCP、Azure、Infoblox などの利用可能なオプションを定義します。
2
クラウドプロバイダーのシークレット名を定義します。

zones

ドメインごとに DNS ゾーンを指定できます。ゾーンを指定しない場合、ExternalDNS リソースはクラウドプロバイダーアカウントに存在するすべてのゾーンを検出します。

zones:
- "myzoneid" 1
1
DNS ゾーンの名前を指定します。

domains

ドメインごとに AWS ゾーンを指定できます。ドメインを指定しない場合、ExternalDNS リソースはクラウドプロバイダーアカウントに存在するすべてのゾーンを検出します。

domains:
- filterType: Include 1
  matchType: Exact 2
  name: "myzonedomain1.com" 3
- filterType: Include
  matchType: Pattern 4
  pattern: ".*\\.otherzonedomain\\.com" 5
1
ExternalDNS リソースにドメイン名が含まれていることを確認します。
2
ドメインは、正規表現での照合ではなく、完全に一致する必要があることを、ExtrnalDNS に指示します。
3
ドメインの名前を定義します。
4
ExternalDNS リソースに regex-domain-filter フラグを設定します。正規表現フィルターを使用して、使用できるドメインに限定します。
5
ターゲットゾーンのドメインをフィルタリングするために ExternalDNS リソースが使用する正規表現パターンを定義します。

source

DNS レコードのソース (サービスまたはルート) を指定できます。

source: 1
  type: Service 2
  service:
    serviceType:3
      - LoadBalancer
      - ClusterIP
  labelFilter: 4
    matchLabels:
      external-dns.mydomain.org/publish: "yes"
  hostnameAnnotation: "Allow" 5
  fqdnTemplate:
  - "{{.Name}}.myzonedomain.com" 6
1
DNS レコードのソースの設定を定義します。
2
ExternalDNS リソースは、DNS レコードを作成するためのソースとして Service タイプを使用します。
3
ExternalDNS リソースに service-type-filter フラグを設定します。serviceType には、次のフィールドが含まれています。
  • デフォルト: LoadBalancer
  • expected: ClusterIP
  • NodePort
  • LoadBalancer
  • ExternalName
4
コントローラーで考慮するのは、ラベルフィルターと一致するリソースのみにします。
5
hostnameAnnotationのデフォルト値はIgnoreで、フィールドfqdnTemplatesで指定されたテンプレートを使用して DNS レコードを生成するようにExternalDNSに指示します。値がAllowの場合には、external-dns.alpha.kubernetes.io/hostname アノテーションで指定された値をもとに DNS レコードが生成されます。
6
External DNS Operator は文字列を使用して、ホスト名を定義していないソースから DNS 名を生成したり、偽のソースとペアになったときにホスト名の接尾辞を追加したりします。
source:
  type: OpenShiftRoute 1
  openshiftRouteOptions:
    routerName: default 2
    labelFilter:
      matchLabels:
        external-dns.mydomain.org/publish: "yes"
1
DNS レコードを作成します。
2
ソースタイプが OpenShiftRoute の場合は、Ingress Controller 名を指定できます。ExternalDNS リソースは、CNAME レコードのターゲットとして Ingress Controller の正規名を使用します。

6.3.5. AWS での DNS レコードの作成

External DNS Operator を使用して、AWS および AWS GovCloud で DNS レコードを作成できます。

6.3.5.1. Red Hat External DNS Operator を使用した AWS のパブリックホストゾーンへの DNS レコードの作成

Red Hat External DNS Operator を使用して、AWS のパブリックホストゾーンに DNS レコードを作成できます。同じ手順を使用して、AWS GovCloud のホストゾーンに DNS レコードを作成できます。

手順

  1. ユーザーを確認してください。ユーザーは、kube-system namespace にアクセスできる必要があります。クレデンシャルがない場合は、kube-system namespace からクレデンシャルを取得すると、クラウドプロバイダークライアントを使用できます。

    $ oc whoami

    出力例

    system:admin

  2. kube-system namespace に存在する aws-creds シークレットから値を取得します。

    $ export AWS_ACCESS_KEY_ID=$(oc get secrets aws-creds -n kube-system  --template={{.data.aws_access_key_id}} | base64 -d)
    $ export AWS_SECRET_ACCESS_KEY=$(oc get secrets aws-creds -n kube-system  --template={{.data.aws_secret_access_key}} | base64 -d)
  3. ルートを取得して、ドメインを確認します。

    $ oc get routes --all-namespaces | grep console

    出力例

    openshift-console          console             console-openshift-console.apps.testextdnsoperator.apacshift.support                       console             https   reencrypt/Redirect     None
    openshift-console          downloads           downloads-openshift-console.apps.testextdnsoperator.apacshift.support                     downloads           http    edge/Redirect          None

  4. DNS ゾーンのリストを取得して、以前に検出されたルートのドメインに対応するものを検索します。

    $ aws route53 list-hosted-zones | grep testextdnsoperator.apacshift.support

    出力例

    HOSTEDZONES	terraform	/hostedzone/Z02355203TNN1XXXX1J6O	testextdnsoperator.apacshift.support.	5

  5. route ソースの ExternalDNS リソースを作成します。

    $ cat <<EOF | oc create -f -
    apiVersion: externaldns.olm.openshift.io/v1beta1
    kind: ExternalDNS
    metadata:
      name: sample-aws 1
    spec:
      domains:
      - filterType: Include   2
        matchType: Exact   3
        name: testextdnsoperator.apacshift.support 4
      provider:
        type: AWS 5
      source:  6
        type: OpenShiftRoute 7
        openshiftRouteOptions:
          routerName: default 8
    EOF
    1
    外部 DNS リソースの名前を定義します。
    2
    デフォルトでは、すべてのホストゾーンがターゲット候補として選択されます。必要なホストゾーンを追加できます。
    3
    ターゲットゾーンのドメインは、(正規表現の一致とは対照的に) 完全一致である必要があります。
    4
    更新するゾーンのドメインを正確に指定します。ルートのホスト名は、指定されたドメインのサブドメインである必要があります。
    5
    AWS Route53DNSプロバイダーを定義します。
    6
    DNS レコードのソースのオプションを定義します。
    7
    以前に指定された DNS プロバイダーで作成される DNS レコードのソースとして OpenShift route リソースを定義します。
    8
    ソースが OpenShiftRoute の場合に、OpenShift Ingress Controller 名を指定できます。External DNS Operator は、CNAME レコードの作成時に、そのルーターの正規ホスト名をターゲットとして選択します。
  6. 次のコマンドを使用して、OCP ルート用に作成されたレコードを確認します。

    $ aws route53 list-resource-record-sets --hosted-zone-id Z02355203TNN1XXXX1J6O --query "ResourceRecordSets[?Type == 'CNAME']" | grep console

6.3.5.2. 共有 VPC を使用して別の AWS アカウントに DNS レコードを作成する

ExternalDNS Operator を使用すると、共有 Virtual Private Cloud (VPC) を使用して別の AWS アカウントに DNS レコードを作成できます。共有 VPC を使用すると、組織は複数のプロジェクトのリソースを共通の VPC ネットワークに接続できます。その後、VPC 共有を使用して、複数の AWS アカウント間で単一の Route 53 インスタンスを使用できます。

前提条件

  • 2 つの Amazon AWS アカウントを作成している。1 つは VPC と Route 53 プライベートホストゾーンが設定されたもの (アカウント A)、もう 1 つはクラスターをインストールするためのもの (アカウント B) です。
  • アカウント B でアカウント A の Route 53 ホストゾーンに DNS レコードを作成するために、適切な権限を持つ IAM ポリシーと IAM ロールをアカウント A に作成している。
  • アカウント B のクラスターをアカウント A の既存の VPC にインストールしている。
  • アカウント B のクラスターに ExternalDNS Operator がインストールされている。

手順

  1. 次のコマンドを実行して、アカウント B からアカウント A の Route 53 ホストゾーンにアクセスできるように作成した IAM ロールのロール ARN を取得します。

    $ aws --profile account-a iam get-role --role-name user-rol1 | head -1

    出力例

    ROLE	arn:aws:iam::1234567890123:role/user-rol1	2023-09-14T17:21:54+00:00	3600	/	AROA3SGB2ZRKRT5NISNJN	user-rol1

  2. 次のコマンドを実行して、アカウント A の認証情報で使用するプライベートホストゾーンを特定します。

    $ aws --profile account-a route53 list-hosted-zones | grep testextdnsoperator.apacshift.support

    出力例

    HOSTEDZONES	terraform	/hostedzone/Z02355203TNN1XXXX1J6O	testextdnsoperator.apacshift.support. 5

  3. 次のコマンドを実行して、ExternalDNS オブジェクトを作成します。

    $ cat <<EOF | oc create -f -
    apiVersion: externaldns.olm.openshift.io/v1beta1
    kind: ExternalDNS
    metadata:
      name: sample-aws
    spec:
      domains:
      - filterType: Include
        matchType: Exact
        name: testextdnsoperator.apacshift.support
      provider:
        type: AWS
        aws:
          assumeRole:
            arn: arn:aws:iam::12345678901234:role/user-rol1 1
      source:
        type: OpenShiftRoute
        openshiftRouteOptions:
          routerName: default
    EOF
    1
    アカウント A に DNS レコードを作成するには、ロール ARN を指定します。
  4. 次のコマンドを使用して、OpenShift Container Platform (OCP) ルートに対して作成されたレコードを確認します。

    $ aws --profile account-a route53 list-resource-record-sets --hosted-zone-id Z02355203TNN1XXXX1J6O --query "ResourceRecordSets[?Type == 'CNAME']" | grep console-openshift-console

6.3.6. Azure での DNS レコードの作成

External DNS Operator を使用して、Azure 上に DNS レコードを作成できます。

重要

Microsoft Entra Workload ID 対応クラスターまたは Microsoft Azure Government (MAG) リージョンで実行されるクラスターで External DNS Operator を使用することはサポートされていません。

6.3.6.1. Azure のパブリック DNS ゾーン上で DNS レコードを作成する

Red Hat External DNS Operator を使用して、Azure のパブリック DNS ゾーンに DNS レコードを作成できます。

前提条件

  • 管理者権限を持っている。
  • admin ユーザーの場合、kube-system namespace にアクセスできる。

手順

  1. クラウドプロバイダークライアントを使用するために、次のコマンドを実行して kube-system namespace から認証情報を取得します。

    $ CLIENT_ID=$(oc get secrets azure-credentials  -n kube-system  --template={{.data.azure_client_id}} | base64 -d)
    $ CLIENT_SECRET=$(oc get secrets azure-credentials  -n kube-system  --template={{.data.azure_client_secret}} | base64 -d)
    $ RESOURCE_GROUP=$(oc get secrets azure-credentials  -n kube-system  --template={{.data.azure_resourcegroup}} | base64 -d)
    $ SUBSCRIPTION_ID=$(oc get secrets azure-credentials  -n kube-system  --template={{.data.azure_subscription_id}} | base64 -d)
    $ TENANT_ID=$(oc get secrets azure-credentials  -n kube-system  --template={{.data.azure_tenant_id}} | base64 -d)
  2. 次のコマンドを実行して、Azure にログインします。

    $ az login --service-principal -u "${CLIENT_ID}" -p "${CLIENT_SECRET}" --tenant "${TENANT_ID}"
  3. 次のコマンドを実行して、ルートのリストを取得します。

    $ oc get routes --all-namespaces | grep console

    出力例

    openshift-console          console             console-openshift-console.apps.test.azure.example.com                       console             https   reencrypt/Redirect     None
    openshift-console          downloads           downloads-openshift-console.apps.test.azure.example.com                     downloads           http    edge/Redirect          None

  4. 次のコマンドを実行して、DNS ゾーンのリストを取得します。

    $ az network dns zone list --resource-group "${RESOURCE_GROUP}"
  5. ExternalDNS オブジェクトを定義する YAML ファイル (例: external-dns-sample-azure.yaml) を作成します。

    external-dns-sample-azure.yaml ファイルの例

    apiVersion: externaldns.olm.openshift.io/v1beta1
    kind: ExternalDNS
    metadata:
      name: sample-azure 1
    spec:
      zones:
      - "/subscriptions/1234567890/resourceGroups/test-azure-xxxxx-rg/providers/Microsoft.Network/dnszones/test.azure.example.com" 2
      provider:
        type: Azure 3
      source:
        openshiftRouteOptions: 4
          routerName: default 5
        type: OpenShiftRoute 6

    1
    外部 DNS 名を指定します。
    2
    ゾーン ID を定義します。
    3
    プロバイダータイプを定義します。
    4
    DNS レコードのソースのオプションを定義できます。
    5
    ソースタイプが OpenShiftRoute の場合、OpenShift Ingress Controller 名を渡すことができます。外部 DNS は、CNAME レコードの作成時に、そのルーターの正規のホスト名をターゲットとして選択します。
    6
    route リソースを Azure DNS レコードのソースとして定義します。
  6. 次のコマンドを実行して、OpenShift Container Platform ルートに対して作成された DNS レコードを確認します。

    $ az network dns record-set list -g "${RESOURCE_GROUP}"  -z test.azure.example.com | grep console
    注記

    プライベート Azure DNS のホストされたプライベートゾーンにレコードを作成するには、zones フィールドの下にプライベートゾーンを指定する必要があります。これにより、プロバイダータイプが ExternalDNS 引数の azure-private-dns に入力されます。

6.3.7. GCP での DNS レコードの作成

External DNS Operator を使用して、Google Cloud Platform (GCP) 上に DNS レコードを作成できます。

重要

GCP Workload Identity が有効なクラスターで External DNS Operator を使用することはサポートされていません。GCP Workload Identity の詳細は、GCP Workload Identity を参照してください。

6.3.7.1. GCP のパブリックマネージドゾーン上で DNS レコードを作成する

External DNS Operator を使用して、GCP のパブリックマネージドゾーンに DNS レコードを作成できます。

前提条件

  • 管理者権限を持っている。

手順

  1. 次のコマンドを実行して、encoded-gcloud.json ファイル内の gcp-credentials シークレットをコピーします。

    $ oc get secret gcp-credentials -n kube-system --template='{{$v := index .data "service_account.json"}}{{$v}}' | base64 -d - > decoded-gcloud.json
  2. 次のコマンドを実行して、Google の認証情報をエクスポートします。

    $ export GOOGLE_CREDENTIALS=decoded-gcloud.json
  3. 次のコマンドを使用して、アカウントをアクティブ化します。

    $ gcloud auth activate-service-account  <client_email as per decoded-gcloud.json> --key-file=decoded-gcloud.json
  4. 次のコマンドを実行して、プロジェクトを設定します。

    $ gcloud config set project <project_id as per decoded-gcloud.json>
  5. 次のコマンドを実行して、ルートのリストを取得します。

    $ oc get routes --all-namespaces | grep console

    出力例

    openshift-console          console             console-openshift-console.apps.test.gcp.example.com                       console             https   reencrypt/Redirect     None
    openshift-console          downloads           downloads-openshift-console.apps.test.gcp.example.com                     downloads           http    edge/Redirect          None

  6. 次のコマンドを実行して、マネージドゾーンのリストを取得します。

    $ gcloud dns managed-zones list | grep test.gcp.example.com

    出力例

    qe-cvs4g-private-zone test.gcp.example.com

  7. ExternalDNS オブジェクトを定義する YAML ファイル (例: external-dns-sample-gcp.yaml) を作成します。

    external-dns-sample-gcp.yaml ファイルの例

    apiVersion: externaldns.olm.openshift.io/v1beta1
    kind: ExternalDNS
    metadata:
      name: sample-gcp 1
    spec:
      domains:
        - filterType: Include 2
          matchType: Exact 3
          name: test.gcp.example.com 4
      provider:
        type: GCP 5
      source:
        openshiftRouteOptions: 6
          routerName: default 7
        type: OpenShiftRoute 8

    1
    外部 DNS 名を指定します。
    2
    デフォルトでは、すべてのホストされたゾーンがターゲット候補として選択されます。ホストされたゾーンを含めることができます。
    3
    ターゲットのドメインは、name キーで定義された文字列と一致する必要があります。
    4
    更新するゾーンのドメインを正確に指定します。ルートのホスト名は、指定されたドメインのサブドメインである必要があります。
    5
    プロバイダータイプを定義します。
    6
    DNS レコードのソースのオプションを定義できます。
    7
    ソースタイプが OpenShiftRoute の場合、OpenShift Ingress Controller 名を渡すことができます。外部 DNS は、CNAME レコードの作成時に、そのルーターの正規のホスト名をターゲットとして選択します。
    8
    route リソースを GCP DNS レコードのソースとして定義します。
  8. 次のコマンドを実行して、OpenShift Container Platform ルートに対して作成された DNS レコードを確認します。

    $ gcloud dns record-sets list --zone=qe-cvs4g-private-zone | grep console

6.3.8. Infoblox での DNS レコードの作成

External DNS Operator を使用して、Infoblox 上に DNS レコードを作成できます。

6.3.8.1. Infoblox のパブリック DNS ゾーンでの DNS レコードの作成

External DNS Operator を使用して、Infoblox のパブリック DNS ゾーンに DNS レコードを作成できます。

前提条件

  • OpenShift CLI (oc) にアクセスできる。
  • Infoblox UI にアクセスできる。

手順

  1. 次のコマンドを実行して、Infoblox クレデンシャルを使用して secret オブジェクトを作成します。

    $ oc -n external-dns-operator create secret generic infoblox-credentials --from-literal=EXTERNAL_DNS_INFOBLOX_WAPI_USERNAME=<infoblox_username> --from-literal=EXTERNAL_DNS_INFOBLOX_WAPI_PASSWORD=<infoblox_password>
  2. 次のコマンドを実行して、ルートのリストを取得します。

    $ oc get routes --all-namespaces | grep console

    出力例

    openshift-console          console             console-openshift-console.apps.test.example.com                       console             https   reencrypt/Redirect     None
    openshift-console          downloads           downloads-openshift-console.apps.test.example.com                     downloads           http    edge/Redirect          None

  3. ExternalDNS オブジェクトを定義する YAML ファイル (例: external-dns-sample-infoblox.yaml) を作成します。

    external-dns-sample-infoblox.yaml ファイルの例

    apiVersion: externaldns.olm.openshift.io/v1beta1
    kind: ExternalDNS
    metadata:
      name: sample-infoblox 1
    spec:
      provider:
        type: Infoblox 2
        infoblox:
          credentials:
            name: infoblox-credentials
          gridHost: ${INFOBLOX_GRID_PUBLIC_IP}
          wapiPort: 443
          wapiVersion: "2.3.1"
      domains:
      - filterType: Include
        matchType: Exact
        name: test.example.com
      source:
        type: OpenShiftRoute 3
        openshiftRouteOptions:
          routerName: default 4

    1
    外部 DNS 名を指定します。
    2
    プロバイダータイプを定義します。
    3
    DNS レコードのソースのオプションを定義できます。
    4
    ソースタイプが OpenShiftRoute の場合、OpenShift Ingress Controller 名を渡すことができます。外部 DNS は、CNAME レコードの作成時に、そのルーターの正規のホスト名をターゲットとして選択します。
  4. 次のコマンドを実行して、Infoblox に ExternalDNS リソースを作成します。

    $ oc create -f external-dns-sample-infoblox.yaml
  5. Infoblox UI から、console ルート用に作成された DNS レコードを確認します。

    1. Data Management DNS Zones をクリックします。
    2. ゾーン名を選択します。

6.3.9. External DNS Operator でクラスター全体のプロキシーを設定する

クラスター全体のプロキシーを設定した後、Operator Lifecycle Manager (OLM) はデプロイされたすべての Operator に対して、HTTP_PROXYHTTPS_PROXY、および NO_PROXY 環境変数の新しい内容の自動更新をトリガーします。

6.3.9.1. クラスター全体のプロキシーの認証局を信頼する

External DNS Operator を設定して、クラスター全体のプロキシーの認証局を信頼できます。

手順

  1. 次のコマンドを実行して、external-dns-operator namespace に CA バンドルを含める config map を作成します。

    $ oc -n external-dns-operator create configmap trusted-ca
  2. 信頼できる CA バンドルを config map に挿入するには、次のコマンドを実行して、config.openshift.io/inject-trusted-cabundle=true ラベルを config map に追加します。

    $ oc -n external-dns-operator label cm trusted-ca config.openshift.io/inject-trusted-cabundle=true
  3. 次のコマンドを実行して、External DNS Operator のサブスクリプションを更新します。

    $ oc -n external-dns-operator patch subscription external-dns-operator --type='json' -p='[{"op": "add", "path": "/spec/config", "value":{"env":[{"name":"TRUSTED_CA_CONFIGMAP_NAME","value":"trusted-ca"}]}}]'

検証

  • External DNS Operator のデプロイ後、次のコマンドを実行して、信頼できる CA 環境変数が external-dns-operator デプロイメントに追加されていることを確認します。

    $ oc -n external-dns-operator exec deploy/external-dns-operator -c external-dns-operator -- printenv TRUSTED_CA_CONFIGMAP_NAME

    出力例

    trusted-ca

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.