Azure AKSクラスターの作成

Infrastructure as Code(IaC)を使って、Azure Kubernetes Service(AKS) 上にクラスターを作成できます。このプロセスでは、AzureとKubernetesのTerraformプロバイダを使用してAKSクラスタを作成します。Kubernetes用のGitLabエージェントを使用して、クラスターをGitLabに接続します。

前提条件

  • セキュリティ認証情報を設定したMicrosoft Azureアカウント。
  • GitLab CI/CDパイプラインを実行するために使用できるRunner

ステップ

  1. サンプルプロジェクトをインポートします。
  2. Kubernetes用のエージェントを登録します。
  3. プロジェクトを設定します。
  4. クラスターをプロビジョニングします。

サンプルプロジェクトのインポート

Infrastructure as Codeを使ってGitLabからクラスターを作成するには、クラスターを管理するプロジェクトを作成する必要があります。このチュートリアルでは、まずサンプルプロジェクトを作成し、必要に応じて変更します。

まずはURLからサンプルプロジェクトをインポートしましょう。

プロジェクトをインポートするには:

  1. 左サイドバーの上部にある「新規作成({plus})」と「新規プロジェクト/リポジトリ」を選択します。
  2. プロジェクトのインポートを選択します。
  3. URLでリポジトリを選択します。
  4. Git リポジトリの URL にはhttps://gitlab.com/gitlab-org/ci-cd/deploy-stage/environments-group/examples/gitlab-terraform-aks.git と入力します。
  5. 各項目を入力し、Create projectを選択します。

このプロジェクトでは、以下を提供します:

エージェントの登録

Kubernetes用のGitLabエージェントを作成するには:

  1. 左サイドバーで、Operate > Kubernetes clustersを選択します。
  2. クラスター(エージェント)を接続]を選択します。
  3. Select an agent]ドロップダウンリストから[aks-agent ]を選択し、[Register an agent]を選択します。
  4. GitLabがエージェントの登録トークンを生成します。このシークレットトークンは後で必要になるので、セキュアに保管してください。
  5. GitLabはエージェントサーバーのアドレス(KAS) 、これも後で必要になります。

プロジェクトの設定

CI/CD環境変数を使ってプロジェクトを設定します。

必須の設定です:

  1. 左サイドバーで、Settings > CI/CDを選択します。
  2. 変数]を展開します。
  3. 変数AZURE_CLIENT_ID を Azure クライアント ID に設定します。
  4. 変数AZURE_CLIENT_SECRET に Azure クライアントシークレットを設定します。
  5. 変数AZURE_TENANT_ID にサービスプリンシパルを設定します。
  6. 変数TF_VAR_agent_token に、前のタスクで表示されたエージェントトークンを設定します。
  7. 変数TF_VAR_kas_address に、前のタスクで表示されたエージェントサーバアドレスを設定します。

オプション設定:

ファイルvariables.tf には、必要に応じて上書きできる他の変数が含まれています:

  • TF_VAR_location:クラスターの地域を設定します。
  • TF_VAR_cluster_name:クラスターの名前を設定します。
  • TF_VAR_kubernetes_version:Kubernetesのバージョンを設定します。
  • TF_VAR_create_resource_group:新しいリソースグループの作成を有効または無効にします。(デフォルトはtrueに設定)。
  • TF_VAR_resource_group_name:リソースグループの名前を設定します。
  • TF_VAR_agent_namespace:GitLabエージェントのKubernetesネームスペースを設定します。

その他のリソースオプションについては、Azure Terraformプロバイダと Kubernetes Terraformプロバイダのドキュメントを参照してください。

クラスターのプロビジョニング

プロジェクトの設定が終わったら、手動でクラスターのプロビジョニングを開始します。GitLab:

  1. 左サイドバーでBuild > Pipelines を選択します。
  2. Play({play})の横にあるドロップダウンリストアイコン({chevron-lg-down})を選択します。
  3. 手動でデプロイジョブをトリガするには、[デプロイ]を選択します。

パイプラインが正常に終了すると、新しいクラスターを表示できます:

  • Azureで:AzureポータルからKubernetes services > Viewを選択します。
  • GitLabの場合:左サイドバーで、Operate > Kubernetes clustersを選択します。

クラスターを使う

クラスターをプロビジョニングすると、GitLabに接続され、デプロイの準備が整います。接続を確認するには

  1. 左サイドバーで、Operate > Kubernetes clustersを選択します。
  2. リストで、[Connection status]列を表示します。

接続の機能の詳細については、GitLab agent for Kubernetesのドキュメントを参照してください。

クラスターの削除

クリーンアップジョブはデフォルトではパイプラインに含まれていません。作成されたリソースをすべて削除するには、クリーンアップジョブを実行する前にGitLab CI/CDテンプレートを変更する必要があります。

全てのリソースを削除するには

  1. .gitlab-ci.yml ファイルに以下を追加します:

    stages:
      - init
      - validate
      - test
      - build
      - deploy
      - cleanup
       
    destroy:
      extends: .terraform:destroy
      needs: []
    
  2. 左サイドバーで、Build > Pipelinesを選択し、最新のパイプラインを選択します。
  3. destroy ジョブの場合は、再生({play}) を選択します。