---
schema_version: "1"
id: 92f8f68be0bc1cad1c3a2eacf0d987fcbe7743f871d6270c5fbf6b1be01c968c
title: Kubernetes クラスターのアプリケーションのドメイン名の指定
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/gateway/1.8/flex-gateway-k8-external-dns.md
canonical_url: https://docs.mulesoft.com/jp/gateway/1.8/flex-gateway-k8-external-dns
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 5b70de0adb598539cd92b88c9443fac70c94bda6e89af53f92486e644ef58fd6
description: MuleSoft Documentation Site
release: "1.8"
latest: false
---
# Kubernetes クラスターのアプリケーションのドメイン名の指定

ExternalDNS を使用して、わかりにくい外部 IP やランダムなホスト名の代わりにドメイン名で Kubernetes クラスターのアプリケーションまたはサービスを公開します。

[ExternalDNS](https://github.com/kubernetes-sigs/external-dns/blob/master/README.md)​ は、多くの DNS プロバイダーの DNS 設定をサポートするオープンソースプロジェクトです。このツールは、DNS サーバーまたはプロバイダーでは​_ありません_​。代わりに、ExternalDNS は公開 DNS サーバーを介して Kubernetes リソースを検出し、サポートされている DNS プロバイダーのリソースを設定します。

このガイドでは、ExternalDNS を使用して、AWS Route 53 プロバイダー (ExternalDNS でサポートされている安定性の高いプロバイダーの 1 つ) のドメイン名を設定します。

## [](#始める前に)始める前に

次の前提条件が準備されていることを確認します。

- AWS の Kubernetes クラスター
- AWS クラスターへの Flex Gateway デプロイメントまたは登録済みの Flex Gateway インスタンス (ゲートウェイ)
    
    ゲートウェイの登録およびデプロイメントプロセスについては、​[Flex Gateway のセットアップ](https://docs.mulesoft.com/jp/gateway/1.8/flex-gateway-set-up) or [Kubernetes クラスターでの Flex Gateway の使用開始](https://docs.mulesoft.com/jp/gateway/1.8/flex-gateway-k8-getting-started)​を参照してください。
- ExternalDNS が Amazon Route 53 リソースレコードセットとホストゾーンを更新することを許可する AWS Identity and Access Management (IAM) ポリシー
    
    別の対象を使用したり、これらの許可で IAM ポリシーを作成したりするには、 [ExternalDNS ドキュメント](https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/aws.md)​を参照してください。

## [](#externaldns-をクラスターに追加する)ExternalDNS をクラスターに追加する

ExternalDNS (​`external-dns`​) をクラスターに追加するには、次のコンテンツが含まれる YAML 設定ファイルを作成して、クラスターにデプロイします。

1. 次の設定が含まれる YAML ファイルを作成します。
    
    ```yaml
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: external-dns
      labels:
        app.kubernetes.io/name: external-dns
    spec:
      strategy:
        type: Recreate
      selector:
        matchLabels:
          app.kubernetes.io/name: external-dns
      template:
        metadata:
          labels:
            app.kubernetes.io/name: external-dns
        spec:
          containers:
            - name: external-dns
              image: registry.k8s.io/external-dns/external-dns:v0.13.1
              args:
                - --source=service
                - --source=ingress
                - --domain-filter=<your-domain> # makes only hosted zones visible
                - --provider=aws
                - --policy=upsert-only # prevents record deletion
                - --aws-zone-type=public # public zones only
                - --registry=txt
                - --txt-owner-id=my-hostedzone-identifier
              env:
                - name: AWS_DEFAULT_REGION
                  value: <aws-region> # sets the EKS region
          # # Uncomment the following settings when using static credentials
          #       - name: AWS_SHARED_CREDENTIALS_FILE
          #        value: /.aws/credentials
          #     volumeMounts:
          #       - name: aws-credentials
          #         mountPath: /.aws
          #         readOnly: true
          # volumes:
          #   - name: aws-credentials
          #     secret:
          #       secretName: external-dns
    ```
2. 新しい YAML ファイルの場合、デプロイメントで必要に応じて次のオプションを設定します。
    
    - `args`​ オプション:
        
        - `- --domain-filter=<your-domain>`​: ドメインに一致するホストゾーンを ExternalDNS で参照できるようにします。すべての使用可能なホストゾーンを処理するには、このオプションを省略します。
            
            このオプションは、​`external-dns`​ が意図したとおりに動作するために重要です。
        - `- --policy=upsert-only`​: ExternalDNS でレコードが削除されないようにします。完全な同期を有効にするには、このオプションを省略します。
        - `- --aws-zone-type=public`​: 公開ホストゾーンのみを参照できるようにします。有効な値は ​`public`​ または ​`private`​ です。または、両方のゾーン種別の値を指定しないこともできます。
    - `env`​ オプション ​`value: <aws-region>`​: EKS クラスターがインストールされるリージョン (例: `us-east-1`​)。
3. 静的ログイン情報を使用する場合、非表示の ​`env`​ および ​`volumes`​ 設定が含まれる行からコメント (​`#`​) を削除します。
4. ターミナルウィンドウから次のコマンドを使用して、設定をクラスターに適用します。
    
    ```kubctl
    kubectl create --filename <external-dns-yaml> --namespace <your-namespace>
    ```

## [](#flex-gateway-の-helm-チャートを介して-dns-名を設定する)Flex Gateway の Helm チャートを介して DNS 名を設定する

`helm upgrade`​ で ​`extraAnnotations`​ パラメーターを使用して、ドメイン名を設定します。このパラメーターについては、 [「Helm chart for Flex Gateway (flex-gateway) (Flex Gateway の Helm チャート (flex-gateway))」](https://artifacthub.io/packages/helm/flex-gateway/flex-gateway)​を参照してください。

1. YAML 設定ファイルを作成して、ExternalDNS キーと、カンマ区切りのドメイン値のセットを指定します。
    
    プレースホルダー値 ​`<domain-0>,…​,<domain-N>`​ を各自のドメインに置き換えます。
    
    extraAnnotations:
      external-dns.alpha.kubernetes.io/hostname: <domain-0>,...,<domain-N>
2. `-f`​ オプションを使用して、設定ファイルを ​`helm upgrade`​ コマンドに渡します。
    
    使用するコマンドは、登録済みゲートウェイがクラスターにデプロイされているかどうかによって異なります。
    
    1. 始めて Flex Gateway をクラスターにデプロイする場合、次のコマンドを実行します。プレースホルダー値は、各自のゲートウェイの登録 YAML ファイル (デフォルトでは ​`registration.yaml`​) へのパスとドメイン名に置き換えます。
        
        ```helm
        helm -n gateway upgrade \
        -i --create-namespace \
        --wait ingress flex-gateway/flex-gateway \
        --set-file registration.content=<path-to-registration> \
        -f <your-YAML-config-file>
        ```
    2. アノテーションを使用して実行中のゲートウェイを更新する場合、次のコマンドを実行します。
        
        ```helm
        helm -n gateway upgrade \
        --wait ingress flex-gateway/flex-gateway \
        --reuse-values \
        -f <your-YAML-config-file>
        ```