GitLab Pages 차트 사용하기

Tier: Free, Premium, Ultimate Offering: Self-Managed

gitlab-pages 서브차트는 GitLab 프로젝트에서 정적 웹사이트를 제공하는 데몬을 제공합니다.

요구 사항

이 차트는 완전한 GitLab 차트의 일부로서 또는 이 차트가 배포된 Kubernetes 클러스터에서 도달 가능한 외부 서비스로 제공된 Workhorse 서비스에 의존합니다.

구성

gitlab-pages 차트는 다음과 같이 구성됩니다: 전역 설정차트 설정.

전역 설정

우리는 차트 간에 일부 공통 전역 설정을 공유합니다. 자세한 내용은 Globals Documentation를 참조하십시오.

차트 설정

다음 두 섹션의 표에는 helm install 명령을 사용하여 제공할 수 있는 모든 가능한 차트 구성이 포함되어 있습니다.

일반 설정

매개변수 기본값 설명
annotations   Pod 주석
common.labels {} 이 차트에서 생성된 모든 객체에 적용되는 보조 레이블
deployment.strategy {} 배포에 의해 사용되는 업데이트 전략을 구성할 수 있도록 합니다. 제공되지 않으면 클러스터 기본값이 사용됩니다.
extraEnv   노출할 추가 환경 변수 디렉터리
extraEnvFrom   노출할 다른 데이터 소스에 있는 추가 환경 변수 디렉터리
hpa.behavior {scaleDown: {stabilizationWindowSeconds: 300 }} Behavior는 업- 및 다운스케일링 동작 사양이 포함됩니다 (autoscaling/v2beta2 또는 그 이상이 필요함)
hpa.customMetrics [] 사용할 지표를 계산하기 위한 사양이 포함됩니다 (targetAverageUtilization으로 구성된 기본 CPU 사용량을 대체함)
hpa.cpu.targetType AverageValue 오토스케일링 CPU 대상 유형을 설정합니다. Utilization 또는 AverageValue 중 하나여야 합니다.
hpa.cpu.targetAverageValue 100m 오토스케일링 CPU 대상 값 설정
… (중략) …    

페이지별 설정

매개변수 기본값 설명
artifactsServerTimeout 10 아티팩트 서버로의 프록시 요청 시 타임아웃(초)
artifactsServerUrl   아티팩트 요청을 프록시하는 API URL
extraVolumeMounts   추가 볼륨 마운트 디렉터리
extraVolumes   생성할 추가 볼륨 디렉터리
gitlabCache.cleanup int 참조: 페이지 전역 설정
gitlabCache.expiry int 참조: 페이지 전역 설정
gitlabCache.refresh int 참조: 페이지 전역 설정
gitlabClientHttpTimeout   GitLab API HTTP 클라이언트 연결 시간 초과(초)
gitlabClientJwtExpiry   JWT 토큰 만료 시간(초)
gitlabRetrieval.interval int 참조: 페이지 전역 설정
gitlabRetrieval.retries int 참조: 페이지 전역 설정
gitlabRetrieval.timeout int 참조: 페이지 전역 설정
gitlabServer   GitLab 서버 FQDN
headers [] 각 응답과 함께 전송되어야 하는 추가 HTTP 헤더 지정. 여러 헤더는 배열로 지정되어야 하며, header 및 value는 하나의 문자열로 지정되어야 함. 예: ['my-header: myvalue', 'my-other-header: my-other-value']
insecureCiphers false 3DES 및 RC4와 같은 보안 오용이 포함될 수 있는 기본 암호 디렉터리 사용 여부
internalGitlabServer   API 요청에 사용되는 내부 GitLab 서버
logFormat json 로그 출력 형식
logVerbose false 자세한 로깅
maxConnections   HTTP, HTTPS 또는 프록시 수신기에 대한 동시 연결 수 제한
maxURILength   URI 길이 제한, 무제한은 0
propagateCorrelationId   존재하는 Correlation-ID 재사용. 해당 헤더 X-Request-ID에서 새로운 요청 헤더로 대체시 사용
redirectHttp false HTTP에서 HTTPS로 페이지 리디렉션
sentry.enabled false Sentry 보고 활성화 여부
sentry.dsn   Sentry 충돌 보고를 전송하기 위한 주소
sentry.environment   Sentry 충돌 보고를 위한 환경
serverShutdowntimeout 30s GitLab Pages 서버 종료 타임아웃(초)
statusUri   상태 페이지의 URL 경로
tls.minVersion   최소 SSL/TLS 버전 지정
tls.maxVersion   최대 SSL/TLS 버전 지정
useHTTPProxy false GitLab Pages가 Reverse Proxy 뒤에 있는 경우 사용
useProxyV2 false HTTPS 요청을 PROXYv2 프로토콜을 활용하도록 강제함
zipCache.cleanup int 참조: Zip Serving 및 캐시 구성
zipCache.expiration int 참조: Zip Serving 및 캐시 구성
zipCache.refresh int 참조: Zip Serving 및 캐시 구성
zipOpenTimeout int 참조: Zip Serving 및 캐시 구성
zipHTTPClientTimeout int 참조: Zip Serving 및 캐시 구성

ingress 구성

이 섹션은 GitLab Pages Ingress를 제어합니다.

이름 유형 기본값 설명
apiVersion 문자열   apiVersion 필드에 사용할 값입니다.
annotations 문자열   이 필드는 표준 Kubernetes Ingressannotations과 정확히 일치합니다. (Kubernetes Ingress 참조)
configureCertmanager 부울 false Ingress 주석 cert-manager.io/issueracme.cert-manager.io/http01-edit-in-place를 토글합니다. cert-manager를 통한 GitLab Pages의 TLS 인증서 획득이 비활성화되므로, 와일드카드 인증서 획득에는 cert-manager 발행자와 함께 DNS01 solver가 필요하며, 이 차트에 의해 배포된 발행자는 HTTP01 solver만 제공합니다. 자세한 정보는 GitLab Pages의 TLS 요구 사항을 참조하십시오.
enabled 부울   해당 인그레스를 지원하는 서비스에 대한 Ingress 객체를 만들지 여부를 제어하는 설정입니다. 설정되지 않은 경우, global.ingress.enabled 설정이 사용됩니다.
tls.enabled 부울   false로 설정하면 Pages 서브차트의 TLS가 비활성화됩니다. 이것은 주로 Ingress Controller 앞에 TLS 종료를 사용할 수 없는 경우에 유용합니다.
tls.secretName 문자열   페이지 URL에 대한 유효한 인증서 및 키를 포함하는 Kubernetes TLS Secret의 이름입니다. 설정되지 않은 경우, global.ingress.tls.secretName이 대신 사용됩니다. 기본적으로 설정되지 않습니다.

차트 구성 예시

extraVolumes

extraVolumes를 사용하면 차트 전체에서 추가 볼륨을 구성할 수 있습니다.

아래는 extraVolumes의 사용 예시입니다:

extraVolumes: |
  - name: example-volume
    persistentVolumeClaim:
      claimName: example-pvc

extraVolumeMounts

extraVolumeMounts를 사용하면 차트 전체의 모든 컨테이너에 대해 추가 volumeMounts를 구성할 수 있습니다.

아래는 extraVolumeMounts의 사용 예시입니다:

extraVolumeMounts: |
  - name: example-volume
    mountPath: /etc/example

networkpolicy 구성

이 섹션은 NetworkPolicy를 제어합니다. 이 구성은 선택 사항이며, Pod의 Egress 및 Ingress를 특정 엔드포인트로 제한하는 데 사용됩니다.

이름 유형 기본값 설명
enabled 부울 false 해당 설정은 NetworkPolicy를 활성화합니다.
ingress.enabled 부울 false true로 설정하면 Ingress 네트워크 정책이 활성화됩니다. 이는 규칙이 지정되지 않은 경우 모든 Ingress 연결을 차단합니다.
ingress.rules 배열 [] Ingress 정책에 대한 규칙입니다. 세부 정보는 https://kubernetes.io/docs/concepts/services-networking/network-policies/#the-networkpolicy-resource 및 아래 예시를 참조하세요.
egress.enabled 부울 false true로 설정하면 Egress 네트워크 정책이 활성화됩니다. 이는 규칙이 지정되지 않은 경우 모든 egress 연결을 차단합니다.
egress.rules 배열 [] Egress 정책에 대한 규칙입니다. 세부 정보는 https://kubernetes.io/docs/concepts/services-networking/network-policies/#the-networkpolicy-resource 및 아래 예시를 참조하세요

네트워크 정책 예시

gitlab-pages 서비스는 포트 80 및 443으로의 Ingress 연결 및 다양한 기본 workhorse 포트 8181으로의 Egress 연결을 필요로 합니다. 이 예제는 다음과 같은 네트워크 정책을 추가합니다.

  • TCP 0.0.0.0/0에서의 모든 Ingress 요청은 포트 80 및 443이 허용됩니다.
  • UDP 10.0.0.0/8의 네트워크로의 모든 Egress 요청은 DNS 포트 53에 대해 허용됩니다.
  • TCP 10.0.0.0/8의 네트워크로의 모든 Egress 요청은 Workhorse를 위한 포트 8181에 대해 허용됩니다.

제공된 예제는 단순히 예시일 뿐이므로 완전하지 않을 수 있음에 유의하세요

networkpolicy:
  enabled: true
  ingress:
    enabled: true
    rules:
      - to:
        - ipBlock:
            cidr: 0.0.0.0/0
        ports:
          - port: 80
            protocol: TCP
          - port: 443
            protocol: TCP
  egress:
    enabled: true
    rules:
      - to:
        - ipBlock:
            cidr: 10.0.0.0/8
        ports:
          - port: 8181
            protocol: TCP
          - port: 53
            protocol: UDP

GitLab Pages의 TLS 액세스 구성

GitLab Pages 기능에 대한 TLS 액세스를 위해 다음을 수행해야 합니다:

  1. GitLab Pages 도메인에 대한 전용 와일드카드 인증서를 다음 형식으로 생성합니다:*.pages.<yourdomain>.

  2. Kubernetes에서 시크릿을 생성합니다:

    kubectl create secret tls tls-star-pages-<mysecret> --cert=<path/to/fullchain.pem> --key=<path/to/privkey.pem>
    
  3. GitLab Pages가 이 시크릿을 사용하도록 구성합니다:

    gitlab:
      gitlab-pages:
        ingress:
          tls:
            secretName: tls-star-pages-<mysecret>
    
  4. DNS 공급업체에 *.pages.<yourdomaindomain> 이름으로 GitLab Pages로의 로드 밸런서를 가리키는 DNS 항목을 생성합니다.

KEDA 구성

keda 섹션은 일반적인 HorizontalPodAutoscalers 대신 KEDA ScaledObjects의 설치를 활성화합니다. 이 구성은 선택 사항이며, 사용자 정의 또는 외부 메트릭을 기반으로 자동으로 스케일링하는 경우에 사용할 수 있습니다.

대부분의 설정은 해당하는 경우 hpa 섹션에서 설정된 값으로 기본값을 갖습니다.

다음이 모두 참인 경우, CPU 및 메모리 트리거가 자동으로 추가됩니다:

  • triggers가 설정되지 않은 경우.
  • 해당하는 request.cpu.request 또는 request.memory.request 설정도 0이 아닌 값으로 설정될 경우.

트리거가 설정되지 않은 경우, ScaledObject가 생성되지 않습니다.

해당 설정에 대한 자세한 내용은 KEDA 설명서를 참조하세요.

이름 유형 기본값 설명
enabled 부울 false HorizontalPodAutoscalers 대신 KEDA ScaledObjects를 사용합니다.
pollingInterval 정수 30 각 트리거를 확인하기 위한 간격
cooldownPeriod 정수 300 마지막 트리거가 활성으로 보고된 후, 리소스를 0으로 다시 축소하는데 기다리는 기간
minReplicaCount 정수   KEDA가 리소스를 축소할 때 최소한으로 축소될 수 있는 레플리카 수입니다. 기본값은 hpa.minReplicas로 설정됩니다.
maxReplicaCount 정수   KEDA가 리소스를 확장할 때 최대한으로 확장될 수 있는 레플리카 수입니다. 기본값은 hpa.maxReplicas로 설정됩니다.
fallback   KEDA 후행 구성, 자세한 내용은 문서를 참조하세요
hpaName 문자열   KEDA가 생성할 HPA 리소스의 이름으로 기본값은 keda-hpa-{scaled-object-name}입니다
restoreToOriginalReplicaCount 부울   ScaledObject가 삭제된 후 대상 리소스를 원래 레플리카 수로 축소해야 하는지 여부를 지정합니다
behavior   확장 및 축소 동작 사양으로 기본값은 hpa.behavior으로 설정됩니다
triggers 배열   대상 리소스의 스케일링을 활성화하기 위한 트리거 디렉터리으로 기본값은 hpa.cpuhpa.memory에서 계산된 트리거입니다