GitHub Actions を使ったプライベートAKS クラスターへのデプロイ方法の選択

288 Views

January 24, 26

スライド概要

2026年1月24日の『第8回 Azure Travelers 勉強会 仙台の旅』のLT 資料です。

profile-image

都内で働いているインフラエンジニアです。Azure を含むMicrosoft 製品、インフラ、CI/CD を強みとしています。Microsoft MVP 2025~

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

GitHub Actions を使った プライベートAKS クラスターへのデプロイ方法の選択 2026/01/24 第8回 Azure Travelers 勉強会 仙台の旅 Kazuki Yamabe

2.

アジェンダ • 自己紹介 • Azure Kubernetes Service (AKS) & GitHub Actions • GitHub Actions を使ったプライベートAKS クラスターのデプロイにおける課題 • GitHub Actions を使ったプライベートAKS クラスターへのデプロイ • まとめ 2

3.

アジェンダ • 自己紹介 • Azure Kubernetes Service (AKS) & GitHub Actions • GitHub Actions を使ったプライベートAKS クラスターのデプロイにおける課題 • GitHub Actions を使ったプライベートAKS クラスターへのデプロイ • まとめ 3

4.

自己紹介 名前:Kazuki Yamabe 所属:アバナード株式会社 受賞歴:Microsoft MVP 2025 ~ (Azure Compute Infrastructure、Azure Networking) ◼ ブログ・SNS • ブログ:https://www.kdkwakaba.com/ • X:@kdk_wakaba • Linkedin:kdk-wakaba 4

5.

注意事項 • 本内容は2026年1月24日現在の内容となります。今後のアップデートで仕様変更と なる可能性もあるためご了承ください • 本内容は個人の見解であり、会社の方向性、戦略、意見ではありません 5

6.

本日のゴール • プライベートAKS クラスターにどのようなデプロイ方法があるか理解できている • 環境や社内の状態に応じて、GitHub Actions を用いたプライベートAKS クラスター へのデプロイ方法を選択できること 6

7.

アジェンダ • 自己紹介 • Azure Kubernetes Service (AKS) & GitHub Actions • GitHub Actions を使ったプライベートAKS クラスターのデプロイにおける課題 • GitHub Actions を使ったプライベートAKS クラスターへのデプロイ • まとめ 7

8.

Azure Kubernetes Service (AKS) とは Azure Kubernetes Service (AKS) はAzure 上でマイクロサービスやクラウドネイ ティブアプリに必要なKubernetes を使用できるサービス Node の自動スケーリ ングにより、需要に応じ てNode を柔軟に増 減でき、一時的な負 荷への対応、需要の 少ない時のコストを削 減 Azure 用に最適化さ れたネットワーク構成や アドオン、拡張機能、 サードパーティ製OSS との統合により、 Kubernetes 構築期 間を短縮 Azure Policy や Entra ID のような Azure サービスと統合 することで、クラスター 操作やリソース管理に 対する認証・権限制 御を一元的に管理 Kubernetes の自動 アップグレード、Azure Monitor のようなサー ビス統合により運用負 荷を削減 参考: Azure Kubernetes Service (AKS) とは 8

9.

GitHub Actions とは GitHub Actions はGitHub が提供する開発、運用のようなタスク自動化を目的とし たCI/CD プラットフォーム GitHub 上のPushや Pull Request のよう なイベントから、API を 介した外部トリガー、 定期実行、手動実行 と様々なトリガーで実 行可能 YAML 形式で直感的 にワークフローを記述で き、バージョン管理や 習得が容易 GitHub ホストのラン ナー以外に自前マシン もランナーとして利用で き、セキュリティや性能 要件に合わせた実行 環境を構成可能 シークレット管理、アク セス制御、監査ログを 備え、GitHub 上でセ キュアかつ統制の取れ た運用・管理を実現 参考: GitHub Actions を理解する 9

10.

アジェンダ • 自己紹介 • Azure Kubernetes Service (AKS) & GitHub Actions • GitHub Actions を使ったプライベートAKS クラスターのデプロイにおける課題 • GitHub Actions を使ったプライベートAKS クラスターへのデプロイ • まとめ 10

11.

GitHub Actions を使ったプライベートAKS クラスターのデプロイにおける課題 プライベートAKS クラスターでは外部のGitHub ホストから直接通信ができない Resource Group Virtual Network × GitHub Actions Private Link Azure Kubernetes Service 11

12.

アジェンダ • 自己紹介 • Azure Kubernetes Service (AKS) & GitHub Actions • GitHub Actions を使ったプライベートAKS クラスターのデプロイにおける課題 • GitHub Actions を使ったプライベートAKS クラスターへのデプロイ • まとめ 12

13.

GitHub Actions を使ったプライベートAKS クラスターへのデプロイ方法 • Azure CLI のaks command invoke、公式デプロイアクション • Azure プライベートネットワーク経由のデプロイ • セルフホステッドランナーを介したデプロイ (GHES 含む) ※ 本内容はGitHub Actions でのプライベートAKS クラスターデプロイをメインとするため、GitOps を用いたデプロイは省略します。 13

14.

Azure CLI のaks command invoke、公式デプロイアクション • AKS クラスター内にコマンド実行用の一 時Pod を作成しコマンドを実行する - Azure Portal から実行できるRun command も同じ挙動になるが、Run command はAzure Portal にログイン舌 ユーザーの権限、Azure CLI はコマンドで ログインしたユーザーやSP、マネージドID の 権限となる • 公式のAKS アクション (azure/k8sdeploy) のwith 句で「privatecluster: true」を設定すると、内部的に aks command invoke を呼び出す ①az aks command invoke 実行 ②コマンド実行用Pod 作成 ③コマンド実行 • AKS 利用が少ないケースや専用環境の 準備をしたくないケースで有効 参考: コマンド呼び出し機能またはコマンド実行機能を使用してプライベート Azure Kubernetes Service (AKS) クラスターにアクセスする 14

15.

一時Pod の注意点 • 一時Pod はvCPU 0.2、メモリ 500 MiB のため、重い処理は非推奨 - デプロイ後に色々な処理が必要な場合はActions 側で処理を行う • AKS クラスター内にPod 用のリソースが不足している、Limit で制限をしている場合 はPod を作成できるエラーになる 参考: コマンド呼び出し機能またはコマンド実行機能を使用してプライベート Azure Kubernetes Service (AKS) クラスターにアクセスする 15

16.

Azure プライベートネットワーク経由のデプロイ • GitHub ホストのランナーにサブネットの一 時NIC を接続し、仮想ネットワーク間の 通信を行う - GitHub ホストを使うためインフラ管理が不 要だが、仮想ネットワークとNSG の許可が 必要 ①NIC をデプロイしGitHub ホストのランナーと関連付ける • GitHub Enterprise Cloud (GHEC) の機能のためライセンスの購入が必要 - Azure 以外のパブリッククラウドは利用不可 ②仮想ネットワーク経由で デプロイ • セキュリティ要件が厳しくなく、専用の実行 環境を準備したくない、Azure メインの場 合に有効 参考: 企業内の GitHub ホストランナー向けの Azure プライベート ネットワークについて Peering 16

17.

セルフホステッドランナーを介したデプロイ (GHES 含む) • Azure 内部のネットワークにセルフホステッ ドランナーを構築し、セルフホステッドラン ナー経由でデプロイする ①セルフホステッドランナーに ジョブ実行を指示 - GitHub Enterprise Server のGitHub Actions もセルフホステッドランナーとなる • セルフホステッドのため、実行環境の運用・ 管理工数がかかる • セキュリティ要件が厳しい場合やスペックの 詳細なカスタマイズをしたいケースに有効 ②仮想ネットワーク経由で デプロイ - 外部環境にコードを配置できない、など Peering - Actions Runner Controller で異なるス ペックの実行環境を用意することも可能 参考: セルフホステッド ランナー 17

18.

デプロイ方法の比較表 Azure CLI のaks command invoke、公式 デプロイアクション Azure プライベートネット ワーク経由のデプロイ セルフホステッドランナーを介し たデプロイ (GHES 含む) AKS の利用が少なく、プライベート リソースへの接続が少ない AKS 以外のプライベートリソース接 続が複数ある AKS 以外のプライベートリソース接 続が複数ある コスト AKS クラスターの従量課金のみ GitHub Enterprise Cloud のラ イセンスと仮想ネットワークの通信料 金 セルフホステッドランナーのAzure リ ソース料金 運用・管理 一時Pod のためリソースの管理は 不要 関連付ける仮想ネットワークの運 用・管理が必要、ランナーの管理は 不要 セルフホステッドランナーの運用・管 理が必要 利用規模 • 制約事項 ユースケース • コマンド実行用Pod のスペック はカスタマイズ不可 AKS クラスターのネットワークに 依存するため、処理によって通 信経路が必要 AKS の利用者が少なく、簡易的 なデプロイで済む場合や専用環境 の構築・運用負荷、コストを抑え たいケースに利用 • • GitHub Enterprise Cloud が必須 東日本リージョンはサポート対 象外 大規模環境やAKS 以外にもプラ イベートリソースへのデプロイや自 動化が必要なケースに利用 • • GitHub ホステッドランナーとの 環境差異による一部アクション、 機能の挙動に差異が発生する Deprecated 機能や最新の 改善にはアップデートが必要 セキュリティの制約がある場合、実 行環境をカスタマイズしたいケース に利用 18

19.

アジェンダ • 自己紹介 • Azure Kubernetes Service (AKS) & GitHub Actions • GitHub Actions を使ったプライベートAKS クラスターのデプロイにおける課題 • GitHub Actions を使ったプライベートAKS クラスターへのデプロイ • まとめ 19

20.

まとめ • 外部のGitHub からAzure 内部のプライベートAKS クラスターには直接デプロイでき ないため、ネットワーク内からデプロイする方法を使う必要がある • GitHub Actions を使ってプライベートAKS にデプロイするには以下のような方法があ る - AKS の利用が少ない、実行環境構築やコストを抑えたい場合はGitHub Actions から az aks command invoke か公式のデプロイアクションで対応する - GitHub Enterprise Cloud を利用し、AKS 以外のプライベートリソースに対しデプロイや 自動化が必要な場合はAzure のプライベートネットワークへの関連付けで対応する - 企業のセキュリティ要件で直接ネットワークを接続できない、細かいカスタマイズが必要なケー スにはセルフホステッドランナーで対応する 20

21.

Appendix • Azure Kubernetes Service (AKS) でのアプリケーションとクラスターに対するセキュリティの概念 • Azure Kubernetes Service (AKS) のアドオン、拡張機能、およびその他の統合 • GitHub Actions を使った Azure Kubernetes Service (AKS) へのコンテナーのビルド、テスト、デプロイ • az aks command • エンタープライズの GitHub Actions について • GitHub Enterprise Server の GitHub Actions を使い始める • Actions Runner Controller 21