Kubernetesインスタンスのエージェントを管理する
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
Kubernetesのエージェントを使用する際のタスクを以下に示します。
エージェントの表示
インストールされているagentkのバージョンは、エージェントタブに表示されます。
前提要件:
- デベロッパーロール以上が必要です。
エージェントのリストを表示するには:
- 左側のサイドバーで、検索または移動先を選択し、エージェントの設定ファイル()を含むプロジェクトを見つけます。エージェントの設定ファイルを含まないプロジェクトからは、登録されているエージェントを表示できません。
- 操作 > Kubernetesクラスターを選択します。
- エージェントタブを選択して、GitLabエージェント経由で接続されているクラスターを表示します。
このページでは、以下を表示できます:
- 現在のプロジェクトに登録されているすべてのエージェント。
- 接続状況。
- お使いのクラスターにインストールされている
agentkのバージョン。 - 各エージェントの設定ファイルへのパス。
エージェントの設定
エージェントを設定するには:
config.yamlファイルにコンテンツを追加します(必要に応じてインストール時に作成)。
エージェントのリストから、エージェントの設定ファイルをすばやく見つけることができます。設定コラムは、config.yamlファイルの場所を示すか、ファイルの作成方法を示します。
エージェントの設定ファイルは、さまざまなエージェントの機能を管理します:
- GitLab CI/CDのワークフロー。プロジェクトへのアクセスをエージェントに許可する必要があり、
kubectlコマンドを.gitlab-ci.ymlファイルに追加します。 - GitLab UIまたはローカルターミナルからのユーザーアクセスの場合。
- 運用コンテナスキャンを設定する場合。
- リモートワークスペースを設定する場合。
利用可能な設定ファイルフィールド
エージェントの設定ファイル形式は、ソースリポジトリ内のプロトコルバッファメッセージとして定義されます。
利用可能なすべての設定ファイルフィールドを表示するには:
ConfigurationFileにアクセスして、生成されたドキュメントで、エージェントの設定ファイル全体のフィールドを表示します。- フィールドの構造に関する詳細については、任意のフィールドタイプを選択してください。
共有エージェントの表示
プロジェクトが所有するエージェントに加えて、ci_accessおよびuser_accessキーワードと共有されているエージェントを表示することもできます。エージェントがプロジェクトと共有されると、そのプロジェクトのエージェントタブに自動的に表示されます。
共有エージェントのリストを表示するには:
- 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 操作 > Kubernetesクラスターを選択します。
- エージェントタブを選択します。
共有エージェントとそのクラスターのリストが表示されます。
エージェントのアクティビティー情報の表示
アクティビティーログは、問題の特定とトラブルシューティングに必要な情報を取得するのに役立ちます。現在の日付より1週間前のイベントを確認できます。エージェントのアクティビティーを表示するには:
- 左側のサイドバーで、検索または移動先を選択し、エージェントの設定ファイル()を含むプロジェクトを見つけます。
- 操作 > Kubernetesクラスターを選択します。
- アクティビティーを表示するエージェントを選択します。
アクティビティーリストには以下が含まれます:
- エージェントの登録イベント: 新しいトークンが作成済みの場合。
- 接続イベント: エージェントがクラスターに正常に接続された場合。
エージェントを初めて接続したとき、または1時間以上操作がない場合に、接続状況がログに記録されます。
このエピックのUIに関するフィードバックを表示して提供します。
エージェントのデバッグ
エージェントのクラスター側のコンポーネント(agentk)をデバッグするには、利用可能なオプションに従ってログレベルを設定します:
errorinfodebug
エージェントには2つのロガーがあります:
- 汎用ロガー。
infoがデフォルトです。 - gRPCログ記録ロガー。
errorがデフォルトです。
エージェント設定ファイルの最上位observabilityセクションを使用してログレベルを変更できます(たとえば、レベルをdebugとwarnに設定するなど):
observability:
logging:
level: debug
grpc_level: warngrpc_levelがinfo以下に設定されている場合、gRPCログ記録が大量に生成されます。
設定の変更をコミットし、エージェントサービスのログを検査します:
kubectl logs -f -l=app=gitlab-agent -n gitlab-agentデバッグの詳細については、トラブルシューティングドキュメントを参照してください。
エージェントトークンのリセット
1つのエージェントが持つことができるアクティブなトークンは2つだけです。
ダウンタイムなしでエージェントトークンをリセットするには:
- 新しいトークンを作成します:
- 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 操作 > Kubernetesクラスターを選択します。
- トークンを作成するエージェントを選択します。
- アクセストークンタブで、トークンを作成を選択します。
- トークンの名前と説明(オプション)を入力し、トークンを作成を選択します。
- 生成されたトークンを安全に保存します。
- トークンを使用して、クラスターにエージェントをインストールし、別のバージョンにエージェントを更新します。
- 使用しなくなったトークンを削除するには、トークンリストに戻り、取り消し( )を選択します。
エージェントの削除
GitLab UIまたはGraphQL APIを使用して、エージェントを削除できます。エージェントと関連するトークンはGitLabから削除されますが、Kubernetesクラスターでは何も変更されません。これらのリソースを手動でクリーンアップする必要があります。
GitLab UIを使用したエージェントの削除
UIからエージェントを削除するには:
- 左側のサイドバーで、検索または移動先を選択し、エージェントの設定ファイルを含むプロジェクトを見つけます。
- 操作 > Kubernetesクラスターを選択します。
- テーブルで、エージェントの行のオプション列で、縦方向の省略記号( )を選択します。
- エージェントの削除を選択します。
GitLab GraphQL APIを使用したエージェントの削除
インタラクティブな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 } } } } } }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