Kubernetes用エージェントでの作業
Kubernetes用エージェントで作業する場合は、以下のタスクを使用します。
エージェントの表示
GitLab 14.8 から導入された、インストールされている
agentk
のバージョンはエージェントタブに表示されます。
前提条件
- 少なくともDeveloperロールを持っている必要があります。
エージェントのリストを表示するには:
- 左のサイドバーで、[検索]を選択するか、[移動]を選択し、エージェント設定ファイルを含むプロジェクトを探します。エージェント設定ファイルを含まないプロジェクトの登録エージェントは表示できません。
- オペレーション > Kubernetesクラスターを選択します。
- エージェントタブを選択し、エージェントを通してGitLabに接続されているクラスターを表示します。
このページでは、以下を見ることができます:
- 現在のプロジェクトに登録されているすべてのエージェント。
- 接続状況。
- クラスターにインストールされている
agentk
のバージョン。 - 各エージェント設定ファイルへのパス。
共有エージェントの表示
GitLab 16.1 で導入されました。
プロジェクトが所有するエージェントに加えて、ci_access
とuser_access
キーワードで共有されたエージェントも表示できます。エージェントがプロジェクトと共有されると、自動的にプロジェクトのエージェントタブに表示されます。
共有されているエージェントの一覧を表示するには:
- 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
- オペレーション > Kubernetesクラスターを選択します。
- エージェントタブを選択します。
共有エージェントとそのクラスターのリストが表示されます。
エージェントのアクティビティ情報の表示
GitLab 14.6で導入されました。
アクティビティログは問題を特定し、トラブルシューティングに必要な情報を得るのに役立ちます。現在の日付の一週間前からのイベントを見ることができます。エージェントのアクティビティを見るには:
- 左サイドバーで、[検索]を選択するか、または [プロジェクト] に移動して、エージェント設定ファイルを含むプロジェクトを見つけます。
- オペレーション > Kubernetesクラスターを選択します。
- アクティビティを確認したいエージェントを選択します。
アクティビティリストには以下が含まれます:
- エージェント登録イベント:新しいトークンが作成されたとき。
- 接続イベント:エージェントがクラスターに正常に接続されたとき。
接続ステータスは、エージェントを初めて接続したとき、または 1 時間以上操作しなかったときにログに記録されます。
このエピックで、UI に関するフィードバックを提供します。
エージェントのデバッグ
grpc_level
は GitLab 15.1 で導入されました。
エージェントのクラスター側コンポーネント(agentk
)をデバッグするには、利用可能なオプションに従ってログレベルを設定します:
error
info
debug
エージェントには2つのロガーがあります:
- 汎用のロガーで、デフォルトは
info
です。 - gRPC ロガー。デフォルトは
error
です。
エージェント設定ファイルのトップレベルobservability
セクションを使用して、ログレベルを変更することができます。例えば、レベルをdebug
とwarn
に設定します:
observability:
logging:
level: debug
grpc_level: warn
grpc_level
がinfo
以下に設定されている場合、多くの gRPC ログがあります。
設定変更をコミットし、エージェントサービスのログを検査します:
kubectl logs -f -l=app=gitlab-agent -n gitlab-agent
デバッグの詳細については、トラブルシューティングドキュメントを参照してください。
エージェントトークンのリセット
エージェントは、一度に2つのアクティブなトークンしか持つことができません。
ダウンタイムなしでエージェントトークンをリセットするには:
- 新しいトークンを作成します:
- 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
- オペレーション > Kubernetesクラスターを選択します。
- トークンを作成するエージェントを選択します。
- アクセストークンタブで、トークンの作成を選択します。
- トークンの名前と説明(オプション)を入力し、「Create token」を選択します。
- 生成されたトークンをセキュリティで保護します。
- このトークンを使用して、エージェントをクラスターにインストールし、エージェントを別のバージョンに更新します。
- 使用しなくなったトークンを削除するには、トークン一覧に戻り、Revoke({remove}) を選択します。
エージェントの削除
GitLab UIまたはGraphQL APIを使用してエージェントを削除できます。エージェントと関連するトークンはGitLabから削除されますが、Kubernetesクラスターに変更はありません。それらのリソースを手動でクリーンアップする必要があります。
GitLab UIからエージェントを削除する場合
GitLab 14.7 で導入されました。
UIからエージェントを削除するには:
- 左のサイドバーで、Search を選択するか、エージェント設定ファイルを含むプロジェクトを検索してください。
- オペレーション > Kubernetesクラスターを選択します。
- テーブルで、エージェントの行のオプション列で、垂直省略記号({ellipsis_v}) を選択します。
- エージェントの削除]を選択します。
GitLab GraphQL APIでエージェントを削除します。
- インタラクティブなGraphQLエクスプローラーでクエリから
<cluster-agent-token-id>
。- GitLab.comの場合は、https://gitlab.com/-/graphql-explorer にアクセスしてGraphQL Explorerを開きます。
- セルフマネージド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 } } } } } }
-
clusterAgentToken
を削除して、GraphQL でエージェントのレコードを削除します。mutation deleteAgent { clusterAgentDelete(input: { id: "<cluster-agent-id>" } ) { errors } } mutation deleteToken { clusterAgentTokenDelete(input: { id: "<cluster-agent-token-id>" }) { errors } }
-
削除が成功したかどうかを確認します。ポッドログの出力に
unauthenticated
が含まれていれば、エージェントの削除に成功したことを意味します:{ "level": "warn", "time": "2021-04-29T23:44:07.598Z", "msg": "GetConfiguration.Recv failed", "error": "rpc error: code = Unauthenticated desc = unauthenticated" }
-
クラスターでエージェントを削除します:
kubectl delete -n gitlab-kubernetes-agent -f ./resources.yml