GitLab Pages 차트 사용하기
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 Ingress 의 annotations 과 정확히 일치합니다. (Kubernetes Ingress 참조)
| |
configureCertmanager
| 부울 | false
| Ingress 주석 cert-manager.io/issuer 및 acme.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 액세스를 위해 다음을 수행해야 합니다:
-
GitLab Pages 도메인에 대한 전용 와일드카드 인증서를 다음 형식으로 생성합니다:
*.pages.<yourdomain>
. -
Kubernetes에서 시크릿을 생성합니다:
kubectl create secret tls tls-star-pages-<mysecret> --cert=<path/to/fullchain.pem> --key=<path/to/privkey.pem>
-
GitLab Pages가 이 시크릿을 사용하도록 구성합니다:
gitlab: gitlab-pages: ingress: tls: secretName: tls-star-pages-<mysecret>
-
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.cpu 및 hpa.memory 에서 계산된 트리거입니다
|