- トランスポートWebSocketダイヤルに失敗しました。
- バリデーションエラー(Deployment.metadata)
- WebSocketダイヤルに失敗しました: ハンドシェーク要求の送信に失敗しました。
- grpc-encoding用にDecompressorがインストールされていません。
- 不明な作成者によって署名された証明書
- プロジェクトが見つかりません
- ワークロードに対する脆弱性スキャンの実行に失敗しました: jobs.batch が既に存在します。
- インベントリポリシーが作動を阻止 (strategy: Apply, status: Empty, policy: MustMatch)
- インストール中の解析エラー
GitLab Agent Server: Unauthorized
Kubernetes 用ダッシュボードでのエラー
Kubernetes用GitLabエージェントのトラブルシューティング
Kubernetes用のGitLabエージェントを使用していると、トラブルシューティングが必要なイシューに遭遇することがあります。
サービスログを見ることから始めましょう:
kubectl logs -f -l=app.kubernetes.io/name=gitlab-agent -n gitlab-agent
GitLab の管理者であれば、GitLab エージェントサーバーのログを見ることもできます。
トランスポートWebSocketダイヤルに失敗しました。
{
"level": "warn",
"time": "2020-11-04T10:14:39.368Z",
"msg": "GetConfiguration failed",
"error": "rpc error: code = Unavailable desc = connection error: desc = \"transport: Error while dialing failed to WebSocket dial: failed to send handshake request: Get \\\"https://gitlab-kas:443/-/kubernetes-agent\\\": dial tcp: lookup gitlab-kas on 10.60.0.10:53: no such host\""
}
このエラーは、kas-address
エージェントポッドとの kas-address
接続に問題がある場合に発生します。kas-address
このイシューを解決するには、WebSocketDialが kas-address
正確であることを確認してください。
{
"level": "error",
"time": "2021-06-25T21:15:45.335Z",
"msg": "Reverse tunnel",
"mod_name": "reverse_tunnel",
"error": "Connect(): rpc error: code = Unavailable desc = connection error: desc= \"transport: Error while dialing failed to WebSocket dial: expected handshake response status code 101 but got 301\""
}
このエラーは、kas-address
に末尾のスラッシュが含まれていない場合に発生します。このイシューを解決するには、wss://GitLab.host.tld:443/-/kubernetes-agent/
またはws://GitLab.host.tld:80/-/kubernetes-agent/
のように、wss
またはws
URL の末尾にスラッシュがあることを確認してください。
バリデーションエラー(Deployment.metadata)
{
"level": "info",
"time": "2020-10-30T08:56:54.329Z",
"msg": "Synced",
"project_id": "root/kas-manifest001",
"resource_key": "apps/Deployment/kas-test001/nginx-deployment",
"sync_result": "error validating data: [ValidationError(Deployment.metadata): unknown field \"replicas\" in io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta, ValidationError(Deployment.metadata): unknown field \"selector\" in io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta, ValidationError(Deployment.metadata): unknown field \"template\" in io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta]"
}
このエラーは、マニフェストファイルが不正な形式で、Kubernetesが指定されたオブジェクトを作成できない場合に発生します。マニフェストファイルが有効であることを確認してください。
追加のトラブルシューティングについては、マニフェストファイルを使用してKubernetesでオブジェクトを直接作成してみてください。
WebSocketダイヤルに失敗しました: ハンドシェーク要求の送信に失敗しました。
{
"level": "warn",
"time": "2020-10-30T09:50:51.173Z",
"msg": "GetConfiguration failed",
"error": "rpc error: code = Unavailable desc = connection error: desc = \"transport: Error while dialing failed to WebSocket dial: failed to send handshake request: Get \\\"https://GitLabhost.tld:443/-/kubernetes-agent\\\": net/http: HTTP/1.x transport connection broken: malformed HTTP response \\\"\\\\x00\\\\x00\\\\x06\\\\x04\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x05\\\\x00\\\\x00@\\\\x00\\\"\""
}
このエラーは、エージェント側でwss
をkas-address
として設定したが、エージェントサーバがwss
で利用できない場合に発生します。このイシューを解決するには、両側で同じスキームが設定されていることを確認します。
grpc-encoding用にDecompressorがインストールされていません。
{
"level": "warn",
"time": "2020-11-05T05:25:46.916Z",
"msg": "GetConfiguration.Recv failed",
"error": "rpc error: code = Unimplemented desc = grpc: Decompressor is not installed for grpc-encoding \"gzip\""
}
このエラーは、エージェントのバージョンがエージェントサーバ(KAS) のバージョンより新しい場合に発生します。このエラーを修正するには、agentk
とエージェントサーバの両方が同じバージョンであることを確認してください。
不明な作成者によって署名された証明書
{
"level": "error",
"time": "2021-02-25T07:22:37.158Z",
"msg": "Reverse tunnel",
"mod_name": "reverse_tunnel",
"error": "Connect(): rpc error: code = Unavailable desc = connection error: desc = \"transport: Error while dialing failed to WebSocket dial: failed to send handshake request: Get \\\"https://GitLabhost.tld:443/-/kubernetes-agent/\\\": x509: certificate signed by unknown authority\""
}
このエラーは、GitLabインスタンスがエージェントにとって未知の内部認証局によって署名された証明書を使用している場合に発生します。
このイシューを解決するには、HelmインストールをカスタマイズすることでエージェントにCA証明書ファイルを提示することができます。helm install
コマンドに--set-file config.caCert=my-custom-ca.pem
を追加します。ファイルは有効なPEMまたはDERエンコードされた証明書である必要があります。
config.caCert
の値を設定してagentk
をデプロイすると、証明書はconfigmap
に追加され、証明書ファイルは/etc/ssl/certs
にマウントされます。
$ kubectl get configmap -lapp=gitlab-agent -o yaml
apiVersion: v1
items:
- apiVersion: v1
data:
ca.crt: |-
-----BEGIN CERTIFICATE-----
MIIFmzCCA4OgAwIBAgIUE+FvXfDpJ869UgJitjRX7HHT84cwDQYJKoZIhvcNAQEL
...truncated certificate...
GHZCTQkbQyUwBWJOUyOxW1lro4hWqtP4xLj8Dpq1jfopH72h0qTGkX0XhFGiSaM=
-----END CERTIFICATE-----
kind: ConfigMap
metadata:
annotations:
meta.helm.sh/release-name: self-signed
meta.helm.sh/release-namespace: gitlab-agent-self-signed
creationTimestamp: "2023-03-07T20:12:26Z"
labels:
app: gitlab-agent
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: gitlab-agent
app.kubernetes.io/version: v15.9.0
helm.sh/chart: gitlab-agent-1.11.0
name: self-signed-gitlab-agent
resourceVersion: "263184207"
kind: List
GitLabアプリケーションサーバーのエージェントサーバー(KAS) のログに同様のエラーが表示されるかもしれません:
{"level":"error","time":"2023-03-07T20:19:48.151Z","msg":"AgentInfo()","grpc_service":"gitlab.agent.agent_configuration.rpc.AgentConfiguration","grpc_method":"GetConfiguration","error":"Get \"https://gitlab.example.com/api/v4/internal/kubernetes/agent_info\": x509: certificate signed by unknown authority"}
これを修正するには、内部CAの公開証明書を/etc/gitlab/trusted-certs
ディレクトリにインストールしてください。
あるいは、カスタムディレクトリから証明書を読み込むようにエージェントサーバ(KAS) を設定することもできます。/etc/gitlab/gitlab.rb
に以下の設定を追加します:
gitlab_kas['env'] = {
'SSL_CERT_DIR' => "/opt/gitlab/embedded/ssl/certs/"
}
変更を適用するには
-
GitLab を再設定します。
sudo gitlab-ctl reconfigure
-
gitlab-kas
を再起動します。gitlab-ctl restart gitlab-kas
プロジェクトが見つかりません
{
"level ":"error ",
"time ":"2022-01-05T15:18:11.331Z",
"msg ":"GetObjectsToSynchronize.Recv failed ",
"mod_name ":"gitops ",
"error ":"rpc error: code = NotFound desc = project not found ",
}
このエラーは、マニフェストを保存しているプロジェクトが公開されていない場合に発生します。修正するには、プロジェクトが公開されているか、マニフェストファイルがエージェントが設定されているリポジトリに保存されていることを確認してください。
ワークロードに対する脆弱性スキャンの実行に失敗しました: jobs.batch が既に存在します。
{
"level": "error",
"time": "2022-06-22T21:03:04.769Z",
"msg": "Failed to perform vulnerability scan on workload",
"mod_name": "starboard_vulnerability",
"error": "running scan job: creating job: jobs.batch \"scan-vulnerabilityreport-b8d497769\" already exists"
}
GitLabエージェントは、各ワークロードをスキャンするジョブを作成することで脆弱性スキャンを実行します。スキャンが中断された場合、これらのジョブが取り残される可能性があり、さらにジョブを実行する前にクリーンアップする必要があります。ジョブをクリーンアップするには、以下のコマンドを実行します:
kubectl delete jobs -l app.kubernetes.io/managed-by=starboard -n gitlab-agent
これらのジョブのクリーンアップをより堅牢にするよう取り組んでいます。
インベントリポリシーが作動を阻止 (strategy: Apply, status: Empty, policy: MustMatch)
{
"error":"inventory policy prevented actuation (strategy: Apply, status: Empty, policy: MustMatch)",
"group":"networking.k8s.io",
"kind":"Deployment",
"name":"resource-name",
"namespace":"namespace",
"status":"Skipped",
"timestamp":"2022-10-29T15:34:21Z",
"type":"apply"
}
このエラーは、GitLabエージェントがオブジェクトを更新しようとして、そのオブジェクトに必要なアノテーションがない場合に発生します。このエラーを修正するには、以下の方法があります:
- 手動で必要なアノテーションを追加します。
- オブジェクトを削除し、エージェントに再作成させます。
-
inventory_policy
の設定を変更します。
インストール中の解析エラー
エージェントのインストール時に、以下のようなエラーが発生することがあります:
Error: parse error at (gitlab-agent/templates/observability-secret.yaml:1): unclosed action
このエラーは通常、Helmのバージョンに互換性がないために発生します。このイシューを解決するには、Kubernetesのバージョンと互換性のあるHelmのバージョンを使用していることを確認してください。
GitLab Agent Server: Unauthorized
Kubernetes 用ダッシュボードでのエラー
Kubernetes の DashboardページでGitLab Agent Server: Unauthorized. Trace ID: <...>
のようなエラーが発生するのは、以下のいずれかが原因である可能性があります:
- エージェント設定ファイルの
user_access
エントリが存在しないか、間違っています。解決するには、ユーザーにKubernetesアクセスを許可するを参照してください。 -
ブラウザに複数の
_gitlab_kas
Cookie があり、KASに送信されています。最も考えられる原因は、同じサイトでホストされている複数のGitLabインスタンスです。例えば、
gitlab.com
はkas.gitlab.com
をターゲットとした_gitlab_kas
クッキーを設定しますが、そのクッキーはkas.staging.gitlab.com
にも送信され、staging.gitlab.com
でエラーを引き起こします。一時的に解決するには、ブラウザのクッキーストアから
gitlab.com
の_gitlab_kas
クッキーを削除してください。イシュー 418998はこの既知の問題の修正を提案しています。 - GitLabとKASは異なるサイトで動作しています。例えば、GitLabは
gitlab.example.com
、KASはkas.example.com
。GitLabはこのユースケースをサポートしていません。詳しくはイシュー416436をご覧ください。