0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CrossplaneでAWS Route53のZoneを作成したら、どんな情報が得られるのか?

Posted at

CrossplaneでAWS Route53のZoneリソースを作成すると、どのような情報が取得できるのか気になったので検証してみました。
本稿では、実際にZoneリソースを作成して得られる様々な情報(external-name、ネームサーバー、ARN、ゾーンID)について、具体的な値とその格納場所を紹介します。

結論

Zoneリソースを作成すると、以下の情報が取得できます:

  • external-name: Route53のホストゾーンID(例: Z00601612X8VLNNVAI1QZ)
  • ネームサーバー: AWSが割り当てた4つのネームサーバー
  • ARN: Amazon Resource Name
  • ゾーンID: Route53のゾーン識別子

これらの情報は、Kubernetes上でのDNS管理や他のAWSリソースとの連携に活用できます。

検証環境

本稿では、以下の環境で検証を行いました:

  • kind v0.26.0
  • Crossplane v1.19.0
  • AWS Provider for Route53 v1.20.1
  • AWS CLIとRoute53の権限を持つIAMユーザー

検証環境の構築手順

1. 必要なツールのインストール

まず、以下のツールを準備します:

  • Docker
  • devbox(kind, kubectlを自動的に導入)
  • AWS CLI
  • Route53の権限を持つIAMユーザーのアクセスキー

2. kindクラスタの作成

kindを使って新しいKubernetesクラスタを作成します:

kind create cluster

3. Crossplaneのインストール

Helmを使ってCrossplaneをインストールします:

# Helmリポジトリの追加
helm repo add crossplane-stable https://charts.crossplane.io/stable
helm repo update

# Crossplaneのインストール
helm install crossplane \
  crossplane-stable/crossplane \
  --namespace crossplane-system \
  --create-namespace \
  --version 1.19.0

# インストールの完了を待機
kubectl wait deployment -n crossplane-system crossplane \
  --for=condition=Available \
  --timeout=5m

4. AWS Route53 Providerのインストール

以下の内容でprovider.yamlを作成します:

apiVersion: pkg.crossplane.io/v1
kind: Provider
metadata:
  name: provider-aws-route53
spec:
  package: xpkg.upbound.io/upbound/provider-aws-route53:v1.20.1

作成したProviderをインストールします:

kubectl apply -f provider.yaml

# インストールの完了を待機
kubectl wait provider.pkg.crossplane.io/provider-aws-route53 \
  --for=condition=Healthy \
  --timeout=5m

5. AWS認証情報の設定

AWS認証情報をSecretとして作成します:

kubectl create secret generic aws-secret \
  --namespace crossplane-system \
  --from-literal=credentials="[default]
aws_access_key_id = <YOUR_ACCESS_KEY>
aws_secret_access_key = <YOUR_SECRET_KEY>"

6. ProviderConfigの作成

以下の内容でprovider-config.yamlを作成します:

apiVersion: aws.upbound.io/v1beta1
kind: ProviderConfig
metadata:
  name: default
spec:
  credentials:
    source: Secret
    secretRef:
      namespace: crossplane-system
      name: aws-secret
      key: credentials

作成したProviderConfigを適用します:

kubectl apply -f provider-config.yaml

実際の検証手順

1. Route53 Zoneリソースの作成

以下の内容でzone.yamlを作成します:

apiVersion: route53.aws.upbound.io/v1beta1
kind: Zone
metadata:
  name: example-zone
spec:
  forProvider:
    name: example.test
    region: ap-northeast-1

注意: .testはRFC 6761で定義された特別用途ドメインで、検証環境に最適です。実際の運用では、自分が所有する正規のドメインを使用してください。

Zoneリソースを作成します:

# Zoneリソースの作成
kubectl apply -f zone.yaml

# Readyの状態になるまで待機
kubectl wait zone example-zone --for=condition=Ready --timeout=5m

2. 作成されたリソースの確認

Zoneリソースの状態を確認します:

kubectl get zone example-zone -o yaml

検証結果の詳細

1. external-nameの値

metadata.annotationscrossplane.io/external-nameには、Route53のホストゾーンIDが格納されます:

metadata:
  annotations:
    crossplane.io/external-name: Z00601612X8VLNNVAI1QZ

このIDは、AWS Route53で作成されたホストゾーンを一意に識別する文字列です。

2. ネームサーバー情報

ネームサーバー情報はstatus.atProviderに2つの形式で格納されます:

status:
  atProvider:
    nameServers:
      - ns-1004.awsdns-61.net
      - ns-1221.awsdns-24.org
      - ns-1879.awsdns-42.co.uk
      - ns-207.awsdns-25.com
    primaryNameServer: ns-207.awsdns-25.com
  • nameServers: AWSが割り当てた4つのネームサーバーの配列
  • primaryNameServer: プライマリとして指定されたネームサーバー

3. ARN(Amazon Resource Name)

ARNはstatus.atProvider.arnに以下の形式で格納されます:

status:
  atProvider:
    arn: arn:aws:route53:::hostedzone/Z00601612X8VLNNVAI1QZ

4. ゾーンID

ゾーンIDはstatus.atProvider内の2箇所に同じ値が格納されます:

status:
  atProvider:
    id: Z00601612X8VLNNVAI1QZ
    zoneId: Z00601612X8VLNNVAI1QZ

クリーンアップ

検証が終わったら、以下の手順でリソースを削除します:

# Route53 Zoneの削除
kubectl delete zone example-zone

# kindクラスタの削除
kind delete cluster

まとめ

CrossplaneでRoute53のZoneリソースを作成すると、様々な有用な情報が自動的に取得できることがわかりました。これらの情報は、Kubernetes上でのDNS管理や他のAWSリソースとの連携に活用できます。

特に、ネームサーバー情報が自動的に取得できる点は、DNSの設定を自動化する際に非常に便利です。また、ゾーンIDやARNも他のリソースから参照できるため、Kubernetes上でのDNS管理をより柔軟に行えます。

本稿の内容が、CrossplaneでのAWS Route53管理の参考になれば幸いです。最後までお読みいただき、ありがとうございました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?