GitLab Pages 차트 사용

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

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

요구 사항

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

설정

gitlab-pages 차트는 다음과 같이 구성됩니다: Global settingsChart settings.

Global Settings

우리는 우리의 차트들 사이에서 일부 공통적인 전역 설정을 공유합니다. 자세한 내용은 Globals Documentation을 참조하십시오.

차트 설정

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

Parameter Default Description
annotations   Pod annotations
common.labels {} 이 차트에서 생성된 모든 개체에 적용되는 보충 라벨
deployment.strategy {} 배포에 의해 사용되는 업데이트 전략을 구성할 수 있습니다. 제공되지 않으면 클러스터 기본값이 사용됩니다.
extraEnv   노출할 추가 환경 변수 목록
extraEnvFrom   노출할 다른 데이터 원본에서 온 추가 환경 변수 목록

… (중략) …

tolerations [] Pod 할당을위한 참을 라벨합니다.

페이지별 특정 설정

매개변수 기본값 설명
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(Fully Qualified Domain Name)
headers [] 각 응답과 함께 클라이언트로 보내질 추가 HTTP 헤더 지정. 여러 헤더는 배열로 제공되며, 헤더와 값은 하나의 문자열로 지정됨. 예를 들어 ['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 and Cache Configuration
zipCache.expiration int 참조: Zip Serving and Cache Configuration
zipCache.refresh int 참조: Zip Serving and Cache Configuration
zipOpenTimeout int 참조: Zip Serving and Cache Configuration
zipHTTPClientTimeout int 참조: Zip Serving and Cache Configuration
rateLimitSourceIP   참조: GitLab Pages rate-limits. 제한을 활성화하려면 extraEnv=["FF_ENFORCE_IP_RATE_LIMITS=true"] 사용
rateLimitSourceIPBurst   참조: GitLab Pages rate-limits
rateLimitDomain   참조: GitLab Pages rate-limits. 제한을 활성화하려면 extraEnv=["FF_ENFORCE_DOMAIN_RATE_LIMITS=true"] 사용
rateLimitDomainBurst   참조: GitLab Pages rate-limits
rateLimitTLSSourceIP   참조: GitLab Pages rate-limits. 제한을 활성화하려면 extraEnv=["FF_ENFORCE_IP_TLS_RATE_LIMITS=true"] 사용
rateLimitTLSSourceIPBurst   참조: GitLab Pages rate-limits
rateLimitTLSDomain   참조: GitLab Pages rate-limits. 제한을 활성화하려면 extraEnv=["FF_ENFORCE_DOMAIN_TLS_RATE_LIMITS=true"] 사용
rateLimitTLSDomainBurst   참조: GitLab Pages rate-limits
serverReadTimeout 5s 참조: GitLab Pages 전역 설정
serverReadHeaderTimeout 1s 참조: GitLab Pages 전역 설정
serverWriteTimeout 5m 참조: GitLab Pages 전역 설정
serverKeepAlive 15s 참조: GitLab Pages 전역 설정
authTimeout 5s 참조: GitLab Pages 전역 설정
authCookieSessionTimeout 10m 참조: GitLab Pages 전역 설정

ingress 구성

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

Name Type Default Description
apiVersion String   apiVersion 필드에 사용할 값입니다.
annotations String   이 필드는 Kubernetes Ingress의 표준 annotations과 정확히 일치합니다.
configureCertmanager Boolean false Ingress 주석 cert-manager.io/issueracme.cert-manager.io/http01-edit-in-place를 토글합니다. cert-manager를 통한 GitLab Pages의 TLS 인증서 획득은 wildcard 인증서 획득이 cert-manager Issuer와 DNS01 solver가 필요하며, 이 차트에서 배포된 Issuer는 HTTP01 solver만 제공하므로 비활성화됩니다. 자세한 정보는 GitLab Pages의 TLS 요구 사항을 참조하십시오.
enabled Boolean   해당하는 서비스에 대한 Ingress 개체를 생성할지를 제어하는 설정입니다. 설정되지 않은 경우 global.ingress.enabled 설정을 사용합니다.
tls.enabled Boolean   false로 설정되면 Pages 하위 차트에 대한 TLS를 비활성화합니다. 이는 주로 Ingress Controller 앞에서 TLS 종료를 사용할 수 없는 경우에 유용합니다.
tls.secretName String   페이지 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를 특정 엔드포인트로 제한하는 데 사용됩니다.

Name Type Default Description
enabled Boolean false 해당 설정은 NetworkPolicy를 활성화합니다.
ingress.enabled Boolean false true로 설정되면 Ingress 네트워크 정책이 활성화됩니다. 이렇게 하면 규칙이 지정되지 않은 경우 모든 Ingress 연결이 차단됩니다.
ingress.rules Array [] Ingress 정책의 규칙에 대한 자세한 내용은 https://kubernetes.io/docs/concepts/services-networking/network-policies/#the-networkpolicy-resource 및 아래 예시를 참조하십시오
egress.enabled Boolean false true로 설정되면 Egress 네트워크 정책이 활성화됩니다. 이렇게 하면 규칙이 지정되지 않은 경우 모든 Egress 연결이 차단됩니다.
egress.rules Array [] Egress 정책의 규칙에 대한 자세한 내용은 https://kubernetes.io/docs/concepts/services-networking/network-policies/#the-networkpolicy-resource 및 아래 예시를 참조하십시오

네트워크 정책 예시

gitlab-pages 서비스는 포트 80 및 443으로의 Ingress 연결 및 various로의 Egress 연결을 필요로 합니다. 이 예제는 다음 네트워크 정책을 추가합니다.

  • 네트워크에서 TCP 0.0.0.0/0 포트 80 및 443으로의 모든 Ingress 요청을 허용
  • DNS에 대한 UDP 10.0.0.0/8 포트 53으로의 모든 Egress 요청을 허용
  • Workhorse에 대한 TCP 10.0.0.0/8 포트 8181로의 모든 Egress 요청을 허용

제공된 예제는 단순히 예시이며 완전하지 않을 수 있습니다

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>이고 로드 밸런서를 가리키도록 하는 DNS 항목을 생성하세요.

KEDA 구성

keda 섹션은 일반적인 HorizontalPodAutoscalers 대신에 KEDA ScaledObjects의 설치를 가능하게 합니다. 이 구성은 선택 사항이며 사용자 정의 또는 외부 메트릭에 기반한 오토스케일링이 필요할 때 사용할 수 있습니다.

대부분의 설정은 적용 가능한 경우 hpa 섹션에서 설정한 값으로 기본 설정됩니다.

다음이 참이면 CPU 및 메모리 트리거가 자동으로 추가되며 request.cpu.request 또는 request.memory.request 설정도 0이 아닌 값으로 설정됩니다. - 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에서 계산된 트리거 목록입니다.