GitLab Pages 차트 사용
gitlab-pages
서브차트는 GitLab 프로젝트에서 정적 웹사이트를 제공하는 데몬을 제공합니다.
요구 사항
이 차트는 완전한 GitLab 차트의 일부로 제공되거나 Kubernetes 클러스터에서 배포된 이 차트에서 도달 가능한 외부 서비스로 일하는 Workhorse 서비스에 의존합니다.
설정
gitlab-pages
차트는 다음과 같이 구성됩니다:
Global settings 및 Chart 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/issuer 및 acme.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 접근을 위해 다음을 수행해야 합니다.
-
다음 형식으로 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>
이고 로드 밸런서를 가리키도록 하는 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.cpu 및 hpa.memory 에서 계산된 트리거 목록입니다.
|