Contents
1. 主要マネージドサービスの特徴と選定ポイント
1‑1. サービス概要(日本語で要点を整理)
| 項目 | Amazon EKS | Microsoft AKS | Google GKE |
|---|---|---|---|
| 管理プレーン | マネージド・課金($0.10/時間)【①】 | 無料(マネージドのみ)【②】 | 統合コントロールプレーン(Anthos Multi‑Cloud)【③】 |
| 認証基盤 | AWS IAM / IRSA | Azure AD + RBAC 拡張 | Google Cloud IAM / Workload Identity |
| ネットワークモデル | VPC CNI(ENI 方式) | Azure CNI(VNet 統合) | VPC、Shared VPC |
| 自動スケーリング | Cluster Autoscaler、Karpenter | Virtual Node + KEDA【⁴】 | Autopilot/Cluster Autoscaler |
| マルチクラウド統合支援 | 限定的(外部ツール必須) | Azure Arc で一部対応 | GKE Multi‑Cloud が公式に提供【⑤】 |
ポイント
- コスト感覚は「管理プレーンの課金」か「リソース使用料のみ」のどちらが自社予算と合致するかで判断。
- 認証・権限は既存システム(AWS IAM、Azure AD、Google IAM)との親和性を優先すると運用負荷が大幅に減少。
- マルチクラウド統合は GKE Multi‑Cloud が唯一「公式サポート」するため、全体のポリシーやネットワークを一元管理したい場合の第一候補となる。
1‑2. 具体的な比較表(抜粋)
| 項目 | EKS | AKS | GKE |
|---|---|---|---|
| 課金モデル | 管理料 $0.10/時間 + EC2・EBS 等使用料【①】 | クラスタ自体は無料、ノードとストレージは別途課金【②】 | Autopilot は「Pod‑単位課金」、Standard は VM 単位課金【③】 |
| IAM 連携 | IRSA(IAM ロールを Pod に付与)【⁶】 | Azure AD と RBAC の統合【⁷】 | Workload Identity により GCP サービスアカウントと紐付け【⁸】 |
| マルチクラウド支援 | Terraform、Crossplane 等外部ツールで実装【⁹】 | Azure Arc で一部ハイブリッド管理【¹⁰】 | Anthos Config Management と GKE Multi‑Cloud が公式に提供【⑤】 |
2. GKE Multi‑Cloud による統合コントロールプレーン活用手順
2‑1. 概要
GKE Multi‑Cloud は Google Cloud コンソール上で AWS・Azure の既存 Kubernetes クラスタ を「メンバーシップ」として登録し、単一 UI/CLI から統合的に管理できるサービスです。ポリシーやネットワーク設定の自動同期も可能です【⑤】。
2‑2. 実装フロー(コマンド例付き)
- メンバーシップ登録
bash
# EKS クラスタを登録
gcloud container hub memberships register eks-prod \
--gke-uri=https://\
--service-account-key-file=eks-sa.json
# AKS クラスタを登録
gcloud container hub memberships register aks-prod \
--gke-uri=https://
--service-account-key-file=aks-sp.json
2. **Anthos Config Management (ACM) の有効化**bash
gcloud anthos config-management enable \
--membership=eks-prod,aks-prod
rbac.yaml を配置。
3. **ポリシー自動配布(例:RBAC)**
- Git リポジトリに
- ACM が各メンバーシップへ自動プッシュし、即座に反映されます【¹¹】。
- ネットワークポリシーテンプレートの共有(例)
yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-all-except-allowed
spec:
podSelector: {}
policyTypes: [Ingress, Egress]
テンプレートは GKE Multi‑Cloud の「Network Policy」画面から全クラスタへ配布可能です【¹²】。
2‑3. メリットまとめ
| 項目 | 内容 |
|---|---|
| UI/CLI 一元化 | Console と gcloud コマンドだけで全クラスタを操作 |
| ポリシー自動同期 | ACM により GitOps 方式で一括管理 |
| ネットワーク統合 | 共通 NetworkPolicy テンプレートで CNI 差異を吸収 |
3. EKS と AKS の同時運用事例 ― スキルマトリックスと留意点
3‑1. 背景(Reddit スレッド参照)
2023 年 11 月の r/kubernetes スレッドでは「マルチクラウドは IAM とネットワークが最大の課題」という指摘が多数寄せられ、実務で有効な スキルマトリックス が共有されました【¹³】。本稿では同情報を元に日本企業向けに最適化した表を作成します。
3‑2. スキルマトリックス(中規模チーム例)
| スキル領域 | 必要人数(30 人規模) | 想定担当者 |
|---|---|---|
| AWS IAM / IRSA | 2名 | SRE‑A (AWS) |
| Azure AD / RBAC | 2名 | SRE‑B (Azure) |
| ネットワーク設計(VPC・VNet) | 3名 | インフラエンジニア X/Y/Z |
| CI/CD(Argo CD・GitHub Actions) | 2名 | DevOps リーダー |
| 監視・ロギング(Prometheus, Grafana Cloud) | 2名 | Observability チーム |
| セキュリティ(OPA Gatekeeper, CSPM) | 1名 | SecOps エンジニア |
3‑3. 運用上の留意点
| 項目 | 内容 |
|---|---|
| 認証統一の難しさ | EKS は IRSA、AKS は Azure AD のトークンベース認証が別々。共通ライブラリで抽象化するとコード保守が楽になる【¹⁴】。 |
| CIDR 衝突回避 | VPC と VNet の IP 範囲は事前に非重複設計し、Transit Gateway(AWS)や Azure Virtual WAN でハイブリッド接続を構築。 |
| インシデント対応フロー | クラスタ単位でオンコールローテーションを分割し、PagerDuty 等のタグ付けで「EKS」か「AKS」かを明示。 |
4. OSS 管理ツール(Rancher)で実現するクラスタ統合とポリシー一元化
4‑1. Rancher の特徴
- 外部 IdP と連携:Okta、Azure AD、Google Identity など SAML/OIDC に対応し、全クラスタに共通ロールを適用可能【¹⁵】。
- グローバルポリシー:NetworkPolicy を「Global Network Policy」として定義でき、Rancher が各 CNI(EKS の ENI、AKS の Azure CNI)へ自動変換します。
4‑2. 実装手順(Helm インストール例)
|
1 2 3 4 5 6 7 8 9 10 |
# Helm リポジトリ登録 helm repo add rancher-latest https://releases.rancher.com/server-charts/latest # Rancher 本体インストール(3 副本構成) helm install rancher rancher-latest/rancher \ --namespace cattle-system \ --create-namespace \ --set hostname=rancher.example.com \ --set replicas=3 |
- クラスタ接続
- EKS:
eksctlで取得したkubeconfigを UI の「Import」から登録。 -
AKS:
az aks get-credentialsで取得したkubeconfigを同様にインポート。 -
グローバル RBAC 設定例
|
1 2 3 4 5 6 7 8 9 |
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: dev-team-readonly rules: - apiGroups: [""] resources: ["pods","services"] verbs: ["get","list","watch"] |
→ Rancher の「Global Roles」画面で作成し、全クラスタに割り当て。
- グローバル NetworkPolicy 設定例
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-frontend-to-backend spec: podSelector: matchLabels: app: backend ingress: - from: - podSelector: matchLabels: app: frontend |
→ 「Global Network Policies」へ登録すると、Rancher が各 CNI に合わせて自動変換【¹⁶】。
4‑3. メリットまとめ
- 単一画面で全クラスタを可視化
- 認証・権限・ネットワーク設定のミス防止
- OSS のためコストが抑えられ、カスタマイズ性が高い
5. マルチクラウド対応 CI/CD・監視・セキュリティのベストプラクティス
5‑1. GitOps / Argo CD の統一デプロイパターン
| 要素 | 内容 |
|---|---|
| ApplicationSet | クラスタごとの接続情報(URL、名前)を list ジェネレータで列挙し、テンプレート化したマニフェストを自動配布。 |
| ポリシー同期 | OPA Gatekeeper の ConstraintTemplate を Git リポジトリに置くことで、全クラスタで同一のポリシー検証が走る【¹⁷】。 |
Argo CD ApplicationSet 例(抜粋)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
apiVersion: argoproj.io/v1alpha1 kind: ApplicationSet metadata: name: multi-cloud-apps spec: generators: - list: elements: - cluster: eks-prod url: https://eks.example.com - cluster: aks-prod url: https://aks.example.com - cluster: gke-prod url: https://gke.example.com template: metadata: name: '{{cluster}}-frontend' spec: project: default source: repoURL: https://github.com/your-org/app-configs.git targetRevision: HEAD path: frontend/{{cluster}} destination: server: '{{url}}' namespace: production syncPolicy: automated: prune: true selfHeal: true |
5‑2. メトリクスの集約 ― Prometheus Federation + Grafana Cloud
| 項目 | 実装ポイント |
|---|---|
| Federation 設定 | 各クラスタ側にエンドポイント /federate を公開し、グローバル側が match[] パラメータで必要なジョブだけ取得。 |
| Grafana Cloud 連携 | 全クラスターの Prometheus が remote_write 先として Grafana Cloud のエンドポイントを指定することで、単一ダッシュボードに統合【¹⁸】。 |
Federation ServiceMonitor(例)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: eks-federate spec: selector: matchLabels: prometheus: eks endpoints: - port: web path: /federate params: 'match[]': - '{job="kubernetes-nodes"}' - '{job="kubernetes-pods"}' |
5‑3. セキュリティ基盤 ― OPA Gatekeeper + Pod Security Standards
| 項目 | 内容 |
|---|---|
| Gatekeeper の活用 | ConstraintTemplate と Constraint を GitOps リポジトリに置き、CI パイプラインで kube-score 等と併せて検証。 |
| Pod Security Standards (PSS) | Kubernetes 1.25 以降で公式サポートされる PSS(Privileged/Baseline/Restricted)を PodSecurityPolicy の代替として使用【¹⁹】。 |
Gatekeeper ConstraintTemplate(NetworkPolicy 必須化)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
apiVersion: templates.gatekeeper.sh/v1beta1 kind: ConstraintTemplate metadata: name: k8srequirednetworkpolicy spec: crd: spec: names: kind: K8sRequiredNetworkPolicy targets: - target: admission.k8s.gatekeeper.sh rego: | package k8srequirednetworkpolicy violation[{"msg": msg}] { not input.object.spec.policyTypes[_] == "Ingress" msg := sprintf("NetworkPolicy %v must define Ingress rules", [input.object.metadata.name]) } |
5‑4. オンコール体制とドキュメント化
- オンコール分割:EKS、AKS、GKE 各クラスタごとに一次対応者を設定し、PagerDuty のタグで自動エスカレーション。
- Runbook の Git 管理:
runbooks/ディレクトリに「クラスタ登録手順」「IAM トラブルシューティング」など Markdown でまとめ、バージョン管理することで情報の陳腐化を防止。
6. 次に取るべきステップと参考情報
| ステップ | 内容 | 推奨リソース |
|---|---|---|
| 1️⃣ 要件整理 | コスト・ガバナンス・スケーラビリティ観点で EKS/AKS/GKE を比較。上記表を活用し、社内ステークホルダーと合意形成。 | AWS 料金ページ【①】、Azure AKS 料金【②】、GKE 価格表【③】 |
| 2️⃣ 管理ツール選定 | GKE Multi‑Cloud が足りない場合は Rancher を PoC(1 クラスタずつ)で評価。 | Rancher ドキュメント【¹⁵】 |
| 3️⃣ スキルマトリックス作成 | Reddit 事例を参考に、AWS・Azure 向け認証・ネットワーク担当者と CI/CD・監視担当者を可視化。 | r/kubernetes スレッド【¹³】 |
| 4️⃣ GitOps パイプライン構築 | Argo CD の ApplicationSet でマルチクラウドデプロイを自動化し、変更履歴とロールバックをコードで担保。 | Argo CD 公式ガイド【²⁰】 |
| 5️⃣ 監視・セキュリティ基盤統合 | Prometheus Federation → Grafana Cloud、OPA Gatekeeper + PSS を CI に組み込み。 | Prometheus Docs【¹⁸】、Gatekeeper Docs【¹⁷】 |
| 6️⃣ 運用体制整備 | オンコール表の作成、Runbook の Git 管理、定期的な演習(Chaos Engineering)を実施。 | PagerDuty ベストプラクティス【²¹】 |
参考文献一覧
- Amazon EKS 料金ページ – https://aws.amazon.com/jp/eks/pricing/
- Azure AKS 料金ページ – https://azure.microsoft.com/ja-jp/services/kubernetes-service/#pricing
- Google GKE 価格表 – https://cloud.google.com/kubernetes-engine/pricing?hl=ja
- KEDA (Kubernetes Event‑Driven Autoscaling) – https://keda.sh/
- Anthos Config Management & GKE Multi‑Cloud – https://cloud.google.com/anthos/config-management/docs/multi-cloud
- IRSA(IAM Roles for Service Accounts)概要 – https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html
- Azure AD と AKS の統合ガイド – https://learn.microsoft.com/ja-jp/azure/aks/managed-aad
- Workload Identity(GKE) – https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity
- Crossplane によるマルチクラウド管理 – https://crossplane.io/
- Azure Arc の概要 – https://learn.microsoft.com/ja-jp/azure/azure-arc/kubernetes/overview
- Anthos Config Management でのポリシー配布手順 – https://cloud.google.com/anthos-config-management/docs/how-to/policy-controller
- GKE Multi‑Cloud の Network Policy テンプレート – https://cloud.google.com/kubernetes-engine/multi-cloud/docs/network-policy
- Reddit r/kubernetes スレッド(2023‑11‑01)「マルチクラウドは IAM とネットワークが最大課題」 – https://www.reddit.com/r/kubernetes/comments/xxxxx/ (閲覧日: 2024‑04‑20)
- 共通認証ライブラリ設計例(GitHub) – https://github.com/example/common-auth-lib
- Rancher 公式ドキュメント – https://rancher.com/docs/rancher/v2.7/en/
- Rancher Global Network Policies – https://rancher.com/docs/rancher/v2.7/en/networking/policies/global-network-policies/
- OPA Gatekeeper 公式リファレンス – https://openpolicyagent.org/docs/latest/kubernetes-introduction/
- Prometheus Federation ドキュメント – https://prometheus.io/docs/prometheus/latest/federation/
- Pod Security Standards(PSS) – https://kubernetes.io/docs/concepts/security/pod-security-standards/
- Argo CD ApplicationSet 公式ガイド – https://argo-cd.readthedocs.io/en/stable/user-guide/appprojects/
- PagerDuty ベストプラクティス – https://support.pagerduty.com/docs/best-practices
本稿は2024 年 4 月時点の公式情報をもとに作成しています。サービス仕様や価格は変更される可能性があるため、導入前に最新ドキュメントをご確認ください。