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

Kubernetesインスタンスのエージェントを管理する

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

Kubernetesのエージェントを使用する際のタスクを以下に示します。

エージェントの表示

インストールされているagentkのバージョンは、エージェントタブに表示されます。

前提要件:

  • デベロッパーロール以上が必要です。

エージェントのリストを表示するには:

  1. 左側のサイドバーで、検索または移動先を選択し、エージェントの設定ファイル()を含むプロジェクトを見つけます。エージェントの設定ファイルを含まないプロジェクトからは、登録されているエージェントを表示できません。
  2. 操作 > Kubernetesクラスターを選択します。
  3. エージェントタブを選択して、GitLabエージェント経由で接続されているクラスターを表示します。

このページでは、以下を表示できます:

  • 現在のプロジェクトに登録されているすべてのエージェント。
  • 接続状況。
  • お使いのクラスターにインストールされているagentkのバージョン。
  • 各エージェントの設定ファイルへのパス。

エージェントの設定

エージェントを設定するには:

  • config.yamlファイルにコンテンツを追加します(必要に応じてインストール時に作成)。

エージェントのリストから、エージェントの設定ファイルをすばやく見つけることができます。設定コラムは、config.yamlファイルの場所を示すか、ファイルの作成方法を示します。

エージェントの設定ファイルは、さまざまなエージェントの機能を管理します:

利用可能な設定ファイルフィールド

エージェントの設定ファイル形式は、ソースリポジトリ内のプロトコルバッファメッセージとして定義されます。

利用可能なすべての設定ファイルフィールドを表示するには:

  1. ConfigurationFileにアクセスして、生成されたドキュメントで、エージェントの設定ファイル全体のフィールドを表示します。
  2. フィールドの構造に関する詳細については、任意のフィールドタイプを選択してください。

共有エージェントの表示

プロジェクトが所有するエージェントに加えて、ci_accessおよびuser_accessキーワードと共有されているエージェントを表示することもできます。エージェントがプロジェクトと共有されると、そのプロジェクトのエージェントタブに自動的に表示されます。

共有エージェントのリストを表示するには:

  1. 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
  2. 操作 > Kubernetesクラスターを選択します。
  3. エージェントタブを選択します。

共有エージェントとそのクラスターのリストが表示されます。

エージェントのアクティビティー情報の表示

アクティビティーログは、問題の特定とトラブルシューティングに必要な情報を取得するのに役立ちます。現在の日付より1週間前のイベントを確認できます。エージェントのアクティビティーを表示するには:

  1. 左側のサイドバーで、検索または移動先を選択し、エージェントの設定ファイル()を含むプロジェクトを見つけます。
  2. 操作 > Kubernetesクラスターを選択します。
  3. アクティビティーを表示するエージェントを選択します。

アクティビティーリストには以下が含まれます:

  • エージェントの登録イベント: 新しいトークンが作成済みの場合。
  • 接続イベント: エージェントがクラスターに正常に接続された場合。

エージェントを初めて接続したとき、または1時間以上操作がない場合に、接続状況がログに記録されます。

このエピックのUIに関するフィードバックを表示して提供します。

エージェントのデバッグ

エージェントのクラスター側のコンポーネント(agentk)をデバッグするには、利用可能なオプションに従ってログレベルを設定します:

  • error
  • info
  • debug

エージェントには2つのロガーがあります:

  • 汎用ロガー。 infoがデフォルトです。
  • gRPCログ記録ロガー。 errorがデフォルトです。

エージェント設定ファイルの最上位observabilityセクションを使用してログレベルを変更できます(たとえば、レベルをdebugwarnに設定するなど):

observability:
  logging:
    level: debug
    grpc_level: warn

grpc_levelinfo以下に設定されている場合、gRPCログ記録が大量に生成されます。

設定の変更をコミットし、エージェントサービスのログを検査します:

kubectl logs -f -l=app=gitlab-agent -n gitlab-agent

デバッグの詳細については、トラブルシューティングドキュメントを参照してください。

エージェントトークンのリセット

1つのエージェントが持つことができるアクティブなトークンは2つだけです。

ダウンタイムなしでエージェントトークンをリセットするには:

  1. 新しいトークンを作成します:
    1. 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
    2. 操作 > Kubernetesクラスターを選択します。
    3. トークンを作成するエージェントを選択します。
    4. アクセストークンタブで、トークンを作成を選択します。
    5. トークンの名前と説明(オプション)を入力し、トークンを作成を選択します。
  2. 生成されたトークンを安全に保存します。
  3. トークンを使用して、クラスターにエージェントをインストールし、別のバージョンにエージェントを更新します。
  4. 使用しなくなったトークンを削除するには、トークンリストに戻り、取り消し remove )を選択します。

エージェントの削除

GitLab UIまたはGraphQL APIを使用して、エージェントを削除できます。エージェントと関連するトークンはGitLabから削除されますが、Kubernetesクラスターでは何も変更されません。これらのリソースを手動でクリーンアップする必要があります。

GitLab UIを使用したエージェントの削除

UIからエージェントを削除するには:

  1. 左側のサイドバーで、検索または移動先を選択し、エージェントの設定ファイルを含むプロジェクトを見つけます。
  2. 操作 > Kubernetesクラスターを選択します。
  3. テーブルで、エージェントの行のオプション列で、縦方向の省略記号( ellipsis_v )を選択します。
  4. エージェントの削除を選択します。

GitLab GraphQL APIを使用したエージェントの削除

  1. インタラクティブなGraphQLエクスプローラーのクエリから<cluster-agent-token-id>を取得します。

    • GitLab.comの場合は、https://gitlab.com/-/graphql-explorerに移動してGraphQLエクスプローラーを開きます。
    • GitLabセルフマネージドの場合は、https://gitlab.example.com/-/graphql-explorerにアクセスし、gitlab.example.comをインスタンスのURLに置き換えます。
    query{
      project(fullPath: "<full-path-to-agent-configuration-project>") {
        clusterAgent(name: "<agent-name>") {
          id
          tokens {
            edges {
              node {
                id
              }
            }
          }
        }
      }
    }
  2. clusterAgentTokenを削除して、GraphQLでエージェントレコードを削除します。

    mutation deleteAgent {
      clusterAgentDelete(input: { id: "<cluster-agent-id>" } ) {
        errors
      }
    }
    
    mutation deleteToken {
      clusterAgentTokenDelete(input: { id: "<cluster-agent-token-id>" }) {
        errors
      }
    }
  3. 削除が正常に行われたかどうかを確認します。ポッドログの出力にunauthenticatedが含まれている場合、エージェントが正常に削除されたことを意味します:

    {
        "level": "warn",
        "time": "2021-04-29T23:44:07.598Z",
        "msg": "GetConfiguration.Recv failed",
        "error": "rpc error: code = Unauthenticated desc = unauthenticated"
    }
  4. クラスター内のエージェントを削除します:

    kubectl delete -n gitlab-kubernetes-agent -f ./resources.yml