GitLab을 Helm Chart로 구축 + 브라우저에서 GitLab 접근 시 80 포트가 아닌 다른 포트로 접근해야 할 경우 발생하는 이슈 GitLab Helm Chart의 포트 설정이 80/443으로 고정되어 있기 때문에 발생
환경
- 자체 관리형 kubernetes이기에 외부용 L7 로드밸런서로 haproxy를 사용 중인 경우
- helm chart로 GitLab 서버를 구축한 경우
- 외부에서 브라우저로 GitLab UI 접근 시 80포트가 아닌 8080과 같은 별도의 포트로만 접근해야하는 제약사항이 있는 경우
문제 상황
- helm chart로 GitLab 서버 구축 후 <도메인>:<포트>로 접근 시 포트가 제거된 후 도메인으로만 강제 리다이렉션 되는 현상 발생
- 404 에러
- 브라우저 → HAProxy(8080) → GitLab(80) → 리다이렉트 응답
해결 방법
HAproxy 설정을 통해 포트를 포함해서 리다이렉트 하도록 설정
http-response replace-value Location ^http://gitlab\.<도메인>/(.*)$ http://gitlab.<도메인>:8080/\\1- 정규식 분석:
- ^http://gitlab.<도메인>/(.*)$ - 매칭 패턴
- http://gitlab.<도메인>:8080/\1 - 치환 결과
- \1 = 첫 번째 그룹 (.*) 내용 (URL 경로)
- 변환 예시:
- 원본: Location: http://gitlab.<도메인>/users/sign_in
- 변환: Location: http://gitlab.<도메인>/users/sign_in
- 외부 브라우저에서 GitLab 접근 시 포트를 붙여서 접근해야 될 경우 반드시 설정
- 설정하지 않으면 접근 시 자동으로 포트가 제거된 상태로 리다이렉션되어 404 에러
1 2 3 4 5 6 7 8 9 10 11 12 13frontend unified_frontend_8080 bind *:8080 mode http option forwardfor # Host 기반 라우팅 ... use_backend metallb_backend_gitlab if { hdr(host) -i gitlab.<도메인> } ... backend metallb_backend_gitlab http-response replace-value Location ^http://gitlab\.<도메인>/(.*)$ http://gitlab.<도메인>:8080/\\1 server gitlab 172.27.1.102:80- 정규식 분석:
결과
- 브라우저가 8080포트를 포함해서 리다이렉트
- HAProxy를 통한 접속 유지