Google GKEクラスターの作成
Infrastructure as Code (IaC)を使用して、Google Kubernetes Engine (GKE) で新しいクラスターを作成する方法について説明します。このプロセスでは、GoogleおよびKubernetes Terraformプロバイダーを使用してGKEクラスターを作成します。クラスターをKubernetes向けGitLabエージェントサーバーを使用してGitLabに接続します。
すべての新しいGoogle Cloud Platform(GCP)アカウントは$300のクレジットを受け取り、Googleとの提携により、GitLabはGoogle Google Kubernetes Engineとのインテグレーションを開始するために、新しいGCPアカウントにさらに$200を提供できます。このリンクをたどって、クレジットを申請してください。
はじめる前:
- Google Cloud Platform(GCP)サービスアカウント。
- GitLab CI/CDパイプラインを実行するために使用できるRunner。
ステップ:
- サンプルプロジェクトをインポートします。
- Kubernetes用エージェントを登録します。
- GCP認証情報を作成します。
- プロジェクトを設定します。
- クラスターをプロビジョニングします。
サンプルプロジェクトをインポートする
Infrastructure as Codeを使用してGitLabからクラスターを作成するには、クラスターを管理するためのGitLabプロジェクトを作成する必要があります。このチュートリアルでは、サンプルプロジェクトから開始し、必要に応じて変更します。
URLでサンプルプロジェクトをインポートすることから始めます。
プロジェクトをインポートするには:
- GitLabの左側のサイドバーで、検索または移動先を選択します。
- すべてのプロジェクトを表示を選択します。
- ページの右側で、新規プロジェクトを選択します。
- プロジェクトのインポートを選択します。
- リポジトリのURLを選択します。
- GitリポジトリのURLに、
https://gitlab.com/gitlab-org/configure/examples/gitlab-terraform-gke.gitと入力します。 - フィールドに入力し、プロジェクトを作成を選択します。
このプロジェクトでは、次のものが提供されます:
- 名前、場所、ノード数、およびKubernetesバージョンのデフォルトを持つ、Google Cloud Platform(GCP)上のクラスター。
- クラスターにインストールされているKubernetes向けGitLabエージェント。
エージェントを登録する
Kubernetes用GitLabエージェントを作成するには:
- 左側のサイドバーで、操作 > Kubernetesクラスターを選択します。
- **クラスターに接続(エージェント)**を選択します。
- Select an agent or enter a name to create new(新しいエージェントを選択するか、名前を入力して作成)ドロップダウンリストから、エージェントの名前を選択し、登録するを選択します。
- GitLabは、エージェントの登録トークンを生成します。このシークレットトークンは、後で必要になるため、安全に保管してください。
- オプション。Helmを使用する場合、GitLabはHelmコマンドの例でエージェントサーバー(KAS)のアドレスを提供します。これは後で必要になります。
GCP認証情報を作成します
GCPおよびGitLab APIと通信するようにプロジェクトをセットアップするには:
GitLabでGCPを認証するには、次のロールを持つGCPサービスアカウントを作成します:
Compute Network Viewer、Kubernetes Engine Admin、Service Account User、およびService Account Admin。ユーザーと管理者のサービスアカウントの両方が必要です。ユーザーロールは、デフォルトサービスアカウントをノードプールを作成するときに偽装します。管理者ロールは、kube-systemネームスペースにサービスアカウントを作成します。前の手順で作成したサービスアカウントキーを含むJSONファイルをダウンロードします。
コンピューターで、JSONファイルを
base64にエンコードします(/path/to/sa-key.jsonをキーへのパスに置き換えます):base64 -i /path/to/sa-key.json | tr -d \\nbase64 /path/to/sa-key.json | tr -d \\nこのコマンドの出力を、次のステップで
BASE64_GOOGLE_CREDENTIALS環境変数として使用します。
プロジェクトを設定する
CI/CD環境変数を使用して、プロジェクトを設定します。
Required configuration(必要な設定):
- 左側のサイドバーで、設定 > CI/CDを選択します。
- 変数を展開します。
- 変数
BASE64_GOOGLE_CREDENTIALSを、作成したばかりのbase64にエンコードされたJSONファイルに設定します。 - 変数
TF_VAR_gcp_projectをGCPのprojectIDに設定します。 - 変数
TF_VAR_agent_tokenを、前のタスクに表示されるエージェントトークンに設定します。 - 変数
TF_VAR_kas_addressを、前のタスクに表示されるエージェントサーバーアドレスに設定します。
Optional configuration(オプションの設定):
ファイルvariables.tfには、必要に応じてオーバーライドできるその他の変数が含まれています:
TF_VAR_gcp_region: クラスターのリージョンを設定します。TF_VAR_cluster_name: クラスターの名前を設定します。TF_VAR_cluster_description: クラスターの説明を設定します。GCPクラスターの詳細ページでGitLabプロジェクトへの参照を作成するには、これを$CI_PROJECT_URLに設定することをお勧めします。これにより、GCPダッシュボードに表示されるクラスターをプロビジョニングしたプロジェクトを把握できます。TF_VAR_machine_type: Kubernetesノードのマシンタイプを設定します。TF_VAR_node_count: Kubernetesノードの数を設定します。TF_VAR_agent_namespace: Kubernetes向けGitLabエージェントのKubernetesネームスペースを設定します。
リソースオプションの詳細については、Google TerraformプロバイダーおよびKubernetes Terraformプロバイダーのドキュメントを参照してください。
Kubernetes Engine APIを有効にする
Google Cloud Consoleから、Kubernetes Engine APIを有効にします。
クラスターをプロビジョニングする
プロジェクトを設定した後、手動でクラスターのプロビジョニングをトリガーします。GitLabで、次の手順を実行します:
- 左側のサイドバーで、ビルド > パイプラインを選択します。
- パイプラインを新規作成を選択します。
- Play(再生)( )の横で、ドロップダウンリストアイコン( )を選択します。
- デプロイを選択して、デプロイメントジョブを手動でトリガーします。
パイプラインが正常に終了すると、新しいクラスターが表示されます:
- GCPの場合:GCPコンソールのKubernetesリストにあります。
- GitLabの場合:プロジェクトのサイドバーから、操作 > Kubernetesクラスターを選択します。
クラスターを使用する
クラスターをプロビジョニングすると、GitLabに接続され、デプロイの準備が整います。接続を確認するには:
- 左側のサイドバーで、操作 > Kubernetesクラスターを選択します。
- リストで、接続ステータス列を表示します。
接続の機能の詳細については、Kubernetes向けGitLabエージェントのドキュメントを参照してください。
クラスターを削除する
クリーンアップジョブは、デフォルトではパイプラインに含まれていません。作成したすべてのリソースを削除するには、クリーンアップジョブを実行する前に、GitLab CI/CDテンプレートを変更する必要があります。
すべてのリソースを削除するには:
次の内容を
.gitlab-ci.ymlファイルに追加します:stages: - init - validate - build - test - deploy - cleanup destroy: extends: .terraform:destroy needs: []左側のサイドバーで、ビルド > パイプラインを選択し、最新のパイプラインを選択します。
destroyジョブの場合は、Play(再生)( )を選択します。