- 전송: WebSocket 다이얼링 중 오류 발생
- WebSocket 다이얼링 중 오류 발생: 핸드셰이크 요청 전송 실패
- grpc-encoding의 압축 해제기가 설치되지 않음
- 알 수 없는 기관에 의해 서명된 인증서
- 작업 부하에 취약성 스캔 수행 실패: jobs.batch가 이미 존재함
- 설치 중 구문 분석 오류
- 대시보드 for Kubernetes에서
GitLab Agent Server: Unauthorized
오류 - 에이전트 버전 불일치
Kubernetes용 GitLab 에이전트 문제 해결
GitLab 에이전트를 Kubernetes에서 사용하는 경우 문제를 해결해야 할 수 있습니다.
서비스 로그를 보면서 시작할 수 있습니다.
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
와 에이전트 pod 간의 연결 문제가 발생할 때 발생합니다. 이 문제를 해결하려면 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
또는 ws
URL이 슬래시로 끝나는지 확인하십시오. 예를 들어 wss://GitLab.host.tld:443/-/kubernetes-agent/
또는 ws://GitLab.host.tld:80/-/kubernetes-agent/
와 같이 말입니다.
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\\\"\""
}
이 오류는 kas-address
를 에이전트 측에서 wss
로 구성했지만 에이전트 서버가 wss
에서 사용할 수 없는 경우에 발생합니다. 이 문제를 해결하려면 양쪽 모두에 동일한 스키마가 구성되어 있는지 확인하십시오.
grpc-encoding의 압축 해제기가 설치되지 않음
{
"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 인스턴스가 에이전트에 알려지지 않은 내부 인증 기관에서 서명한 인증서를 사용할 때 발생합니다. 이 문제를 해결하려면 에이전트에 CA 인증서 파일을 제출할 수 있습니다. Helm 설치를 사용자 정의하여 --set-file config.caCert=my-custom-ca.pem
을 helm install
명령에 추가하십시오. 파일은 유효한 PEM 또는 DER로 인코딩된 인증서여야 합니다.
agentk
를 config.caCert
값을 사용하여 배포하면 인증서가 configmap
에 추가되고 인증서 파일이 /etc/ssl/certs
에 마운트됩니다.
$ kubectl get configmap -lapp=gitlab-agent -o yaml
apiVersion: v1
items:
- apiVersion: v1
data:
ca.crt: |-
-----BEGIN CERTIFICATE-----
MIIFmzCCA4OgAwIBAgIUE+FvXfDpJ869UgJitjRX7HHT84cwDQYJKoZIhvcNAQEL
...인증서 일부 생략...
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
작업 부하에 취약성 스캔 수행 실패: 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
이러한 작업의 정리를 보다 견고하게 만드는 작업 중입니다.
설치 중 구문 분석 오류
에이전트를 설치하는 동안 다음과 같은 오류가 발생할 수 있습니다.
Error: parse error at (gitlab-agent/templates/observability-secret.yaml:1): unclosed action
일반적으로 이 오류는 호환되지 않는 버전의 Helm으로 인해 발생합니다. 문제를 해결하려면 Kubernetes 버전과 호환되는 Helm 버전을 사용하는지 확인하십시오.
대시보드 for Kubernetes에서 GitLab Agent Server: Unauthorized
오류
대시보드 for Kubernetes 페이지에서 GitLab Agent Server: Unauthorized. Trace ID: <...>
와 같은 오류가 발생하는 경우 다음 중 하나가 원인일 수 있습니다:
- 에이전트 구성 파일의
user_access
항목이 존재하지 않거나 올바르지 않습니다. 문제를 해결하려면 사용자에게 Kubernetes 액세스 부여를 참조하십시오. -
브라우저에 여러
_gitlab_kas
쿠키가 있고 KAS로 전송되었습니다. 가장 가능성 있는 원인은 동일 사이트에서 호스팅된 여러 GitLab 인스턴스입니다.예를 들어
gitlab.com
이kas.gitlab.com
을 대상으로 하는_gitlab_kas
쿠키를 설정했지만 해당 쿠키가staging.gitlab.com
으로 전송되어staging.gitlab.com
에서 오류가 발생하는 것입니다.임시로 해결하려면 브라우저의 쿠키 리포지터리에서
gitlab.com
의_gitlab_kas
쿠키를 삭제하십시오. 와 관련된 이슈 418998에서 이러한 알려진 문제에 대한 수정 사항을 제안합니다. - GitLab과 KAS가 다른 사이트에서 실행 중입니다. 예를 들어
gitlab.example.com
에 GitLab이 있고kas.example.com
에 KAS가 있는 경우입니다. GitLab은 이러한 사용 사례를 지원하지 않습니다. 자세한 내용은 이슈 416436를 참조하십시오.
에이전트 버전 불일치
GitLab에서 Kubernetes 클러스터 페이지의 에이전트 탭에서 클러스터의 pod 간에 에이전트 버전 불일치: 클러스터의 각 pod 간에 에이전트 버전이 일치하지 않습니다.
라는 경고가 표시될 수 있습니다.
이 경고는 에이전트 서버인 Kubernetes (kas
)에서 이전 버전의 에이전트가 캐시되어 있기 때문일 수 있습니다. kas
는 정기적으로 오래된 에이전트 버전을 삭제하므로 에이전트와 GitLab이 조화를 이루기 위해 최소 20분을 기다려야 합니다.
경고가 계속되면 클러스터에 설치된 에이전트를 업데이트하십시오.