cert-manager と Azure DNS で ACME DNS-01 チャレンジ

はじめに 前回の投稿で Google Domains で購入したドメインを Azure DNS に委任しました。 今回は cert-manager というツールを使って、自宅ラボの Kubernetes クラスタで LAN に公開している Ingress 用の証明書を発行します。 証明書は Let’s Encrypt に署名してもらうのですが、Let’s Encrypt がドメインの所有をチェックするために Azure DNS を使って「DNS01 チャレンジ」を突破します。 ドメインの所有のチェック方法として「HTTP01 チャレンジ」もありますが、こちらはインターネットからアクセス可能なエンドポイントを用意する必要があるため、インターネットに非公開の自宅ラボでは使えません。 今までも cert-manager を使って nnstt1.home という独自ドメインの自己署名証明書を発行していたのですが、ブラウザの警告を回避するためのルート証明書の設定が面倒でした。 そこで、nnstt1.dev のサブドメイン home.nnstt1.dev に対して証明書を発行(署名)してもらって、自宅ラボでも警告なしで使えるようにします。 手順の流れは以下です。 Azure にサービスプリンシパル作成する Kubernetes クラスタに Issuer / Certificate リソースを作成して証明書を発行する Ingress で証明書を使ってサービスを公開する なお、前提として Kubernetes クラスタには既に cert-manager がインストールされているものとして手順を記載しています。 サービスプリンシパル作成 AKS では ID 管理がより楽な「マネージド ID」を使うことができますが、自宅クラスタなので「サービスプリンシパル」を使用します。 はじめに、サービスプリンシパル名などの変数を設定します。 $ AZURE_CERT_MANAGER_NEW_SP_NAME=home-lab-cert-manager $ AZURE_DNS_ZONE_RESOURCE_GROUP=home-lab $ AZURE_DNS_ZONE=nnstt1.dev サービスプリンシパルを作成して、アプリケーション ID などの情報を変数に格納します。...

April 8, 2023 · 4 min · @nnstt1

Google Domains のドメインを Azure DNS に委任する

はじめに Google Domains で nnstt1.dev というドメインを購入しているのですが、最近 Azure を使うことが増えてきたので、ドメイン管理も Azure DNS に委任しました。 以下のドキュメントを参照しています。 チュートリアル:Azure DNS でドメインをホストする | Microsoft Learn ドキュメント内では Azure Portal を使って Azure DNS を操作していますが、今回は Azure CLI を使って作業しました。 DNS ゾーンの作成 はじめに、移管先となる DNS ゾーンを作成します。 $ az network dns zone create \ --name nnstt1.dev \ --resource-group $RG_NAME 作成できたか確認します。 $ az network dns zone list -o table ZoneName ResourceGroup RecordSets MaxRecordSets ------------- ------------------ -------------- ------------------- nnstt1.dev home-lab 2 10000 DNS ゾーンが作成されていることを確認できました。 次に、割り当てられたネームサーバを確認します。 $ az network dns record-set ns list \ --resource-group $RG_NAME \ --zone-name nnstt1....

March 31, 2023 · 2 min · @nnstt1