正式なドキュメントは英語版であり、この日本語訳は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. パーソナルアクセストークンを作成を選択します。

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

Fluxのブートストラップ

このセクションでは、flux bootstrapコマンドを使用して、空のGitリポジトリに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変更がコミットされるGitブランチ。
pathFlux設定が保存されるフォルダーへのファイルパス。

ブートストラップスクリプトは以下を実行します:

  1. デプロイトークンを作成し、Kubernetes secretとして保存します。
  2. --repository引数で指定されたGitLabプロジェクトが存在しない場合、空の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を使用する方法の詳細については、以下を参照してください: