자체 호스팅 모델 문제 해결
GitLab v19.5Offering: GitLab Self-Managed, GitLab Dedicated for Government
요약
문제 해결을 시작하기 전에 다음을 준비해야 합니다. GitLab Duo 문제 해결에 대한 자세한 내용은 다음을 참고합니다. 관리자가 자체 호스팅 모델 구성을 검증할 수 있도록 두 가지 디버깅 스크립트를 제공합니다. GitLab과 AI Gateway 사이의 연결을 디버그합니다.
히스토리
- GitLab 17.1에서
ai_custom_model이라는 기능 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다. - GitLab 17.6에서 GitLab Self-Managed에서 활성화되었습니다.
- GitLab 17.6 이상에서 GitLab Duo 애드온이 필요하도록 변경되었습니다.
- GitLab 17.8에서 기능 플래그
ai_custom_model이 제거되었습니다. - GitLab 17.9에서 일반 제공됩니다.
- GitLab 18.0에서 Premium을 포함하도록 변경되었습니다.
- GitLab 18.5에서 GitLab Dedicated for Government에서 활성화되었습니다.
문제 해결을 시작하기 전에 다음을 준비해야 합니다.
gitlab-rails콘솔에 접근할 수 있어야 합니다.- AI Gateway Docker 이미지에서 셸을 엽니다.
- 다음 항목이 호스팅된 엔드포인트를 알고 있어야 합니다.
- AI Gateway가 호스팅된 엔드포인트
- 모델이 호스팅된 엔드포인트
- GitLab에서 AI Gateway로 오가는 요청과 응답이
llm.log에 기록되도록 로깅을 활성화합니다.
GitLab Duo 문제 해결에 대한 자세한 내용은 다음을 참고합니다.
디버깅 스크립트 사용#
관리자가 자체 호스팅 모델 구성을 검증할 수 있도록 두 가지 디버깅 스크립트를 제공합니다.
-
GitLab과 AI Gateway 사이의 연결을 디버그합니다. GitLab 인스턴스에서 Rake 태스크를 실행합니다.
gitlab-rake "gitlab:duo:verify_self_hosted_setup[<username>]"선택 사항: 할당된 시트가 있는
<username>을 포함합니다. username 파라미터를 포함하지 않으면 Rake 태스크는 root 사용자를 사용합니다. -
AI Gateway 설정을 디버그합니다. AI Gateway 컨테이너에서 다음을 수행합니다.
-
다음을 설정하여 인증을 비활성화한 상태로 AI Gateway 컨테이너를 재시작합니다.
-e AIGW_AUTH__BYPASS_EXTERNAL=true문제 해결 명령이 System Exchange test를 실행하려면 이 설정이 필요합니다. 문제 해결을 마친 뒤에는 이 설정을 제거해야 합니다.
-
AI Gateway 컨테이너에서 다음을 실행합니다.
docker exec -it <ai-gateway-container> sh poetry run troubleshoot [options]troubleshoot명령은 다음 옵션을 지원합니다.Option Default Example Description --endpointlocalhost:5052--endpoint=localhost:5052AI Gateway 엔드포인트 --duo-workflow-endpointlocalhost:50052--duo-workflow-endpoint=localhost:50052GitLab Duo Workflow Service(GitLab Duo Agent Platform) gRPC 엔드포인트 --model-family- --model-family=mistral테스트할 모델 패밀리. 사용할 수 있는 값은 mistral,mixtral,gpt,llama3입니다.--model-endpointhttp://localhost:4000--model-endpoint=http://localhost:4000/v1모델 엔드포인트. vLLM에서 호스팅되는 모델은 /v1접미사를 추가합니다.--model-identifier- --model-identifier=custom_openai/Mixtral-8x7B-Instruct-v0.1모델 식별자. --api-key- --api-key=your-api-key모델 API 키. 예시:
Amazon Bedrock Mantle에서 실행되는
gpt모델의 경우:poetry run troubleshoot \ --model-family=gpt \ --model-identifier=bedrock_mantle/openai.gpt-oss-120b \ --model-endpoint=https://bedrock-mantle.<region>.api.aws/v1 \ --api-key=your-api-keyvLLM에서 실행되는
mixtral모델의 경우:poetry run troubleshoot \ --model-family=mixtral \ --model-identifier=custom_openai/Mixtral-8x7B-Instruct-v0.1 \ --api-key=your-api-key \ --model-endpoint=http://<your-model-endpoint>/v1모델 액세스 확인은 사용자가 제공한 모델 정보와 함께 AI Gateway
/v4/code/suggestions엔드포인트로 코드 생성 요청을 보냅니다.
-
문제 해결을 마친 뒤에는 AIGW_AUTH__BYPASS_EXTERNAL=true 없이 AI Gateway 컨테이너를 중지하고 다시 시작합니다.
프로덕션에서는 인증을 우회해서는 안 됩니다.
명령의 출력을 확인하고 그에 맞게 수정합니다.
두 명령이 모두 성공했지만 GitLab Duo Code Suggestions가 여전히 동작하지 않으면, 이슈 트래커에 이슈를 등록합니다.
GitLab Duo 상태 확인이 동작하지 않음#
GitLab Duo 상태 확인을 실행할 때 401 response from the AI Gateway 같은 오류가 발생할 수 있습니다.
이를 해결하려면 먼저 GitLab Duo 기능이 올바르게 동작하는지 확인합니다. 예를 들어 GitLab Duo Chat에 메시지를 보냅니다.
이 방법으로 해결되지 않으면 GitLab Duo 상태 확인의 알려진 문제 때문일 수 있습니다. 자세한 내용은 이슈 517097을 참고합니다.
GitLab이 모델에 요청할 수 있는지 확인#
GitLab Rails 콘솔에서 다음을 실행하여 GitLab이 자체 호스팅 모델에 연결할 수 있는지 확인합니다.
self_hosted_model = Ai::SelfHostedModel.find_by(name: "<your_model_name>")
user = User.find_by_id(1)
Gitlab::Llm::AiGateway::SelfHostedModels::ConnectionTester.new(user, self_hosted_model).execute
GitLab이 모델에 도달할 수 있으면 명령은 nil을 반환합니다. 그렇지 않으면 오류를
설명하는 문자열을 반환합니다.
그렇지 않은 경우 다음 중 하나를 의미할 수 있습니다.
- GitLab 환경 변수가 올바르게 구성되지 않았습니다. 이를 해결하려면 GitLab 환경 변수가 올바르게 설정되어 있는지 확인합니다.
- AI Gateway에 도달할 수 없습니다. 이를 해결하려면 GitLab이 AI Gateway에 HTTP 요청을 할 수 있는지 확인합니다.
- LLM 서버가 AI Gateway 컨테이너와 같은 인스턴스에 설치된 경우 로컬 요청이 동작하지 않을 수 있습니다. 이를 해결하려면 Docker 컨테이너에서 오는 로컬 요청을 허용합니다.
사용자가 Code Suggestions를 요청할 수 있는지 확인#
GitLab Rails 콘솔에서 다음을 실행하여 사용자가 Code Suggestions를 요청할 수 있는지 확인합니다.
User.find_by_id("<user_id>").can?(:access_code_suggestions)
이 명령이 false를 반환하면 일부 구성이 빠져 있어 사용자가
Code Suggestions에 접근할 수 없다는 뜻입니다.
빠진 구성의 원인은 다음 중 하나일 수 있습니다.
- 라이선스가 유효하지 않습니다. 이를 해결하려면 라이선스를 확인하거나 업데이트합니다.
- GitLab Duo가 자체 호스팅 모델을 사용하도록 구성되지 않았습니다. 이를 해결하려면 GitLab 인스턴스가 자체 호스팅 모델을 사용하도록 구성되어 있는지 확인합니다.
GitLab 인스턴스가 자체 호스팅 모델을 사용하도록 구성되어 있는지 확인#
사전 요구 사항:
- 관리자 접근 권한.
GitLab Duo가 올바르게 구성되었는지 확인하려면 다음을 수행합니다.
- 오른쪽 상단에서 Admin을 선택합니다.
- 왼쪽 사이드바에서 Self-hosted models를 선택합니다
- AI-native features를 확장합니다.
- Features에서 Code Suggestions와 Code generation 이 Self-hosted model로 설정되어 있는지 확인합니다.
AI Gateway URL이 올바르게 설정되어 있는지 확인#
AI Gateway URL이 올바른지 확인하려면 GitLab Rails 콘솔에서 다음을 실행합니다.
ApplicationSetting.current.ai_gateway_url == "<your-ai-gateway-instance-url>"
AI Gateway가 설정되지 않았다면 GitLab 인스턴스가 AI Gateway에 접근할 수 있도록 구성합니다.
GitLab Duo Agent Platform 서비스 URL 유효성 검사#
Agent Platform 서비스의 URL이 올바른지 확인하려면 GitLab Rails 콘솔에서 다음을 실행합니다.
ApplicationSetting.current.duo_agent_platform_service_url == "<your-duo-agent-platform-instance-url>"
Agent Platform 서비스의 URL은 TCP URL이며 http:// 또는 https:// 접두사를 붙일 수 없습니다.
Agent Platform의 URL이 설정되지 않았다면 GitLab 인스턴스가 해당 URL에 접근할 수 있도록 구성해야 합니다.
GitLab이 AI Gateway에 HTTP 요청을 할 수 있는지 확인#
GitLab Rails 콘솔에서 다음을 실행하여 GitLab이 AI Gateway에 HTTP 요청을 할 수 있는지 확인합니다.
HTTParty.get('<your-aigateway-endpoint>/monitoring/healthz', headers: { 'accept' => 'application/json' }).code
응답이 200이 아니면 다음 중 하나를 의미합니다.
- GitLab이 AI Gateway 컨테이너에 도달할 수 있도록 네트워크가 올바르게 구성되지 않았습니다. 네트워크 관리자에게 연락해 설정을 확인합니다.
- AI Gateway가 요청을 처리할 수 없습니다. 이 문제를 해결하려면 AI Gateway가 모델에 요청할 수 있는지 확인합니다.
AI Gateway가 모델에 요청할 수 있는지 확인#
자체 호스팅 모델 연결을 확인하려면 AI Gateway 컨테이너에서 AI Gateway API에 HTTP 요청을 보냅니다. 다음 값을 교체합니다.
<your_model_name>: 사용 중인 모델의 모델 패밀리로 교체합니다. 예를 들어mistral또는codegemma입니다.<your_model_identifier>: 모델 배포의 식별자로 교체합니다. 예를 들어custom_openai/mistral:instruct입니다.<your_model_endpoint>: 모델이 호스팅된 엔드포인트로 교체합니다.
docker exec -it <ai-gateway-container> sh
curl --request POST "http://localhost:5052/v1/prompts/model_configuration%2Fcheck" \
--header 'accept: application/json' \
--header 'Content-Type: application/json' \
--data '{ "stream": false, "inputs": {}, "model_metadata": { "name": "<your_model_name>", "identifier": "<your_model_identifier>", "endpoint": "<your_model_endpoint>", "provider": "openai" } }'
요청이 실패하면 다음이 원인일 수 있습니다.
- AI Gateway가 자체 호스팅 모델을 사용하도록 올바르게 구성되지 않았을 수 있습니다. 이를 해결하려면 AI Gateway 환경 변수가 올바르게 설정되어 있는지 확인합니다.
- AI Gateway가 모델에 접근할 수 없을 수 있습니다. 이를 해결하려면 AI Gateway에서 모델에 도달할 수 있는지 확인합니다.
- 모델 엔드포인트가 올바르지 않을 수 있습니다. 값을 확인하고 필요하면 수정합니다.
AI Gateway가 요청을 처리할 수 있는지 확인#
docker exec -it <ai-gateway-container> sh
curl '<your-aigateway-endpoint>/monitoring/healthz'
응답이 200이 아니면 AI Gateway가 올바르게 설치되지 않았다는 뜻입니다. 이를 해결하려면 AI Gateway 설치 방법 문서를 따릅니다.
AI Gateway 환경 변수가 올바르게 설정되어 있는지 확인#
AI Gateway 환경 변수가 올바르게 설정되어 있는지 확인하려면 AI Gateway 컨테이너의 콘솔에서 다음을 실행합니다.
docker exec -it <ai-gateway-container> sh
echo $AIGW_CUSTOM_MODELS__ENABLED # must be true
환경 변수가 올바르게 설정되지 않았다면 컨테이너를 생성합니다.
AI Gateway에서 모델에 도달할 수 있는지 확인#
AI Gateway 컨테이너에서 셸을 생성하고 모델에 curl 요청을 보냅니다. AI Gateway가 그 요청을 보낼 수 없다면 다음이 원인일 수 있습니다.
- 모델 서버가 올바르게 동작하지 않습니다.
- 컨테이너 주변의 네트워크 설정이 모델이 호스팅된 곳으로 요청을 허용하도록 올바르게 구성되지 않았습니다.
이를 해결하려면 네트워크 관리자에게 연락합니다.
AI Gateway가 GitLab 인스턴스에 요청을 할 수 있는지 확인#
AIGW_GITLAB_URL에 정의된 GitLab 인스턴스는 요청 인증을 위해 AI Gateway 컨테이너에서 접근할 수 있어야 합니다.
인스턴스에 도달할 수 없으면(예를 들어 프록시 구성 오류 때문에) 요청이 다음과 같은 오류와 함께 실패할 수 있습니다.
-
jose.exceptions.JWTError: Signature verification failed -
gitlab_cloud_connector.providers.CompositeProvider.CriticalAuthError: No keys founds in JWKS; are OIDC providers up?
이 경우 AIGW_GITLAB_URL과 $AIGW_GITLAB_API_URL이 컨테이너에 올바르게 설정되어 있고 접근할 수 있는지 확인합니다.
컨테이너에서 실행할 때 다음 명령이 성공해야 합니다.
poetry run troubleshoot
curl "$AIGW_GITLAB_API_URL/projects"
성공하지 않으면 네트워크 구성을 확인합니다.
이미지의 플랫폼이 호스트와 일치하지 않음#
AI Gateway 이미지를 사용할 때
The requested image's platform (linux/amd64) does not match the detected host 오류가 발생할 수 있습니다.
이 오류를 우회하려면 docker run 명령에 --platform linux/amd64를 추가합니다.
docker run --platform linux/amd64 -e AIGW_GITLAB_URL=<your-gitlab-endpoint> <image>
AI Gateway 컨테이너 내부에서 LLM 서버를 사용할 수 없음#
LLM 서버가 AI Gateway 컨테이너와 같은 인스턴스에 설치되어 있으면 로컬 호스트를 통해 접근할 수 없을 수 있습니다.
이를 해결하려면 다음을 수행합니다.
- AI Gateway 컨테이너에서 오는 로컬 요청을 허용하려면
docker run명령에--network host를 포함합니다. - 포트 충돌을 해결하려면
-e AIGW_FASTAPI__METRICS_PORT=8083플래그를 사용합니다.
docker run --network host -e AIGW_GITLAB_URL=<your-gitlab-endpoint> -e AIGW_FASTAPI__METRICS_PORT=8083 <image>
vLLM 404 오류#
vLLM을 사용하는 중에 404 오류가 발생하면 다음 단계에 따라 문제를 해결합니다.
-
다음 내용으로
chat_template.jinja라는 채팅 템플릿 파일을 생성합니다.{{- "[INST] " + message["content"] + "[/INST]" }} {{- message["content"] }} {{- bos_token }}{{- message["content"] }} -
vLLM 명령을 실행할 때
--served-model-name을 반드시 지정합니다. 예시는 다음과 같습니다.vllm serve "mistralai/Mistral-7B-Instruct-v0.3" --port <port> --max-model-len 17776 --served-model-name mistral --chat-template chat_template.jinja -
GitLab UI에서 vLLM 서버 URL을 확인하여 해당 URL에
/v1접미사가 포함되어 있는지 확인합니다. 올바른 형식은 다음과 같습니다.http(s)://<your-host>:<your-port>/v1
Code Suggestions 접근 오류#
설정 후 Code Suggestions 접근에 문제가 있으면 다음 단계를 시도합니다.
-
Rails 콘솔에서 라이선스 파라미터를 확인하고 검증합니다.
sudo gitlab-rails console user = User.find(id) # Replace id with the user provisioned with GitLab Duo Enterprise seat Ability.allowed?(user, :access_code_suggestions) # Must return true -
필요한 기능이 활성화되어 사용 가능한지 확인합니다.
::Ai::FeatureSetting.exists?(feature: [:code_generations, :code_completions], provider: :self_hosted) # Should be true
오류 A1000#
자체 호스팅 모델로 GitLab Duo 기능을 사용할 때 다음 오류가 발생할 수 있습니다.
I'm sorry, I couldn't respond in time. Please try again. Error code: A1000
이 문제는 모델에 대한 요청이 구성된 시간 초과 기간보다 오래 걸릴 때 발생합니다.
일반적인 원인은 다음과 같습니다.
- 큰 컨텍스트 창 또는 복잡한 프롬프트
- 모델 성능 제한
- AI Gateway와 모델 엔드포인트 간의 네트워크 지연
- 리전 간 추론 지연(AWS Bedrock 배포의 경우)
시간 초과 오류를 해결하려면 다음을 수행합니다.
- 더 높은 AI Gateway 시간 초과 값을 구성합니다. 시간 초과는 60초에서 600초(10분) 사이로 설정할 수 있습니다.
- GitLab Duo Chat의 경우 요청이 여전히 시간 초과되면 AI Gateway에서 Chat 모델 요청 시간 초과를 늘립니다.
- 시간 초과를 조정한 뒤 로그를 모니터링하여 오류가 해결되었는지 확인합니다.
- 더 높은 시간 초과 값으로도 시간 초과 오류가 계속되면 다음을 수행합니다.
- 모델의 성능과 리소스 할당을 확인합니다.
- AI Gateway와 모델 엔드포인트 간의 네트워크 연결을 확인합니다.
- 성능이 더 좋은 모델 또는 배포 구성을 사용하는 방안을 검토합니다.
A1000으로 실패하는 대신 응답이 오류 없이 중간에 끊기면
응답이 오류 없이 잘림을 참고합니다.
응답이 오류 없이 잘림#
특히 대규모 모델이나 추론 모델의 긴 응답은 오류 메시지 없이 중간에 멈출 수 있습니다. 모델이 완료되기 전에 스트림이 끝나므로, 부분 응답이 완전한 것처럼 보일 수 있습니다.
이 문제는 구성 요소 사이의 프록시, 로드 밸런서, 방화벽이 모델이 응답을 마치기 전에
연결을 종료할 때 발생합니다. GitLab이 끊긴 스트림을 감지하면, 대기 중 시간이
초과된 경우에는 Error A1000을, 스트림 자체가 실패한 경우에는
Error A1003을 반환합니다.
각 홉의 시간 초과를 확인하고 오류가 표시되는지 살펴봅니다. 이 문제를 해결하려면 다음을 수행합니다.
- AI Gateway의 경우 GitLab이 게이트웨이를 충분히 오래 기다리도록 더 높은 시간 초과 값을 구성합니다.
- GitLab Duo Chat의 경우 AI Gateway가 모델을 충분히 오래 기다리도록 Chat 모델 요청 시간 초과를 늘립니다.
- AI Gateway 앞단의 리버스 프록시나 로드 밸런서를 확인합니다.
NGINX 리버스 프록시를 사용한다면,
응답 청크 사이의 가장 긴 멈춤을 포괄하도록
proxy_read_timeout을 높이고proxy_buffering off를 유지합니다. - AI Gateway와 모델 서빙 플랫폼 사이의 프록시나 로드 밸런서에서도 비슷한 요청 시간 초과나 유휴 시간 초과가 있는지 확인합니다.
- GitLab Duo Agentic Chat의 경우 GitLab 앞단의 리버스 프록시에서 길게 스트리밍되는 답변을 끊을 수 있는 WebSocket 유휴 또는 읽기 시간 초과를 확인합니다. 자세한 내용은 Agentic Chat 응답이 UI에 표시되지 않음을 참고합니다.
GitLab 설정 확인#
GitLab Self-Managed 설정을 검증하려면 다음 명령을 실행합니다.
gitlab-rake gitlab:duo:verify_self_hosted_setup
AI Gateway 서버에서 로그가 생성되지 않음#
AI Gateway 서버에서 로그가 생성되지 않으면 다음 단계에 따라 문제를 해결합니다.
-
AI 로그가 활성화되어 있는지 확인합니다.
-
다음 명령을 실행하여 GitLab Rails 로그에서 오류를 확인합니다.
sudo gitlab-ctl tail sudo gitlab-ctl tail sidekiq -
로그에서 "Error" 또는 "Exception" 같은 키워드를 찾아 근본 문제를 파악합니다.
AI Gateway 컨테이너에서 SSL 인증서 오류 및 키 역직렬화 문제#
AI Gateway 컨테이너 내부에서 GitLab Duo Chat을 시작하려고 할 때 SSL 인증서 오류와 키 역직렬화 문제가 발생할 수 있습니다.
시스템이 PEM 파일을 로드하는 데 문제가 생겨 다음과 같은 오류가 발생할 수 있습니다.
JWKError: Could not deserialize key data. The data may be in an incorrect format, the provided password may be incorrect, or it may be encrypted with an unsupported algorithm.
SSL 인증서 오류를 해결하려면 다음을 수행합니다.
- 다음 환경 변수를 사용하여 Docker 컨테이너에 적절한 인증서 번들 경로를 설정합니다.
SSL_CERT_FILE=/path/to/ca-bundle.pemREQUESTS_CA_BUNDLE=/path/to/ca-bundle.pem
오류: meta 모델 ID 호출이 지원되지 않음#
모델 식별자의 형식이 올바르지 않으면 AIGW 로그에 다음 오류가 표시됩니다.
Invocation of model ID meta.llama3-3-70b-instruct-v1:0 with on-demand throughput isn\u2019t supported. Retry your request with the ID or ARN of an inference profile that contains this model
model identifier가 bedrock/<region>.<model-id> 형식인지 확인합니다. 각 항목은 다음과 같습니다.
<region>은 AWS 리전입니다(예:us)<model-id>는 전체 모델 식별자입니다.
예를 들어 bedrock/us.meta.llama3-3-70b-instruct-v1:0입니다. 올바른 형식을 사용하도록 모델 구성을 업데이트합니다.
Azure OpenAI 배포가 Chat Completions API 요청을 거부함#
일부 Azure OpenAI 배포는 Responses API를 통해서만 사용할 수 있습니다.
모델 식별자가 azure/<deployment name> 형식이면 AI Gateway가 Chat Completions API로
요청을 보냅니다. 이러한 배포는 해당 요청을 거부합니다.
이 문제를 해결하려면 모델 식별자를 azure/responses/<deployment name> 형식으로 변경합니다.
자세한 내용은 Responses API 사용을 참고합니다.
기능에 접근할 수 없거나 기능 버튼이 표시되지 않음#
기능이 동작하지 않거나 기능 버튼(예: /troubleshoot)이 표시되지 않으면 다음을 수행합니다.
-
해당 기능의
unit_primitive가gitlab-cloud-connectorgem 구성의 자체 호스팅 모델 unit primitive 목록에 있는지 확인합니다.이 파일에 해당 기능이 없다면 그것이 접근할 수 없는 이유일 수 있습니다.
-
선택 사항. 해당 기능이 목록에 없다면 GitLab 인스턴스에서 다음을 설정하여 이것이 문제의 원인인지 확인할 수 있습니다.
CLOUD_CONNECTOR_SELF_SIGN_TOKENS=1그다음 GitLab을 재시작하고 해당 기능에 접근할 수 있게 되는지 확인합니다.
[!warning] 프로덕션에서는
CLOUD_CONNECTOR_SELF_SIGN_TOKENS=1을 사용하지 않습니다. 문제 해결을 마친 뒤에는 이 플래그를 설정하지 않은 상태로 GitLab을 재시작합니다. 개발 환경은 숨은 플래그나 내부 전용 우회 방법 없이 프로덕션과 최대한 비슷해야 합니다. -
이 문제를 해결하려면 다음을 수행합니다.
- GitLab 팀 멤버라면
#g_custom_modelsSlack 채널을 통해 Custom Models 팀에 문의합니다. - 고객이라면 GitLab Support를 통해 문제를 신고합니다.
- GitLab 팀 멤버라면
오류: 이 워크플로의 인증 토큰을 가져오는 중 오류가 발생했습니다#
이 오류는 GitLab이나 로컬 환경에서 agentic Chat을 사용하려고 할 때 발생할 수 있습니다.
IDE의 GitLab Language Server 로그에서 다음을 볼 수도 있습니다.
2026-01-09T20:17:43:419 [error]: [WorkflowRailsService] Failed to fetch the workflow token
Error: Fetching direct_access from https://gitlab.example.com/api/v4/ai/duo_workflows/direct_access failed.
{"message":"400 Bad request - 14:failed to connect to all addresses; last error: UNKNOWN: ipv4:172.x.x.x:50052: Ssl handshake failed (TSI_PROTOCOL_FAILURE): SSL_ERROR_SSL: error:100000f7:SSL routines:OPENSSL_internal:WRONG_VERSION_NUMBER: Invalid certificate verification context. debug_error_string:{UNKNOWN:Error received from peer {grpc_status:14, grpc_message:\"failed to connect to all addresses; last error: UNKNOWN: ipv4:172.x.x.x:50052: Ssl handshake failed (TSI_PROTOCOL_FAILURE): SSL_ERROR_SSL: error:100000f7:SSL routines:OPENSSL_internal:WRONG_VERSION_NUMBER: Invalid certificate verification context\"}}"}
2026-01-09T20:17:43:433 [error]: Max retries exceeded or non-retryable error: An error occurred while fetching an authentication token for this workflow.
2026-01-09T20:17:43:435 [error]: Workflow failed with status code "50": An error occurred while fetching an authentication token for this workflow.
이는 인증서 문제 때문에 language server가 JWT 토큰을 생성하기 위해 direct_access
엔드포인트와 통신할 수 없었다는 뜻입니다.
자체 호스팅 모델을 Agent Platform에 연결할 때 TLS를 사용하지 않는다면, 이 문제를 해결하기 위해 GitLab Duo Agent Platform 서비스에 대한 TLS 연결을 해제합니다.
Agentic Chat 응답이 UI에 표시되지 않음#
Chat 응답에는 브라우저와 GitLab 사이의 지속적인 WebSocket 연결이 필요합니다. 리버스 프록시가 WebSocket 업그레이드를 지원하지 않으면 응답은 정상적으로 생성되지만 GitLab UI의 채팅에는 나타나지 않습니다.
증상#
llm.log에 오류 없이chunk_received,streaming_finished,final_answer_received가 표시됩니다.- AI Gateway 로그에 모델 응답이 성공한 것으로 표시됩니다.
- GitLab Duo Chat UI는 요청을 처리하는 것처럼 보이지만 응답을 표시하지 않습니다.
이 문제를 해결하려면 리버스 프록시가 인바운드 연결 요구 사항을 충족하도록 구성되어 있는지 확인합니다.