Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerExternalDNS を使用して、わかりにくい外部 IP やランダムなホスト名の代わりにドメイン名で Kubernetes クラスターのアプリケーションまたはサービスを公開します。
ExternalDNS は、多くの DNS プロバイダーの DNS 設定をサポートするオープンソースプロジェクトです。このツールは、DNS サーバーまたはプロバイダーではありません。代わりに、ExternalDNS は公開 DNS サーバーを介して Kubernetes リソースを検出し、サポートされている DNS プロバイダーのリソースを設定します。
このガイドでは、ExternalDNS を使用して、AWS Route 53 プロバイダー (ExternalDNS でサポートされている安定性の高いプロバイダーの 1 つ) のドメイン名を設定します。
次の前提条件が準備されていることを確認します。
AWS の Kubernetes クラスター
AWS クラスターへの Flex Gateway デプロイメントまたは登録済みの Flex Gateway インスタンス (ゲートウェイ)
ゲートウェイの登録およびデプロイメントプロセスについては、Flex Gateway のセットアップ or Kubernetes クラスターでの Flex Gateway の使用開始 を参照してください。
ExternalDNS が Amazon Route 53 リソースレコードセットとホストゾーンを更新することを許可する AWS Identity and Access Management (IAM) ポリシー
別の対象を使用したり、これらの許可で IAM ポリシーを作成したりするには、 ExternalDNS ドキュメントを参照してください。
ExternalDNS (external-dns
) をクラスターに追加するには、次のコンテンツが含まれる 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
新しい 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
)。
静的ログイン情報を使用する場合、非表示の env
および volumes
設定が含まれる行からコメント (#
) を削除します。
ターミナルウィンドウから次のコマンドを使用して、設定をクラスターに適用します。
kubectl create --filename <external-dns-yaml> --namespace <your-namespace>
helm upgrade
で extraAnnotations
パラメーターを使用して、ドメイン名を設定します。このパラメーターについては、 「Helm chart for Flex Gateway (flex-gateway) (Flex Gateway の Helm チャート (flex-gateway))」を参照してください。
YAML 設定ファイルを作成して、ExternalDNS キーと、カンマ区切りのドメイン値のセットを指定します。
プレースホルダー値 <domain-0>,…,<domain-N>
を各自のドメインに置き換えます。
extraAnnotations: external-dns.alpha.kubernetes.io/hostname: <domain-0>,...,<domain-N>
-f
オプションを使用して、設定ファイルを helm upgrade
コマンドに渡します。
使用するコマンドは、登録済みゲートウェイがクラスターにデプロイされているかどうかによって異なります。
始めて Flex Gateway をクラスターにデプロイする場合、次のコマンドを実行します。プレースホルダー値は、各自のゲートウェイの登録 YAML ファイル (デフォルトでは registration.yaml
) へのパスとドメイン名に置き換えます。
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>
アノテーションを使用して実行中のゲートウェイを更新する場合、次のコマンドを実行します。
helm -n gateway upgrade \
--wait ingress flex-gateway/flex-gateway \
--reuse-values \
-f <your-YAML-config-file>