GitHub Actionsでは、GitHub提供のランナーの他に、自分で管理するセルフホステッドランナーを利用できます。EKS環境でセルフホステッドランナーを運用することで、プライベートリソースへのアクセスやコスト最適化、パフォーマンス向上が期待できます。
セルフホステッドランナーをEKS上で実行するメリット:
- プライベートネットワーク内のリソースへの直接アクセス
- GitHubホステッドランナーのコスト削減
- カスタムイメージやソフトウェアの利用
- オートスケーリングによる効率的なリソース利用
Actions Runner Controller (ARC) を使用することで、Kubernetes上でセルフホステッドランナーを自動管理できます。
ArgoCDは宣言的GitOpsツールで、GitリポジトリをSingle Source of TruthとしてKubernetesアプリケーションの継続的デリバリーを実現します。EKS環境でArgoCDを活用することで、アプリケーションとインフラの一貫した管理が可能になります。
ArgoCDの主要機能:
- Gitリポジトリからの自動同期
- WebUIによる視覚的なアプリケーション管理
- ロールバック機能
- 複数クラスタの管理
- RBAC統合によるアクセス制御
GitOpsワークフローでは、開発者がGitリポジトリにマニフェストを変更すると、ArgoCDが自動的に変更を検出してクラスタに適用します。
Horizontal Pod Autoscaler (HPA) は、CPU使用率やメモリ使用率、カスタムメトリクスに基づいてポッドの数を自動調整します。アプリケーションの負荷に応じてスケールイン・スケールアウトを行い、リソースの効率的な利用とパフォーマンスの維持を実現します。
HPAの設定要素:
- スケーリング対象のメトリクス(CPU、メモリ、カスタム)
- 最小・最大レプリカ数
- スケーリングの閾値とポリシー
- クールダウン期間
Cluster Autoscalerは、ポッドのスケジューリング要求に基づいてワーカーノードの数を自動調整します。リソース不足でポッドがスケジュールできない場合はノードを追加し、ノードの利用率が低い場合はノードを削除します。EKS Automode でない従来のEKSクラスタで AutoScaling でノードを管理している場合に有効です。(EKS Automode では不要)
EKS環境でのCluster Autoscaler:
- Auto Scaling Groupsとの統合
- ノードグループ毎の設定
- インスタンスタイプの混在対応
- スポットインスタンスの活用
Vertical Pod Autoscaler (VPA) やPodのIn-Place Resource Resizingにより、実行中のポッドのリソース要求を動的に調整できます。アプリケーションの実際のリソース使用量に基づいて、CPUやメモリの割り当てを最適化します。
PodResizeの活用場面:
- リソース要求の初期設定が不適切な場合
- アプリケーションの使用パターンが変化した場合
- リソース効率の継続的な改善
KustomizeとHelmは、Kubernetesマニフェストのテンプレート化とパッケージ管理を行うツールです。環境毎の設定差分管理や、再利用可能なアプリケーションパッケージの作成に活用できます。
Kustomizeの特徴:
- YAMLファイルのオーバーレイ機能
- 環境毎の設定差分管理
- kubectlとの統合
Helmの特徴:
- パッケージ管理(Helm Charts)
- テンプレート機能
- バージョン管理とロールバック
- 豊富なコミュニティチャート