Kubernetes用エージェントでの作業

Kubernetes用エージェントで作業する場合は、以下のタスクを使用します。

エージェントの表示

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

前提条件

  • 少なくともDeveloperロールを持っている必要があります。

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

  1. 左のサイドバーで、[検索]を選択するか、[移動]を選択し、エージェント設定ファイルを含むプロジェクトを探します。エージェント設定ファイルを含まないプロジェクトの登録エージェントは表示できません。
  2. オペレーション > Kubernetesクラスターを選択します。
  3. エージェントタブを選択し、エージェントを通してGitLabに接続されているクラスターを表示します。

このページでは、以下を見ることができます:

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

共有エージェントの表示

GitLab 16.1 で導入されました

プロジェクトが所有するエージェントに加えて、ci_accessuser_access キーワードで共有されたエージェントも表示できます。エージェントがプロジェクトと共有されると、自動的にプロジェクトのエージェントタブに表示されます。

共有されているエージェントの一覧を表示するには:

  1. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
  2. オペレーション > Kubernetesクラスターを選択します。
  3. エージェントタブを選択します。

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

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

GitLab 14.6で導入されました

アクティビティログは問題を特定し、トラブルシューティングに必要な情報を得るのに役立ちます。現在の日付の一週間前からのイベントを見ることができます。エージェントのアクティビティを見るには:

  1. 左サイドバーで、[検索]を選択するか、または [プロジェクト] に移動して、エージェント設定ファイルを含むプロジェクトを見つけます。
  2. オペレーション > Kubernetesクラスターを選択します。
  3. アクティビティを確認したいエージェントを選択します。

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

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

接続ステータスは、エージェントを初めて接続したとき、または 1 時間以上操作しなかったときにログに記録されます。

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

エージェントのデバッグ

grpc_level は GitLab 15.1 で導入されました。

エージェントのクラスター側コンポーネント(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

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

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

  • GitLab 14.9で導入されました
  • GitLab 14.10で導入された、エージェントトークンをUIから失効させることができます。
  • GitLab 16.1でcluster_agents_limit_tokens_created というフラグで2トークンの制限が導入
  • GitLab 16.2で2トークンの制限が一般的に利用可能に。機能フラグcluster_agents_limit_tokens_created を削除しました。

エージェントは、一度に2つのアクティブなトークンしか持つことができません。

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

  1. 新しいトークンを作成します:
    1. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
    2. オペレーション > Kubernetesクラスターを選択します。
    3. トークンを作成するエージェントを選択します。
    4. アクセストークンタブでトークンの作成を選択します。
    5. トークンの名前と説明(オプション)を入力し、「Create token」を選択します。
  2. 生成されたトークンをセキュリティで保護します。
  3. このトークンを使用して、エージェントをクラスターにインストールし、エージェントを別のバージョンに更新します。
  4. 使用しなくなったトークンを削除するには、トークン一覧に戻り、Revoke({remove}) を選択します。

エージェントの削除

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

GitLab UIからエージェントを削除する場合

GitLab 14.7 で導入されました

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

  1. 左のサイドバーで、Search を選択するか、エージェント設定ファイルを含むプロジェクトを検索してください。
  2. オペレーション > Kubernetesクラスターを選択します。
  3. テーブルで、エージェントの行のオプション列で、垂直省略記号({ellipsis_v}) を選択します。
  4. エージェントの削除]を選択します。

GitLab GraphQL APIでエージェントを削除します。

  1. インタラクティブなGraphQLエクスプローラーでクエリから<cluster-agent-token-id>
    • GitLab.comの場合は、https://gitlab.com/-/graphql-explorer にアクセスしてGraphQL Explorerを開きます。
    • セルフマネージドGitLabの場合は、https://gitlab.example.com/-/graphql-explorergitlab.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