Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Google AnthosとAWSで実現するマルチクラウドKubernetes(第1回)

By Mike SparrSep 19, 20203 min read

このページはEnglishDeutschEspañolFrançaisItalianoPortuguêsでもご覧いただけます。

「なぜわざわざAWS上でGKEを動かすのか?」と疑問に思う方もいるかもしれません。もっともな疑問で、その理由は企業によってさまざまです。代表的なユースケースには次のようなものがあります。

  • アクティブ-アクティブ構成のマルチクラウド戦略による耐障害性の確保
  • 管理を一元化しながら各ベンダーのクレジットを活用
  • ダウンタイムを最小限に抑えたクラウド間移行
  • 既存のインフラとノウハウを活かしつつk8sの使い勝手を向上
  • クラスタ作成の高速化(EKSの一般的な20分以上に対し、5〜7分)

理由はどうあれ、本記事ではAnthos GKEを使ってAWS上にGoogle Kubernetes Engine(GKE)をデプロイする方法を見ていきます。

本記事は、Google Anthos GKEを掘り下げる全3回シリーズの第1回です。

アーキテクチャ

Amazon Web Services上で動作するGoogle Anthos GKE

AWS上のノードプールと手軽なk8sオートスケーリング

AmazonのマネージドKubernetesサービスであるEKSには、Googleのマネージドサービス GKE が備える多くの機能が欠けています。UIや、コントロールプレーンとワーカーノードのアップグレード操作が簡単な点に加え、人気が高いのがGoogleのオートスケーリングとノードプールです。これからは、もう妥協する必要はありません。

apiVersion: multicloud.cluster.gke.io/v1
kind: AWSNodePool
metadata:
  name: cluster-0-pool-0
spec:
  clusterName: cluster-0
  version: 1.16.9-gke.12
  region: us-east-2
  subnetID: subnet-XXXXXXXX
  minNodeCount: 3
  maxNodeCount: 5
  instanceType: t3.medium
  keyName: gke-XXXXXXX-keypair
  iamInstanceProfile: gke-XXXXXXXX-nodepool
  maxPodsPerNode: 100
  securityGroupIDs:
  - sg-XXXXXXXX
  rootVolume:
    sizeGiB: 10

kubectlで確認したAWSインスタンス上のGKEノード

コマンドラインインターフェース(CLI)

Anthosには anthos-gke というコマンドラインインターフェース(CLI)が用意されており、gcloud CLIと同様の機能を提供しつつ、Terraformスクリプトの生成にも対応しています(本シリーズ第2回で詳しく解説します)。このツールを使えば、以下のようにコントロールプレーンと各クラスタを切り替えられます。

コントロールプレーン

テスト用クラスタ(cluster-0)

エンタープライズコンテナ管理(ECM)

これまで、企業がKubernetesクラスタの管理を一元化したいと考えたとき、選択肢となってきたのはRedhat OpenShift、VMWare Tanzu、Docker Enterprise、Rancher LabsといったECMベンダーのソリューションでした。しかし、いずれも独自の制約やベンダーロックインの課題を抱えています。

ローカルとリモートのクラスタを単一のGoogle Cloud Consoleから管理

Google Anthosなら、軽量な gke-connect-agent workloadをインストールするだけで、オンプレミス、他クラウド、さらにはGoogleのインフラ上で動作しているものまで、あらゆるKubernetesクラスタを登録できます。これにより、Google Kubernetes Engineのクラウドコンソールから任意のクラスタを操作・モニタリングできるようになります。クラスタはセルフマネージドでもクラウドマネージドでも構わず、前述のECMソリューションの一部にも対応しています。

それでは、実際に動かしてみましょう……手順はたった1-2-3です。

1\. GCP Cloud ConsoleからAWSへアプリをデプロイ

Kubernetesの管理にはkubectlコマンドラインツールやCI/CDパイプラインを使うのが一般的ですが、AWS上で稼働するGKEクラスタへのworkloadsのデプロイは、GCPコンソール(Web UI)からも実行できます。

Webからデプロイ

kubectlで確認

2\. ELBの自動プロビジョニングでアプリを公開

必要に応じてworkloadsを公開すれば、Anthos GKEがAWS ELBインスタンスを自動的にプロビジョニング・構成し、アプリを外部からアクセス可能にします。

workloadsの公開とELBの作成

サービスを「expose」したあとは、GKEのUIからサービスの詳細を確認できます。この例ではLoadBalancerタイプです。

GKEサービスの詳細画面

3\. 完了!

AWSコンソールに戻ると、Anthos GKEがプロビジョニングしたロードバランサーを確認できます。

AWSリソースに表示されるロードバランサー

ブラウザでエンドポイントURLにアクセスすれば、AWS上のGKEクラスタにデプロイしたnginxサーバー(本例)が正常に動作している様子を確認できます。わずか数クリックで、ELBによる公開まで完了しました。

やりました!数秒後にはNginxがブラウザからアクセスできる状態に

次のステップ

次回の記事では、AWS上にAnthos GKEをインストールする手順を一つずつ詳しく解説します。

公開され次第こちらにリンクを掲載しますので、ぜひチェックしてみてください。新着記事を見逃さないためにフォローもおすすめです。さまざまな記事を掲載しているhttps://blog.doit-intl.com もぜひご覧ください。