コンテンツに移動
アプリケーション開発

Workflows による Kubernetes アプリケーションのデプロイと管理

2023年12月7日
Google Cloud Japan Team

※この投稿は米国時間 2023 年 12 月 1 日に、Google Cloud blog に投稿されたものの抄訳です。

Workflows は、マイクロサービス、ビジネス プロセス、データおよび ML パイプライン、IT オペレーションなど、幅広いユースケースのオーケストレーションや自動化において多目的に利用できるサービスです。また、Kubernetes Engine(GKE)でコンテナ化されたアプリケーションのデプロイを自動化するためにも使用でき、これは新しくリリースされた(プレビュー版)Kubernetes API コネクタでさらに簡単になりました。

新しい Kubernetes API コネクタによって、Workflows から GKE Service にアクセスできるようになり、Kubernetes ベースのリソース管理やオーケストレーション、Kubernetes ジョブのスケジュールなどが可能になります。

このブログ投稿では、Kubernetes Engine API コネクタを使用して GKE クラスタを作成し、新しい Kubernetes API コネクタを使用して Kubernetes の Deployment と Service を作成する方法を紹介します。

Kubernetes Engine API コネクタと Kubernetes API コネクタの比較

詳しい説明に入る前に、Kubernetes Engine API コネクタKubernetes API コネクタの違いについて触れておきます。

前者は Kubernetes Engine API 用のコネクタで、Google Cloud で GKE クラスタの作成、削除、情報の取得を行います。このコネクタはすでに利用可能となっています。

後者は Kubernetes API 用のコネクタで、GKE クラスタ上の Kubernetes の Deployment や Service など、Kubernetes リソースの読み書きを行います。これは、このたび新しくリリースされたコネクタです(プレビュー版)。

これまで、前者のコネクタを使用して Workflows で非常に簡単に GKE クラスタを作成することができました。ただし、そのクラスタにアプリケーションをデプロイすることはあまり簡単ではありませんでした。Kubernetes API コネクタは、Workflows から Kubernetes API を呼び出す簡単な方法を提供することで、この問題を修正しています。

Kubernetes Engine API コネクタで GKE クラスタを作成する

まず、Workflows とコネクタを使用して、Autopilot が有効な GKE クラスタを作成します。

読み込んでいます...

コネクタは、長時間実行オペレーション(クラスタの作成)が完了するまで待機しますが、こちらで紹介しているように、クラスタが作成および実行されているかどうかをチェックするステップを後から追加することもできます。

Kubernetes API コネクタで Kubernetes Deployment を作成する

GKE クラスタを作成したら、Kubernetes の Deployment と Pod のスケジュール設定を開始できます。たとえば、Kubernetes のドキュメントでは、3 つの nginx Pod を使用した Kubernetes Deployment のを紹介しています。同じ Deployment を Workflows で作成すると以下のようになります。

読み込んでいます...

GKE クラスタのコントロール プレーンへの gke.request 呼び出しで、Kubernetes API コネクタを使用していることに注意してください。

Kubernetes API コネクタで Kubernetes Service を作成する

おそらく、ロードバランサを使用して Deployment と Pod を公開することになりますが、それこそが Kubernetes Service が行う動作です。API 呼び出しがどのようなものかを知るには、Kubernetes Service API を理解する必要があります。

以下は、nginx デプロイ用に Workflows から Kubernetes Service を作成する方法です。

読み込んでいます...

ワークフローをデプロイして実行する

こちらで workflow.yaml 全体を確認できます。

ワークフローをデプロイします。

読み込んでいます...

ワークフローを実行します。

読み込んでいます...

ワークフローが実行され、GKE クラスタが作成されていることがわかります。

https://storage.googleapis.com/gweb-cloudblog-publish/images/1-gke-cluster.max-1000x1000.png

クラスタが作成されると、Workflows によって Deployment と Service が作成されます。これは、kubectl で確認できます。

まず、kubectl を認証します。

読み込んでいます...

これで、実行中の Pod が表示されます。

読み込んでいます...

Service も表示できます。

読み込んでいます...

外部 IP にアクセスすると、nginx のランディング ページも表示されます。これは、Pod が実行されており、Service が公開されていることを意味します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/2-nginx-page.max-900x900.png

Google Cloud で Kubernetes アプリケーションの作成や管理を行う方法は数多くあります。この投稿では、新しくリリースされた Kubernetes API コネクタと既存の Kubernetes Engine API コネクタを使用して、Workflows から Kubernetes アプリケーションのライフサイクル全体を管理する方法を説明しました。

詳細については、コネクタを使用して Kubernetes API オブジェクトにアクセスする方法について説明したチュートリアルをご覧ください。ご質問やフィードバックがある場合は、Twitter で @meteatamel までお気軽にご連絡ください。

- デベロッパー アドボケイト Mete Atamel

投稿先