正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

KubernetesクラスタをGitLabに接続する手順

このページでは、単一プロジェクトで基本的なKubernetesインテグレーションをセットアップする方法を説明します。Kubernetes向けGitLabエージェントプルベースのデプロイ、またはFluxを初めて使用する場合は、ここから開始してください。

完了すると、次のことができるようになります:

  • リアルタイムのKubernetesダッシュボードでKubernetesクラスタのステータスを表示します。
  • Fluxを使用して、クラスタにアップデートをデプロイします。
  • GitLab CI/CDを使用して、クラスタにアップデートをデプロイします。

はじめる前

このチュートリアルを完了する前に、以下があることを確認してください:

  • kubectlでローカルにアクセスできるKubernetesクラスタ。KubernetesのどのバージョンをGitLabがサポートしているかについては、GitLab機能でサポートされているKubernetesのバージョンを参照してください。

    すべてが正しく設定されていることを確認するには、次を実行します:

    kubectl cluster-info

Fluxをインストールして設定します

Fluxは、GitOpsデプロイ(プルベースのデプロイとも呼ばれます)に推奨されるツールです。Fluxは成熟したCNCFプロジェクトです。

Fluxをインストールするには:

Flux CLIが正しくインストールされていることを確認するには、次を実行します:

flux -v

パーソナルアクセストークンを作成する

Flux CLIで認証するには、apiスコープを持つパーソナルアクセストークンを作成します:

  1. 左側のサイドバーで、自分のアバターを選択します。
  2. プロファイルの編集を選択します。
  3. パーソナルアクセストークンを選択します。
  4. トークンの名前とオプションの有効期限を入力します。
  5. apiスコープを選択します。
  6. Create personal access token(パーソナルアクセストークンを作成)を選択します。

apiスコープとmaintainerロールを持つプロジェクトまたはグループアクセストークンを使用することもできます。

Fluxをブートストラップ

このセクションでは、flux bootstrapコマンドを使用して、空のGitLabリポジトリにFluxをブートストラップします。

Fluxインストールをブートストラップするには:

  • flux bootstrap gitlabコマンドを実行します。例:

    flux bootstrap gitlab \
    --hostname=gitlab.example.org \
    --owner=my-group/optional-subgroup \
    --repository=my-repository \
    --branch=main \
    --path=clusters/testing \
    --deploy-token-auth

bootstrapの引数は次のとおりです:

引数説明
hostnameGitLabインスタンスのホスト名。
ownerFluxリポジトリを含むGitLabグループ。
repositoryFluxリポジトリを含むGitLabプロジェクト。
branch変更をコミットするブランチ。
pathFluxの設定が保存されているフォルダーへのパス。

ブートストラップスクリプトは、次のことを行います:

  1. デプロイトークンを作成し、Kubernetes secretとして保存します。
  2. --repository引数で指定されたプロジェクトが存在しない場合は、空のGitLabプロジェクトを作成します。
  3. --path引数で指定されたフォルダーに、プロジェクトのFlux定義ファイルを生成します。
  4. --branch引数で指定されたブランチに定義ファイルをコミットします。
  5. 定義ファイルをクラスタに適用します。

スクリプトを実行すると、FluxはGitLabプロジェクトとパスに追加した他のリソースを自身で管理できるようになります。

このチュートリアルの残りの部分では、パスがclusters/testing、プロジェクトがmy-group/optional-subgroup/my-repositoryの下にあることを前提としています。

エージェント接続をセットアップ

クラスタを接続するには、Kubernetes向けGitLabエージェントをインストールする必要があります。これは、GitLab CLI(glab)でエージェントをブートストラップすることで実行できます。

  1. GitLab CLIをインストール

    GitLab CLIが利用可能であることを確認するには、以下を実行します。

    glab version
  2. GitLabインスタンスに対して認証glabします。

  3. Fluxをブートストラップしたリポジトリで、glab cluster agent bootstrapコマンドを実行します:

    glab cluster agent bootstrap --manifest-path clusters/testing testing

デフォルトでは、コマンドは以下の動作を行います:

  1. testingを名前としてエージェントを登録します。
  2. エージェントを設定します。
  3. testingという名前のエージェントのダッシュボードで環境を設定します。
  4. エージェントトークンを作成します。
  5. クラスター内に、エージェントトークンでKubernetesシークレットを作成します。
  6. Flux HelmリソースをGitリポジトリにコミットします。
  7. Fluxの調整をトリガーします。

エージェントの設定の詳細については、Kubernetes用エージェントのインストールを参照してください。

Kubernetesのダッシュボードをチェックアウト

glab cluster agent bootstrapは、GitLab内に環境を作成し、設定されたダッシュボードを作成しました。

ダッシュボードを表示するには:

  1. 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
  2. 操作 > 環境を選択します。
  3. 環境を選択します。たとえばflux-system/gitlab-agentなどです。
  4. Kubernetesの概要タブを選択します。

デプロイを保護する

  • プラン: Premium、Ultimate

これまでのところ、.gitlab/agents/testing/config.yamlファイルを使用してエージェントをデプロイしました。この設定により、エージェントのデプロイ用に設定されたサービスアカウントを使用して、ユーザーがアクセスできるようになります。ユーザーアクセスは、Kubernetesのダッシュボード、およびローカルアクセスで使用されます。

デプロイメントのセキュリティを維持するために、GitLabユーザーを代理するようにこの設定を変更する必要があります。この場合、通常のKubernetesのロールベースのアクセス制御(RBAC)を使用して、クラスターリソースへのアクセスを管理できます。

ユーザーの代理を有効にするには、次のようにします:

  1. .gitlab/agents/testing/config.yamlファイルで、user_access.access_as.agent: {}user_access.access_as.user: {}に置き換えます。

  2. Kubernetes用に設定されたダッシュボードに移動します。アクセスが制限されている場合、ダッシュボードにエラーメッセージが表示されます。

  3. 次のコードをclusters/testing/gitlab-user-read.yamlに追加します:

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
       name: gitlab-user-view
    roleRef:
       name: view
       kind: ClusterRole
       apiGroup: rbac.authorization.k8s.io
    subjects:
       - name: gitlab:user
         kind: Group
  4. Fluxが追加されたマニフェストを適用できるように数秒待ってから、Kubernetesのダッシュボードをもう一度確認します。ダッシュボードは、GitLabのすべてのユーザーに読み取りアクセス権を付与するデプロイされたクラスターロールバインディングのおかげで、正常に戻るはずです。

ユーザーアクセスの詳細については、Kubernetesへのユーザーアクセス権の付与を参照してください。

すべてを最新の状態に保つ

インストール後、Fluxとagentkをアップグレードする必要があるかもしれません。

これを行うには、次の手順を実行します:

  • flux bootstrap gitlabコマンドとglab cluster agent bootstrapコマンドを再実行します。

次の手順

エージェントを登録し、Fluxのマニフェストを保存したプロジェクトから、クラスターに直接デプロイできます。エージェントはマルチテナントをサポートするように設計されており、設定されたエージェントとFluxのインストールにより、他のプロジェクトやグループにスケールできます。

フォローアップチュートリアルであるKubernetesへのデプロイを開始するを行うことを検討してください。GitLabでKubernetesを使用する方法の詳細については、以下を参照してください: