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

Azure Static Web Apps を Terraform Cloud で管理する

はじめに 本ブログは Azure の Azure Static Web Apps という PaaS でホスティングしています。 今までは Azure Portal で画面ポチポチしながら設定変更していましたが、なにかあったときに備えてリソースを Terraform で管理するようにします。 いわゆる Infrastructure as Code です。 今回は Azure Static Web Apps の既存リソースを Terraform 構成ファイルに落とし込んで、Terraform 自体を Terraform Cloud に管理してもらう形にします。 どちらかと言うと Terraform Cloud を使う方便だったり。 Azure Static Web Apps 既存リソースの Terraform 化 まず、Azure Static Web Apps のリソースを Terraform で管理できるように構成ファイルを作成します。 事前にプロバイダの設定ファイルを作成してから terraform init しておきます。 terraform { required_version = ">= 0.12" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~> 3....

January 18, 2023 · 3 min · @nnstt1

2022 年振り返りと 2023 年の抱負

今年の年末は大きな仕事があって丸一日休みという日がなく慌ただしい日々です。 とはいえ、スポットで対応する感じでスキマ時間があるので、昨年掲げた抱負を確認しつつ1年を振り返ります。 昨年は ↓ の抱負を掲げていたようです。 家族との時間を大切にする 転職の目処をつける 2022 年の振り返り 育休取得 今年の4月に双子(第2、3子)が生まれました。 長男出生時は特別休暇をもらったので、その日数(3日?5日?既に覚えてない)休んだだけでした。 その休み中は書類関係の手続きしたり、退院準備をしたり、と育児以外のミッションをしていたらあっという間に休みが終わりました。 次の子も同じ感じになるかなぁと朧気ながら思っていましたが、昨年に双子妊娠がわかって、更には妻が早期に入院する可能性が出てきた(結果的にそうなった)ため、育休を取ることにしました。 結果的には 3~4 月に長男分、5~7 月に次男三男の育休を取得して、計5ヶ月お休みしました。 5ヶ月は職場への負担が大きいかと思ったのですが、現職では男性の育休がボチボチ出てきたところだったので、相談はしやすかったです。 そういうことで、今年1年の約半分は家族メインの生活ができたので「家族との時間を大切にする」という抱負は達成できました。 育休中の振り返りは Note に投稿しました。 育休が終わったので振り返ってみた 転職活動 昨年から転職活動をしていましたが、子供が生まれることもあって中断していました。 まだ具体的な内容は言及できませんが「転職の目処をつける」という抱負は達成できたと思います。 アウトプット 今年は本ブログに 17 本投稿しました。 ラズパイ Ceph を Zabbix で監視する Cephadm のアラートを消す PG の修復 Ceph ホストのメンテナンス Red Hat Developer Subscription の有効期限が切れたので再登録した AMD CPU 使っていて RHEL 9 にアップグレードできなかった話 Fedora ラズパイの PoE+ HAT ファンをコントロールする 仮想化基盤の Proxmox VE への移行 Proxmox VE を管理するため Terraform に入門した Terraform で Proxmox VE の VM パラメータ設定 ansible....

December 31, 2022 · 1 min · @nnstt1

Podman Desktop がリリースされたのでインストールする

Podman Desktop がリリースされたので Windows にインストールしました。 インストールしただけです。 Podman Desktop とは Publickey さんの記事にすべて書かれてます。 GUIでDockerコンテナのビルドやPodsのKubernetesへの展開を可能にする「Podman Desktop」が登場。新たなDocker Desktop対抗となるか GUIでDockerコンテナやKubernetesの操作を可能にするオープンソースの「Podman Desktop」がリリースされたことをRed Hatが発表しました。Windows、Mac、Linuxに対応します。 Install, co... インストール Podman Desktop 公式ページ に MacOS, Windows, Linux の各環境向けインストールマニュアルがあります。 今回は Windows 向けマニュアルを参照しました。 前提条件に「Hyper-V が有効化されていること」と「WSL2 がインストールされていること」とありますが、今回は両方ともインストール済みだったので省略します。 マニュアルによると Podman Desktop からそれぞれインストールできるようです。 Podman Desktop ダウンロードページ から .exe ファイルをダウンロードします。 バージョンは v0.9.1 でした。 ダウンロードした .exe を起動すると、匿名で情報収集してよいかと聞かれます。 任意ですがこころよく OK します。 Podman Desktop のダッシュボードが表示されますが、Podman が見つからないと表示されました。 この Windows には Podman 自体もインストールしていませんでした。 [Install] ボタンを押すと Podman をインストールするか聞かれます。 今回はバージョン v4.3.0 でした。 GitHub のリポジトリを見ると v4....

November 16, 2022 · 2 min · @nnstt1

Terraform で AKS と AGW をデプロイする

前回の投稿で、Terraform を使って AKS で AGIC を動かす際のハマりポイントを紹介しました。 その際はマネージド ID の権限周りの設定がうまくできていなかったのですが、解決方法がわかったので改めて Terrafrom で AKS と AGW をデプロイする書き方を整理します。 デプロイパターン まず、AGIC から使う前提の AGW を Terraform でデプロイするパターンとしては以下の 2 つが考えられます。 AKS と AGW を個別にデプロイ AKS デプロイ時に AGW も作成 それぞれについて、Terraform の書き方とデメリットについて説明します。 前提条件として、以下のリソースは既に存在しているものとします。 リソースグループ VNet AKS 用 サブネット AGW 用 サブネット AKS と AGW を個別にデプロイ PIP AKS と AGW を個別にデプロイするパターンでは、Public IP も作成する必要があります。 resource "azurerm_public_ip" "pip" { name = local.pip_name resource_group_name = azurerm_resource_group.rg.name location = azurerm_resource_group.rg.location allocation_method = "Static" sku = "Standard" } AGW 次に、PIP に依存する形で AGW を作成します。...

November 2, 2022 · 5 min · @nnstt1

K8s@home で LT したので振り返る

2022/10/12 に開催された K8s@home #1 で LT したので振り返ります。 K8s@home とは 最近できたコミュニティです。 運営は @superbrothers さんと @yuanying さんです。 以下はコミュニティページの説明文。 K8s@home # 本グループについて 自宅でラズパイや NUC、VM、そのほか VPS 等を使って個人の趣味として Kubernetes クラスタを構築、運用する人たちが情報交換、懇親する場所です。クラスタ構成や利用するアドオン、デプロイするアプリケーションなどなど、自宅、趣味のクラスタならではのおもしろ情報、こだわりポイントを共有します。 自宅でのクラスタ運用を楽しんでいる人、パブリッククラウドで格安での運用を目指している人、これから個人のクラスタを飼ってみたい人はぜひご参加ください。 # ミートアップの開催について 不定期の開催を予定しています。 # そのほか 業務における真面目な K... 自宅でラズパイや NUC、VM、そのほか VPS 等を使って個人の趣味として Kubernetes クラスタを構築、運用する人たちが情報交換、懇親する場所です。クラスタ構成や利用するアドオン、デプロイするアプリケーションなどなど、自宅、趣味のクラスタならではのおもしろ情報、こだわりポイントを共有します。 自宅でのクラスタ運用を楽しんでいる人、パブリッククラウドで格安での運用を目指している人、これから個人のクラスタを飼ってみたい人はぜひご参加ください。 このように、Kubernetes Meetup Tokyo と同じ Kubernetes 関連ではあるけど方向性が違ったコミュニティになります。 個人的な印象としては、Kubernetes Meetup Tokyo は「仕事でもバリバリ Kubernetes 使っている人たちが最新事例を共有したい」コミュニティで、K8s@home は「肩の力を抜いて Kubernetes を触ってみたよ」なコミュニティかなと思いました(その割に登壇内容は全員レベル高かったですが!!!)。 動機 前回の LT が一年前の Kubernetes Novice Tokyo #11 でした。 その間も仕事で Kubernetes に触る機会はまったく増えないし、新しく登壇するネタもなく自宅で K8s クラスタとチマチマ戯れる日々。 途中で下の子達も産まれて時間的余裕もなくなってました。...

October 26, 2022 · 1 min · @nnstt1

Terraform で AGIC を使おうとしてハマった

Terraform を使って Azure Kubernetes Service (AKS) で AGIC を動かす機会があったので、ハマりポイントを記録しておきます。 AGIC とは Application Gateway Ingress Controller (AGIC) は、Azure ネイティブの L7 ロードバランサ Application Gateway を利用した AKS で動作する Ingress Controller です。 AGIC を使うことで、AKS で Application Gateway の機能(URL ルーティングや TLS 終端)を使うことができます。 また、AKS クラスタ外の Application Gateway がオートスケールするため、トラフィックの増減に対してクラスタでのリソース消費がありません。 この機能を使うためには、Azure に AKS と Application Gateway、そして Public IP のリソースをデプロイする必要があります。 Terraform から Application Gateway を作成する方法として 2 パターンあります。 Application Gateway と Public IP のリソースタイプを指定する AKS のリソースタイプで Application Gateway を指定する ちなみに、利用した Terraform のバージョンは以下になります(バージョン古いと怒られていますね…)。...

October 25, 2022 · 2 min · @nnstt1

Rook v1.10 へアップグレード

Rook の新バージョン v1.10.0 がリリースされたようなので、早速、自宅ラボの Rook/Ceph をアップグレードしてみます。 マイナーバージョンが上がったときくらいは変更内容を追わないと、と思ってマニフェストの差分を確認しました。 アップグレード手順 アップグレードは公式ドキュメントに載っている手順どおりに進めました。 Rook Upgrades - Rook Ceph Documentation 自宅ラボの Rook は ArgoCD で管理しているので、クラスタ用リポジトリの以下のマニフェストを v1.10.0 の内容でマージしただけアップグレード完了しました。 common.yaml crds.yaml operator.yaml cluster.yaml 今回は common.yaml と operator.yaml の変更点を見ていきます。 cluster.yaml は Ceph のバージョンが違うだけなので割愛、crds.yaml は変更内容が多いため諦め。 アップグレード前の Rook のバージョンは v1.9.5 です。 common.yaml common.yaml には Namespace や RBAC 関連のリソースが記述されています。 削除 Kubernetes v1.25 で PSP が正式に廃止されたことが起因で、common.yaml から PSP に関連したリソースが削除されています。 そして v1.25 未満の Kubernetes 向けに PSP 関連をまとめた psp.yaml が作られています。 リソース 名前 PR ClusterRole psp:rook #10816 ClusterRoleBinding rook-ceph-system-psp #10816 ClusterRoleBinding rook-csi-cephfs-plugin-sa-psp #10816 ClusterRoleBinding rook-csi-cephfs-provisioner-sa-psp #10816 ClusterRoleBinding rook-csi-rbd-plugin-sa-psp #10816 ClusterRoleBinding rook-csi-rbd-provisioner-sa-psp #10816 ClusterRoleBinding cephfs-csi-nodeplugin #10033 PodSecurityPolicy 00-rook-privileged #10816 RoleBinding rook-ceph-cmd-reporter-psp #10816 RoleBinding rook-ceph-default-psp #10816 RoleBinding rook-ceph-mgr-psp #10816 RoleBinding rook-ceph-osd-psp #10816 RoleBinding rook-ceph-purge-osd-psp #10816 RoleBinding rook-ceph-rgw-psp #10816 また、PSP 関連とは別に ClusterRoleBinding cephfs-csi-nodeplugin が削除されています。...

September 2, 2022 · 3 min · @nnstt1

AWS SAA に合格したので振り返る

2022/8/12 に AWS 認定の一つ、「AWS Certified Solutions Architect - Associate (SAA)」をパスしたので記録しておく。 動機 普段 AWS を使う機会はほとんどなく、過去に EC2 や Route53 をチョロっと触ったことがある程度だった。 前職で「AWS を使うかも」となったときに研修に行かせてもらったけど、今となっては全く記憶に残っていないレベル。 関係ないけど、講師が逸般の誤家庭界隈では有名なお方だったと最近知った。 機会があれば AWS を学びたいと思っていたが、そんな折、AWS 認定取得: Associateチャレンジ というキャンペーンを知った。 Associate レベルの受験料が 25% オフになるバウチャーを貰えるらしい。 AWS 認定取得: Associateチャレンジ がスタートしました🎉 ■AssociateレベルのAWS認定を取得する個人を応援するキャンペーンで、先着1000名に25%割引バウチャーを提供! ■参加登録ページhttps://t.co/5VtaZayfCD ■期間は6月13日〜8月31日ですが、参加登録期限は7月10日です。早めにご登録を! pic.twitter.com/2WVsIbRYvk — Wataru Nishimura (@kuwablo) June 12, 2022 Associate レベルの受験料は ¥15,000 (税抜) なので ¥3,750 ほどお安くなる。 Microsoft Cloud Skills Challange と似ているけど、こっちは登録するだけでいい。 これはよい機会だ、ということで AWS SAA を受けるために早速登録してみた。 AWS 認定取得: Associate チャレンジに登録したので AWS SAA ください — ののし (@nnstt1) June 14, 2022 2022/8/30 で AWS SAA の試験内容が更新されるということを登録後に知った。 現行は SAA-C02、更新後は SAA-C03 という。...

August 14, 2022 · 1 min · @nnstt1