このガイドでは、Azure Kubernetes Service (AKS) で実行されている高可用性 GitHub Actions コントローラーとセルフホステッド エージェントをデプロイします。 セルフホステッド ランナーは、永続的ストレージに SMB Azure ファイル共有を使用します。
Von Bedeutung
オープンソース ソフトウェアは、AKS のドキュメントとサンプル全体で説明されています。 デプロイするソフトウェアは、AKS サービス レベル アグリーメント、限定保証、Azure サポートから除外されます。 AKS と共にオープンソース テクノロジを使用する場合は、それぞれのコミュニティとプロジェクト保守担当者から受けられるサポート オプションを調べ、計画を策定してください。
Microsoft は、AKS 上に展開するオープンソース パッケージを構築する責任を負います。 その責任には、ビルド、スキャン、署名、検証、修正プログラム プロセスの完全な所有権と、コンテナー イメージ内のバイナリの制御権が伴います。 詳細については、AKS の脆弱性管理に関するページと「AKS のサポート範囲」を参照してください。
アクション ランナー コントローラー (ARC) とは
Actions Runner Controller (ARC) は、GitHub Actions のセルフホステッド ランナーを調整およびスケーリングする Kubernetes オペレーターです。 ARC は、永続ボリューム (PV) に依存して、ランナー ポッドとコンテナー ジョブ ポッドの間でジョブ情報を共有します。 詳細については、「 アクション ランナー コントローラーについて」を参照してください。
AKS でセルフホステッド GitHub Actions を使用する理由
AKS で GitHub Actions ランナーを自己ホストすることで、組織は CI/CD インフラストラクチャに対してより優れた制御、スケーラビリティ、およびセキュリティを実現できます。 共有およびエフェメラルである GitHub でホストされるランナーに依存する代わりに、セルフホステッド ランナーは次の機能を提供します。
- カスタム環境: 特定のビルド、テスト、またはデプロイの要件に合わせてランナーを調整します。
- パフォーマンスの向上: 永続的なストレージとキャッシュを活用して、ビルド時間を短縮し、信頼性を向上させます。
- 大規模なコスト効率: 独自のインフラストラクチャ内でランナーを動的にスケーリングし、頻繁なワークフローや実行時間の長いワークフローに最適化します。
- セキュリティと分離の強化: 規制対象の業界や機密性の高いワークロードに最適なインフラストラクチャとデータを完全に制御します。
一般的なユース ケース
- エンタープライズ CI/CD パイプライン: 一貫性があり、セキュリティで保護され、スケーラブルなビルド環境を必要とするチーム向け。
- 大規模な monorepos または ML パイプライン: キャッシュまたは成果物の永続化が重要な場所。
- パフォーマンスの最適化: Azure Files Premium SMB 共有を使用してメタデータの待機時間を短縮し、IOPS を向上させます。
[前提条件]
- このガイドでは、 Kubernetes のコア概念の基本的な理解を前提としています。
- Azure アカウント内のサブスクリプションに対する所有者またはユーザー アクセス管理者と共同作成者の Azure 組み込みロールが必要です。
Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Azure Cloud Shell の概要」を参照してください。
CLI 参照コマンドをローカルで実行する場合は、Azure CLI を インストール します。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。
ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、「 Azure CLI を使用した Azure への認証」を参照してください。
メッセージが表示されたら、最初に使用するときに Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、「Azure CLI で拡張機能を使用および管理する」を参照してください。
az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。 最新バージョンにアップグレードするには、az upgrade を実行します。
- アクティブな GitHub アカウントが必要です。 リポジトリコントロールに基づく 価格情報 を参照してください。
- 次のリソースがインストールされている必要があります。
- Azure CLI バージョン 2.56 以降。
- Azure Kubernetes Service (AKS) プレビュー拡張機能。
- jq バージョン 1.5 以降。
- kubectl バージョン 1.21.0 以降。
- openssl バージョン 3.3.1 以降。
- Visual Studio Code または選択した別のコード エディター。
デプロイ プロセス
このガイドでは、以下の方法について説明します。
- Azure CLI を使用してマルチゾーン AKS クラスターを作成します。
- AKS 永続ボリュームで使用する Azure ファイル共有をデプロイします。
- AKS に GitHub Actions Runner Controller (ARC) をインストールします。
- ARC ランナー スケール セットをインストールし、AKS にファイル共有をマウントします。
- GitHub Actions を使用してサンプル ワークフローを実行します。
デプロイ アーキテクチャ
この参照アーキテクチャは、AKS と Azure File Share (SMB) を使用して GitHub Actions セルフホステッド ランナー ソリューションを実装する方法を示しています。 このソリューションにより、組織は効率的なストレージ管理とスケーラビリティを維持しながら、独自の Azure インフラストラクチャ内で GitHub ワークフロー ジョブを安全に実行できます。
アーキテクチャは、次の 3 つの主要なコンポーネントで構成されています。
- GitHub 統合レイヤー: GitHub リポジトリから Azure インフラストラクチャにワークフローを接続します。
- AKS オーケストレーション レイヤー: コンテナー化されたランナー インスタンスとそのライフサイクルを管理します。
- ストレージ レイヤー: ランナーに永続的な一時的なストレージ機能を提供します。
GitHub 統合レイヤー
GitHub 統合レイヤーは、GitHub リポジトリから Azure インフラストラクチャにワークフローを接続します。 ワークフロー ジョブは、 api.github.com および githubusercontent.com を介して GitHub からセルフホステッド ランナーにディスパッチされます。
AKSクラスター オーケストレーション レイヤー
AKS クラスター オーケストレーション レイヤーは、コンテナー化されたランナー インスタンスとそのライフサイクルを管理します。 クラスターは、 arc-controller と arc-runnersの 2 つの名前空間に分割されます。
arc-controller は、ランナー インフラストラクチャとジョブ リスナーを管理します。
arc-runners は、シークレット、アクセス制御、ランナー ポッドを処理します。 ランナーはコンテナ化され、エフェメラルストレージを使用し、共有ボリュームや専用ボリュームに接続されます。
ストレージ レイヤー
Azure ファイル共有ストレージ レイヤーは、NuGet ファイル共有と共有依存関係の ReadWriteMany アクセスとランナーのエフェメラル ストレージの両方を提供します。これらはすべて永続ボリューム要求によってサポートされます。
次のステップ
貢献者達
Microsoft では、この記事を保持しています。 当初の寄稿者は次のとおりです。
- ホルヘ・アルテオ |シニア クラウド アドボケイト
- ジェフ・パターソン |プリンシパル プロダクト マネージャー
- レナ・シャー |シニア プロダクト マネージャー
- シェカール・シン・ソロット |プロダクト マネージャー 2
- Erin Schaffer |コンテンツ開発者 2