クラウドシード
- GitLab 15.4 で
google_cloud
というフラグで導入されました。デフォルトでは無効になっています。- GitLab 15.5でセルフマネージドとGitLab.comで有効に。
Cloud Seedは、GitLab Incubation Engineeringが Google Cloudと協力して主導するオープンソースプログラムです。
Cloud SeedはHerokuのような使いやすさとハイパークラウドの柔軟性を兼ね備えています。私たちはOAuth 2を使って、Terraformとinfrastructure-as-codeを基盤にしたハイパークラウド上でサービスをプロビジョニングし、2日目のオペレーションを可能にします。
目的
私たちは、GitLabから主要なクラウドプロバイダーにウェブアプリケーション(およびその他のワークロード)をデプロイするのは簡単であるべきだと考えています。
この取り組みをサポートするために、Cloud SeedはGitLabで適切なGoogle Cloudサービスを利用することを簡単かつ直感的にします。
なぜGoogle Cloudなのか
あるいはなぜAWSやAzureではないのですか?
Cloud Seedは誰でも拡張できるオープンソースのプログラムであり、私たちはすべての主要なクラウドプロバイダーと協力したいと考えています。Google Cloudを選んだ理由は、彼らのチームがこの取り組みにアクセスしやすく、協力的で、協力的だからです。
オープンソースプロジェクトとして、誰もが貢献し、私たちの方向性を形作ることができます。
Google Cloud Runへのデプロイ
GitLabプロジェクトにWebアプリケーションをデプロイしたら、Cloud Seedを使ってGitLabからGoogle Cloudにデプロイする手順を説明します:
デプロイ資格情報の設定
Cloud Seedは、GitLabプロジェクトからGoogle Cloud Platform(GCP) サービスアカウントを作成するインターフェースを提供します。サービスアカウント作成ワークフローで、関連するGCPプロジェクトを選択する必要があります。このプロセスにより、サービスアカウント、キー、デプロイ権限が生成されます。
サービスアカウントを作成するには
-
Project :: Infrastructure :: Google Cloud
ページにアクセスしてください。 - サービスアカウントの作成」を選択します。
- Google OAuth 2のワークフローに従い、GitLabを作成します。
- GCPプロジェクトを選択します。
- 選択したGCPプロジェクトにGit参照(ブランチやタグなど)を関連付けます。
- フォームを送信して、サービスアカウントを作成します。
生成されたサービスアカウント、サービスアカウントキー、関連するGCPプロジェクトIDは、プロジェクトCI変数としてGitLabに保存されます。これらはProject :: Settings :: CI
ページでレビュー・管理することができます。
生成されたサービスアカウントには以下のロールがあります:
roles/iam.serviceAccountUser
roles/artifactregistry.admin
roles/cloudbuild.builds.builder
roles/run.admin
roles/storage.admin
roles/cloudsql.client
roles/browser
CI変数をシークレットマネージャーに格納することでセキュリティを強化できます。詳細については、GitLabでのシークレットマネジメントを参照してください。
お好みのGCPリージョンを設定
デプロイ用にGCPリージョンを設定する場合、提供されるリージョンのリストは、利用可能なすべてのGCPリージョンのサブセットです。
リージョンを設定するには、以下の手順に従います:
-
Project :: Infrastructure :: Google Cloud
ページにアクセスしてください。 - Configure GCP Regionを選択します。
- ご希望のGCPリージョンを選択します。
- 選択したGCPリージョンのGit参照(ブランチやタグなど)を関連付けます。
- フォームを送信して、GCPリージョンを設定します。
設定されたGCPリージョンはプロジェクトCI変数としてGitLabに保存されます。Project :: Settings :: CI
ページでレビューと管理ができます。
Cloud Run デプロイパイプラインの設定
パイプラインで Google Cloud Run デプロイジョブを設定できます。このようなパイプラインの典型的な使用例は、Web アプリケーションの継続的デプロイです。
プロジェクトのパイプライン自体は、ビルド、テスト、セキュアなど複数のステージにまたがる広範な目的を持つことができます。そのため、Cloud Run デプロイは、より大きなパイプラインに適合する1つのジョブとしてパッケージ化されています。
Cloud Runデプロイメントパイプラインを設定するには、次の手順に従います:
-
Project :: Infrastructure :: Google Cloud
ページにアクセスしてください。 -
Deployments
タブを開きます。 -
Cloud Run
の場合は、「マージリクエストで設定」を選択します。 - 変更内容をレビューし、送信してマージリクエストを作成します。
これにより、Cloud Run デプロイ パイプラインを含む(または既存のパイプラインに注入される)新しいブランチが作成され、変更とデプロイ パイプラインの実行をレビューしてメイン ブランチにマージできる関連マージ リクエストが作成されます。
クラウド SQL データベースのプロビジョニング
リレーショナルデータベースインスタンスはProject :: Infrastructure :: Google Cloud
ページからプロビジョニングできます。Cloud SQL は、データベースインスタンスのプロビジョニングに使用される、基盤となる Google Cloud サービスです。
以下のデータベースとバージョンがサポートされています:
- PostgreSQL:14、13、12、11、10、9.6
- MySQL 8.0、5.7、5.6
- SQLサーバー
- 2019: スタンダード、エンタープライズ、エクスプレス、ウェブ
- 2017:スタンダード、エンタープライズ、エクスプレス、ウェブ
Google Cloudの価格が適用されます。Cloud SQLの価格ページをご参照ください。
データベースインスタンスの作成
Project :: Infrastructure :: Google Cloud
ページからDatabaseタブを選択します。ここには、Postgres、MySQL、SQL Serverのデータベースインスタンスを作成するための3つのボタンがあります。
データベースインスタンス作成フォームには、GCPプロジェクト、Git参照(ブランチまたはタグ)、データベースバージョン、マシンタイプのフィールドがあります。送信すると、データベースインスタンスが作成され、データベースのセットアップがバックグラウンドジョブとしてキューに入れられます。
バックグラウンドワーカーによるデータベースのセットアップ
データベースインスタンスの作成に成功すると、バックグラウンドワーカーが以下のタスクを実行します:
- データベースユーザーの作成
- データベーススキーマの作成
- データベースの詳細をプロジェクトのCI/CD変数に格納します。
データベースに接続
データベースインスタンスのセットアップが完了すると、データベース接続の詳細がプロジェクト変数として利用可能になります。これらはProject :: Settings :: CI
ページで管理でき、適切な環境で実行するパイプラインが利用できるようになります。
データベースインスタンスの管理
Project :: Infrastructure :: Google Cloud :: Databases
のインスタンス一覧は Google Cloud Console にリンクしています。インスタンスを選択して詳細を表示し、インスタンスを管理します。
クラウドシードに貢献する
Cloud Seedに貢献する方法はいくつかあります:
- Cloud Seedを使ってフィードバックを共有しましょう。
- Ruby on Rails や Vue.js に精通している場合は、開発者としてGitLab に貢献することを検討してください。
- Cloud Seedの多くはGitLabコードベースの内部モジュールです。
- GitLabパイプラインに精通しているなら、Cloud Seed Libraryプロジェクトに貢献することを検討してください。