BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Application ManagerがGitOpsをGoogle Kubernetes Engineにもたらす

Application ManagerがGitOpsをGoogle Kubernetes Engineにもたらす

原文(投稿日:2020/03/19)へのリンク

Googleは、アプリケーションの構成とライフサイクル管理を簡素化することを目的として、Kubernetes Application Managerを立ち上げた。これは、Anthosの一部でもあるGoogle Kubernetes Engine (GKE)のアドオンとして提供されるアプリケーション配信ソリューションである。

Kubernetesはコンテナ化されたアプリケーションの管理に広く使用されているが、エンドツーエンドのKubernetesライフサイクル管理(Kubernetesアプリケーションのオーサリング、リリース、管理)には課題がある。Application Managerをベータ版で利用できるようになった。開発者は、開発から本番へのアプリケーション配信フローを作成すると同時に、リリース構成を管理するためのGoogleのベストプラクティスを組み込むことができる。また、Kubernetesアプリケーションの構成は大規模に管理するには、長すぎて複雑すぎる可能性がある。特に、テスト、ステージング、および本番リリース環境にまたがってデプロイされたアプリケーションは、複数のGitリポジトリーに保管されている重複した構成を持っている可能性がある。1つの構成に対する変更はすべて他の構成に複製する必要があり、ヒューマンエラーの可能性がある。

GitOpsは、アプリケーションのデプロイに必要なインフラストラクチャの定義がアプリケーションコードとともにリポジトリに含まれる開発のプラクティスである。開発者は構成ファイルを使用してシステムの意図した状態を宣言し、コントローラーは継続的に実行して、宣言された状態と環境の状態を同期させる。たとえば、インフラストラクチャの変更が必要な場合、開発者は関連する宣言定義を変更します。次に、これはGitリポジトリーにコミットされ、履歴と変更制御が記録され、コントローラーがこの変更をターゲット環境に適用する。

Kubernetesアプリケーションのライフサイクルは、オーサリング、リリース、管理の3つの主要な段階で構成されている。オーサリングには、アプリケーションのソースコードとアプリ固有のKubernetes構成の記述が含まれる。リリースには、コードや構成に変更を加え、それらの変更を異なるリリース環境にデプロイすることが含まれる。管理フェーズには、大規模な本番でアプリケーションを運用できるようにすることが含まれる。現在、これらの段階について明確に定義された標準はなく、ユーザは度々ベストプラクティスと推奨事項を検索している。

Application ManagerはGitOpsの原則に従い、Gitリポジトリを利用して宣言型の構成管理を可能にしている。環境にデプロイする前に変更を監査および確認でき、推奨されるGitリポジトリー構造を自動的にジェネレートして適用できる。Kubernetes Application Managerの場合、リポジトリはGitHubまたはGitLabのいずれかでホストされている必要がある。テンプレートを使用しない構成のカスタマイズは、Kubernetesネイティブの構成管理ツールであるKustomizeを使用して実行できる。

Application Managerは、GKEクラスタ内でクラスタアドオンとして実行され、いくつかのタスクを実行する。(Gitブランチ、タグ、またはコミット内の)GitリポジトリからKubernetesマニフェストをプルし、マニフェストをアプリケーションとしてクラスターにデプロイする。Application Managerは、デプロイされたアプリケーションに関するメタデータ(バージョン、変更履歴、正常性など)を報告し、Google Cloud Console内のアプリケーションで視覚化する。

Application Managerを使って、Gitリポジトリーのジェネレートからアプリケーションのリリース環境の定義、クラスターへのアプリケーションのデプロイまで、アプリケーションのリリースやデプロイができる。これらすべてのタスクは、Application Managerのコマンドラインインターフェースであるappctlでコマンドを実行することによって処理される。

インストールすると、開発者はコマンドを使用してアプリケーションを管理できる。まず、アプリケーションのリポジトリを作成する。デフォルトでは、開発者は2つのリポジトリが作成される。1つはデプロイメント構成用、もう1つはアプリケーションコード用である。次に、開発者はKustomize構成に従ってYAMLファイルでKubernetesデプロイメントの要件を定義する。そして、appctlコマンドを使用してテスト、ステージング、本番などの環境を追加し、appctl prepareコマンドを使用して、アプリケーションのタグ付きバージョンをデプロイメント用に準備する。これにより、プルリクエストがリポジトリに生成され、開発者が確認できる。承認されると、appctlを使用して、指定された環境を作成し、アプリケーションをデプロイする。開発者はappctl prepareを使用して、ステージングから本番環境など、ある環境から別の環境へのデプロイメントをプロモートすることもできる。ここからデプロイメントをロールバックすることもできる。

Application Managerはデプロイされたアプリケーションを監視し、Google Cloud Consoleにバージョン、変更履歴、正常性に関するデータを表示する。Google Cloud Marketplaceからインストールされたサードパーティアプリケーションは、Application Managerを使用して更新を行うことができる。つまり、開発者は更新ボタンをクリックして、アプリケーションの新しいバージョンをGKEクラスタにインストールできる。

Googleのワークフロー例は、Google Cloud Platform Webサイトから入手できる。

この記事に星をつける

おすすめ度
スタイル

特集コンテンツ一覧

BT