GitLab Shell 차트 사용하기
gitlab-shell
서브 차트는 GitLab에 대한 Git SSH 액세스를 위해 구성된 SSH 서버를 제공합니다.
요구 사항
이 차트는 Kubernetes 클러스터에서 배포된 GitLab 차트의 일부이거나 외부 서비스로부터 접근 가능해야 하는 Workhorse 서비스에 의존합니다.
디자인 선택
SSH 복제본을 쉽게 지원하고 SSH 허가된 키에 대한 공유 저장소 사용을 피하기 위해, SSH AuthorizedKeysCommand를 사용하여 GitLab 허가된 키 엔드포인트에 대해 인증합니다. 따라서, 이러한 포드 내에서 AuthorizedKeys 파일을 유지하거나 업데이트하지 않습니다.
구성
gitlab-shell
차트는 두 부분으로 구성됩니다: external services 및 chart settings. Ingress를 통해 노출되는 포트는 global.shell.port
로 구성되며 기본값은 22
입니다. 서비스의 외부 포트도 global.shell.port
에 의해 제어됩니다.
설치 명령줄 옵션
매개변수 | 기본값 | 설명 |
---|---|---|
affinity |
{} |
포드 배치를 위한 Affinity 규칙 |
annotations |
포드 주석 | |
podLabels |
보조 포드 레이블. 선택자에 사용되지 않습니다. | |
common.labels |
이 차트에 의해 생성된 모든 객체에 적용되는 보조 레이블. | |
config.clientAliveInterval |
0 |
그렇지 않은 유휴 연결에서 keepalive 핑 사이의 간격; 기본값 0은 이 핑을 비활성화합니다. |
config.loginGraceTime |
60 |
사용자가 성공적으로 로그인하지 않을 경우 서버가 연결을 끊기까지의 시간. |
config.maxStartups.full |
100 |
SSHd 거부 확률은 선형으로 증가하며 인증되지 않은 연결 시도가 지정된 수에 도달하면 모든 인증되지 않은 연결 시도가 거부됩니다. |
config.maxStartups.rate |
30 |
인증되지 않은 연결이 너무 많을 경우 지정된 확률로 SSHd가 연결을 거부합니다 (선택 사항). |
config.maxStartups.start |
10 |
현재 인증되지 않은 연결 수가 지정된 수를 초과할 경우 SSHd가 일정 확률로 연결 시도를 거부합니다 (선택 사항). |
config.proxyProtocol |
false |
gitlab-sshd 데몬을 위한 PROXY 프로토콜 지원을 활성화합니다. |
config.proxyPolicy |
"use" |
PROXY 프로토콜 처리 정책을 지정합니다. 값은 use, require, ignore, reject 중 하나여야 합니다. |
config.proxyHeaderTimeout |
"500ms" |
gitlab-sshd 가 PROXY 프로토콜 헤더를 읽는 것을 포기하기 전 대기할 최대 기간. 반드시 단위를 포함해야 합니다: ms , s , 또는 m . |
config.ciphers |
[aes128-gcm@openssh.com, chacha20-poly1305@openssh.com, aes256-gcm@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr] |
허용되는 암호를 지정합니다. |
config.kexAlgorithms |
[curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1] |
사용 가능한 KEX(비밀 키 교환) 알고리즘을 지정합니다. |
config.macs |
[hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1] |
사용 가능한 MAC(메시지 인증 코드) 알고리즘을 지정합니다. |
config.publicKeyAlgorithms |
[] |
사용자 정의 공개 키 알고리즘 목록. 비어 있으면 기본 알고리즘을 사용합니다. |
config.gssapi.enabled |
false |
gitlab-sshd 데몬을 위한 GSS-API 지원을 활성화합니다. |
config.gssapi.keytab.secret |
gssapi-with-mic 인증 방법을 위한 키탭을 보유하고 있는 Kubernetes 비밀의 이름입니다. | |
config.gssapi.keytab.key |
keytab |
Kubernetes 비밀에서 키탭을 보유하는 키입니다. |
config.gssapi.krb5Config |
GitLab Shell 컨테이너 내의 /etc/krb5.conf 파일 내용입니다. |
|
config.gssapi.servicePrincipalName |
gitlab-sshd 데몬에서 사용할 Kerberos 서비스 이름입니다. |
|
config.lfs.pureSSHProtocol |
false |
LFS Pure SSH 프로토콜 지원을 활성화합니다. |
opensshd.supplemental_config |
sshd_config 에 추가되는 보조 구성입니다. man 페이지에 엄격하게 일치합니다. |
|
deployment.livenessProbe.initialDelaySeconds |
10 | liveness probe가 시작되기 전의 지연 시간입니다. |
deployment.livenessProbe.periodSeconds |
10 | liveness probe를 수행하는 빈도입니다. |
deployment.livenessProbe.timeoutSeconds |
3 | liveness probe가 타임아웃되는 경우입니다. |
deployment.livenessProbe.successThreshold |
1 | liveness probe가 실패한 후 성공적으로 간주되기 위한 최소 연속 성공 수입니다. |
deployment.livenessProbe.failureThreshold |
3 | liveness probe가 성공한 후 실패한 것으로 간주되기 위한 최소 연속 실패 수입니다. |
deployment.readinessProbe.initialDelaySeconds |
10 | readiness probe가 시작되기 전의 지연 시간입니다. |
deployment.readinessProbe.periodSeconds |
5 | readiness probe를 수행하는 빈도입니다. |
deployment.readinessProbe.timeoutSeconds |
3 | readiness probe가 타임아웃되는 경우입니다. |
deployment.readinessProbe.successThreshold |
1 | readiness probe가 실패한 후 성공적으로 간주되기 위한 최소 연속 성공 수입니다. |
deployment.readinessProbe.failureThreshold |
2 | readiness probe가 성공한 후 실패한 것으로 간주되기 위한 최소 연속 실패 수입니다. |
deployment.strategy |
{} |
배포에 의해 사용되는 업데이트 전략을 구성할 수 있게 해줍니다. |
deployment.terminationGracePeriodSeconds |
30 | Kubernetes가 포드가 강제로 종료되기를 기다리는 초 수입니다. |
enabled |
true |
셸 활성화 플래그입니다. |
extraContainers |
포함할 추가 컨테이너 목록입니다. | |
extraInitContainers |
포함할 추가 초기화 컨테이너 목록입니다. | |
extraVolumeMounts |
수행할 추가 볼륨 마운트 목록입니다. | |
extraVolumes |
생성할 추가 볼륨 목록입니다. | |
extraEnv |
노출할 추가 환경 변수 목록입니다. | |
extraEnvFrom |
다른 데이터 소스에서 노출할 추가 환경 변수 목록입니다. | |
hpa.behavior |
{scaleDown: {stabilizationWindowSeconds: 300 }} |
행동은 업/다운 스케일링 동작의 사양을 포함합니다 (requires autoscaling/v2beta2 or higher). |
hpa.customMetrics |
[] |
사용자 정의 메트릭은 원하는 복제 개수를 계산하는 데 사용할 사양을 포함합니다 (기본값 사용은 targetAverageUtilization 에 설정된 평균 CPU 활용도 사용을 재정의합니다). |
hpa.cpu.targetType |
AverageValue |
자동 스케일링 CPU 대상 유형을 설정하며, Utilization 또는 AverageValue 중 하나여야 합니다. |
hpa.cpu.targetAverageValue |
100m |
자동 스케일링 CPU 대상 값입니다. |
hpa.cpu.targetAverageUtilization |
자동 스케일링 CPU 대상 활용도 설정입니다. | |
hpa.memory.targetType |
자동 스케일링 메모리 대상 유형을 설정하며, Utilization 또는 AverageValue 중 하나여야 합니다. |
|
hpa.memory.targetAverageValue |
자동 스케일링 메모리 대상 값입니다. | |
hpa.memory.targetAverageUtilization |
자동 스케일링 메모리 대상 활용도 설정입니다. | |
hpa.targetAverageValue |
DEPRECATED 자동 스케일링 CPU 대상 값 설정입니다. | |
image.pullPolicy |
IfNotPresent |
셸 이미지 풀 정책입니다. |
image.pullSecrets |
이미지 레지스트리를 위한 비밀입니다. | |
image.repository |
registry.gitlab.com/gitlab-org/build/cng/gitlab-shell |
셸 이미지 레지스트리입니다. |
image.tag |
master |
셸 이미지 태그입니다. |
init.image.repository |
initContainer 이미지입니다. | |
init.image.tag |
initContainer 이미지 태그입니다. | |
init.containerSecurityContext |
initContainer 특정 securityContext | |
init.containerSecurityContext.allowPrivilegeEscalation |
false |
initContainer 특정: 프로세스가 부모 프로세스보다 더 많은 권한을 획득할 수 있는지를 제어합니다. |
init.containerSecurityContext.runAsNonRoot |
true |
initContainer 특정: 컨테이너가 비루트 사용자로 실행되는지를 제어합니다. |
init.containerSecurityContext.capabilities.drop |
[ "ALL" ] |
initContainer 특정: 컨테이너에 대한 Linux capabilities를 제거합니다. |
keda.enabled |
false |
KEDA ScaledObjects 를 사용하여 HorizontalPodAutoscalers 대신 사용합니다. |
keda.pollingInterval |
30 |
각 트리거를 확인하는 간격입니다. |
keda.cooldownPeriod |
300 |
마지막 트리거가 활성 상태로 보고된 후 리소스를 0으로 다시 스케일링하기까지 기다리는 기간입니다. |
keda.minReplicaCount |
KEDA가 리소스를 축소할 최소 복제본 수, 기본값은 minReplicas 입니다. |
|
keda.maxReplicaCount |
KEDA가 리소스를 증가시킬 최대 복제본 수, 기본값은 maxReplicas 입니다. |
|
keda.fallback |
KEDA 폴백 구성, documentation을 참조하십시오. | |
keda.hpaName |
KEDA가 생성할 HPA 리소스의 이름, 기본값은 keda-hpa-{scaled-object-name} 입니다. |
|
keda.restoreToOriginalReplicaCount |
ScaledObject 가 삭제된 후 대상 리소스를 원래 복제본 수로 다시 스케일링해야 하는지를 지정합니다. |
|
keda.behavior |
업/다운 스케일링 동작에 대한 사양, 기본값은 hpa.behavior 입니다. |
|
keda.triggers |
대상 리소스의 스케일링을 활성화하기 위한 트리거 목록, 기본값은 hpa.cpu 와 hpa.memory 에서 계산된 트리거입니다. |
|
logging.format |
json |
구조화되지 않은 로그를 위해 text 로 설정하십시오. |
logging.sshdLogLevel |
ERROR |
기본 SSH 데몬의 로그 수준입니다. |
priorityClassName |
포드에 할당된 우선 순위 클래스입니다. | |
replicaCount |
1 |
셸 복제본 수입니다. |
serviceLabels |
{} |
보조 서비스 레이블입니다. |
service.allocateLoadBalancerNodePorts |
설정되지 않음, Kubernetes 기본값을 사용합니다. | LoadBalancer 서비스에서 NodePort 할당을 비활성화할 수 있게 합니다. documentation 참고. |
service.externalTrafficPolicy |
Cluster |
셸 서비스 외부 트래픽 정책 (Cluster 또는 Local) |
service.internalPort |
2222 |
셸 내부 포트입니다. |
service.nodePort |
설정된 경우 셸 nodePort를 설정합니다. | |
service.name |
gitlab-shell |
셸 서비스 이름입니다. |
service.type |
ClusterIP |
셸 서비스 유형입니다. |
service.loadBalancerIP |
LoadBalancer에 할당할 IP 주소 (지원되는 경우) | |
service.loadBalancerSourceRanges |
LoadBalancer에 대한 액세스를 허용하는 IP CIDR 목록 (지원되는 경우) | |
serviceAccount.annotations |
{} |
ServiceAccount 주석입니다. |
serviceAccount.automountServiceAccountToken |
false |
기본 ServiceAccount 액세스 토큰이 포드에 마운트되어야 하는지를 나타냅니다. |
serviceAccount.create |
false |
ServiceAccount를 생성해야 하는지를 나타냅니다. |
serviceAccount.enabled |
false |
ServiceAccount를 사용할지를 나타냅니다. |
serviceAccount.name |
ServiceAccount의 이름. 설정되지 않으면 전체 차트 이름이 사용됩니다. | |
securityContext.fsGroup |
1000 |
포드가 시작될 그룹 ID입니다. |
securityContext.runAsUser |
1000 |
포드가 시작될 사용자 ID입니다. |
securityContext.fsGroupChangePolicy |
볼륨의 소유권 및 권한을 변경하는 정책 (Kubernetes 1.23 필요) | |
securityContext.seccompProfile.type |
RuntimeDefault |
사용할 seccomp 프로필입니다. |
containerSecurityContext |
컨테이너가 시작될 때 사용할 securityContext입니다. | |
containerSecurityContext.runAsUser |
1000 |
컨테이너가 시작되는 특정 보안 컨텍스트를 덮어쓸 수 있습니다. |
containerSecurityContext.allowPrivilegeEscalation |
false |
컨테이너의 프로세스가 부모 프로세스보다 더 많은 권한을 획득할 수 있는지를 제어합니다. |
containerSecurityContext.runAsNonRoot |
true |
컨테이너가 비루트 사용자로 실행되는지를 제어합니다. |
containerSecurityContext.capabilities.drop |
[ "ALL" ] |
Gitaly 컨테이너에 대해 Linux capabilities를 제거합니다. |
sshDaemon |
openssh |
실행할 SSH 데몬을 선택합니다, 가능한 값은 (openssh , gitlab-sshd )입니다. |
tolerations |
[] |
포드 배치를 위한 내성 레이블입니다. |
traefik.entrypoint |
gitlab-shell |
traefik을 사용하는 경우 GitLab Shell에 사용할 traefik entrypoint입니다. 기본값은 gitlab-shell 입니다. |
traefik.tcpMiddlewares |
[] |
traefik을 사용할 경우 IngressRouteTCP 리소스에 추가할 TCP Middleware 목록입니다. 기본값으로 Middleware는 없습니다. |
workhorse.serviceName |
webservice |
Workhorse 서비스 이름 (기본적으로 Workhorse는 webservice Pods / Service의 일부입니다) |
metrics.enabled |
false |
메트릭 엔드포인트가 스크래핑을 위해 제공되어야 하는지를 나타냅니다 (requires sshDaemon=gitlab-sshd ). |
metrics.port |
9122 |
메트릭 엔드포인트 포트입니다. |
metrics.path |
/metrics |
메트릭 엔드포인트 경로입니다. |
metrics.serviceMonitor.enabled |
false |
Prometheus Operator가 메트릭 스크래핑을 관리할 수 있도록 ServiceMonitor가 생성되어야 하는지를 나타냅니다. 이 설정을 활성화하면 prometheus.io 스크랩 주석이 제거됩니다. |
metrics.serviceMonitor.additionalLabels |
{} |
ServiceMonitor에 추가할 추가 레이블입니다. |
metrics.serviceMonitor.endpointConfig |
{} |
ServiceMonitor에 대한 추가 엔드포인트 구성입니다. |
metrics.annotations |
DEPRECATED 명시적인 메트릭 주석을 설정합니다. 템플릿 내용으로 대체되었습니다. |
차트 구성 예시
extraEnv
extraEnv
를 사용하면 포드의 모든 컨테이너에서 추가 환경 변수를 노출할 수 있습니다.
아래는 extraEnv
의 사용 예입니다:
extraEnv:
SOME_KEY: some_value
SOME_OTHER_KEY: some_other_value
컨테이너가 시작되면 환경 변수가 노출되었는지 확인할 수 있습니다:
env | grep SOME
SOME_KEY=some_value
SOME_OTHER_KEY=some_other_value
extraEnvFrom
extraEnvFrom
을 사용하면 포드의 모든 컨테이너에서 다른 데이터 소스에서 추가 환경 변수를 노출할 수 있습니다.
아래는 extraEnvFrom
의 사용 예입니다:
extraEnvFrom:
MY_NODE_NAME:
fieldRef:
fieldPath: spec.nodeName
MY_CPU_REQUEST:
resourceFieldRef:
containerName: test-container
resource: requests.cpu
SECRET_THING:
secretKeyRef:
name: special-secret
key: special_token
# 선택 사항: 불리언
CONFIG_STRING:
configMapKeyRef:
name: useful-config
key: some-string
# 선택 사항: 불리언
image.pullSecrets
pullSecrets
는 이미지 풀을 위한 개인 레지스트리에 인증할 수 있도록 합니다.
개인 레지스트리 및 그 인증 방법에 대한 추가 세부정보는 Kubernetes 문서에서 확인할 수 있습니다.
아래는 pullSecrets
의 사용 예입니다:
image:
repository: my.shell.repository
tag: latest
pullPolicy: Always
pullSecrets:
- name: my-secret-name
- name: my-secondary-secret-name
serviceAccount
이 섹션은 ServiceAccount를 생성해야 하는지와 기본 액세스 토큰이 포드에 마운트되어야 하는지를 제어합니다.
이름 | 유형 | 기본값 | 설명 |
---|---|---|---|
annotations |
Map | {} |
ServiceAccount 주석. |
automountServiceAccountToken |
Boolean | false |
기본 ServiceAccount 액세스 토큰이 포드에 마운트되어야 하는지를 제어합니다. 특정 사이드카가 올바르게 작동하는 데 필요하지 않으면 활성화하지 않아야 합니다 (예: Istio). |
create |
Boolean | false |
ServiceAccount를 생성해야 하는지 여부를 나타냅니다. |
enabled |
Boolean | false |
ServiceAccount를 사용할지 여부를 나타냅니다. |
name |
String | ServiceAccount의 이름입니다. 설정하지 않으면 전체 차트 이름이 사용됩니다. |
livenessProbe/readinessProbe
deployment.livenessProbe
와 deployment.readinessProbe
는 특정 시나리오에서 포드의 종료를 제어하는 메커니즘을 제공합니다.
더 큰 리포지토리는 일반적으로 장기 실행되는 연결에 맞게 생존성 및 준비성 프로브 시간을 조정하는 것의 이점을 얻을 수 있습니다. clone
및 push
작업 중 잠재적 중단을 최소화하기 위해 준비성 프로브의 지속 시간을 생존성 프로브의 지속 시간보다 짧게 설정하십시오. terminationGracePeriodSeconds
를 증가시키고 스케줄러가 포드를 종료하기 전에 이러한 작업에 더 많은 시간을 할애하세요. 아래 예제를 GitLab Shell 포드를 보다 안정적이고 효율적으로 만들기 위한 시작점으로 고려하십시오.
deployment:
livenessProbe:
initialDelaySeconds: 10
periodSeconds: 20
timeoutSeconds: 3
successThreshold: 1
failureThreshold: 10
readinessProbe:
initialDelaySeconds: 10
periodSeconds: 5
timeoutSeconds: 2
successThreshold: 1
failureThreshold: 3
terminationGracePeriodSeconds: 300
이 구성에 대한 추가 세부정보는 공식 Kubernetes 문서를 참조하십시오.
tolerations
tolerations
를 사용하면 오염된 작업자 노드에 포드를 스케줄할 수 있습니다.
아래는 tolerations
의 사용 예입니다:
tolerations:
- key: "node_label"
operator: "Equal"
value: "true"
effect: "NoSchedule"
- key: "node_label"
operator: "Equal"
value: "true"
effect: "NoExecute"
affinity
자세한 내용은 affinity
를 참조하세요.
annotations
annotations
를 사용하면 GitLab Shell 포드에 주석을 추가할 수 있습니다.
아래는 annotations
의 사용 예입니다:
annotations:
kubernetes.io/example-annotation: annotation-value
External Services
이 차트는 Workhorse 서비스에 첨부되어야 합니다.
Workhorse
workhorse:
host: workhorse.example.com
serviceName: webservice
port: 8181
Name | Type | Default | Description |
---|---|---|---|
host |
String | Workhorse 서버의 호스트 이름입니다. 이는 serviceName 대신 생략할 수 있습니다. |
|
port |
Integer | 8181 |
Workhorse 서버에 연결할 포트입니다. |
serviceName |
String | webservice |
Workhorse 서버를 운영하는 service 의 이름입니다. 기본적으로 Workhorse는 webservice Pods / Service의 일부입니다. 이 값이 존재하고 host 가 없으면, 차트는 host 값 대신 서비스의 호스트 이름(및 현재 .Release.Name )을 템플릿으로 생성합니다. 이는 Workhorse를 전체 GitLab 차트의 일부로 사용할 때 편리합니다. |
Chart settings
다음 값들은 GitLab Shell Pods를 구성하는 데 사용됩니다.
hostKeys.secret
SSH 호스트 키를 가져오는 Kubernetes secret
의 이름입니다. 비밀에 있는 키는 GitLab Shell에서 사용되기 위해 ssh_host_
로 시작해야 합니다.
authToken
GitLab Shell은 Workhorse와의 통신에서 Auth Token을 사용합니다. 공유 비밀을 사용하여 GitLab Shell과 Workhorse에 토큰을 공유하세요.
authToken:
secret: gitlab-shell-secret
key: secret
Name | Type | Default | Description |
---|---|---|---|
authToken.key |
String | 위 비밀에서 인증 토큰을 포함하는 키의 이름입니다. | |
authToken.secret |
String | 가져올 Kubernetes Secret 의 이름입니다. |
LoadBalancer Service
service.type
이 LoadBalancer
로 설정된 경우, 사용자 지정 IP로 LoadBalancer
를 생성하기 위해 선택적으로 service.loadBalancerIP
를 지정할 수 있습니다(클라우드 공급자가 지원하는 경우).
또한 선택적으로 service.loadBalancerSourceRanges
목록을 지정하여 LoadBalancer
에 접근할 수 있는 CIDR 범위를 제한할 수 있습니다(클라우드 공급자가 지원하는 경우).
LoadBalancer
서비스 유형에 대한 추가 정보는 Kubernetes 문서에서 확인할 수 있습니다.
service:
type: LoadBalancer
loadBalancerIP: 1.2.3.4
loadBalancerSourceRanges:
- 5.6.7.8/32
- 10.0.0.0/8
OpenSSH 보조 구성
OpenSSH의 sshd
를 사용할 때(.sshDaemon: openssh
), 두 가지 방법으로 보조 구성을 제공할 수 있습니다: .opensshd.supplemental_config
와 /etc/ssh/sshd_config.d/*.conf
에 구성 조각을 마운트하는 방법입니다.
제공된 모든 구성은 sshd_config
의 기능적 요구 사항을 충족해야 합니다. 매뉴얼 페이지를 읽어보세요.
opensshd.supplemental_config
.opensshd.supplemental_config
의 내용은 컨테이너 내의 sshd_config
파일 끝에 직접 삽입됩니다.
이 값은 멀티라인 문자열이어야 합니다.
예시로, ssh-rsa
키 교환 알고리즘을 사용하는 이전 클라이언트를 활성화하는 방법이 있습니다. ssh-rsa
와 같은 사용 중단된 알고리즘을 활성화하는 것은 상당한 보안 취약점을 초래합니다. 이러한 변경 사항이 있는 공개 노출 GitLab 인스턴스에서 공격 가능성이 상당히 증가합니다.
opensshd:
supplemental_config: |-
HostKeyAlgorithms +ssh-rsa,ssh-rsa-cert-v01@openssh.com
PubkeyAcceptedAlgorithms +ssh-rsa,ssh-rsa-cert-v01@openssh.com
CASignatureAlgorithms +ssh-rsa
sshd_config.d
sshd
에 전체 구성 조각을 /etc/ssh/sshd_config.d
에 내용을 마운트하여 제공할 수 있으며, 파일은 *.conf
와 일치해야 합니다.
이러한 구성은 컨테이너 내에서 애플리케이션이 작동하는 데 필요한 기본 구성 후에 포함됩니다. 이러한 값은 sshd_config
의 내용을 덮어쓰지 않고 확장합니다.
예시로, extraVolumes
와 extraVolumeMounts
를 통해 ConfigMap의 단일 항목을 컨테이너에 마운트하는 방법이 있습니다:
extraVolumes: |
- name: gitlab-sshdconfig-extra
configMap:
name: gitlab-sshdconfig-extra
extraVolumeMounts: |
- name: gitlab-sshdconfig-extra
mountPath: /etc/ssh/sshd_config.d/extra.conf
subPath: extra.conf
networkpolicy
구성
이 섹션은 NetworkPolicy를 제어합니다.
이 구성은 선택 사항이며, Egress와 Ingress를 특정 엔드포인트로 제한하는 데 사용됩니다.
이름 | 유형 | 기본값 | 설명 |
---|---|---|---|
enabled |
Boolean | false |
이 설정은 NetworkPolicy 를 활성화합니다. |
ingress.enabled |
Boolean | false |
true 로 설정하면 Ingress 네트워크 정책이 활성화됩니다. 규칙이 지정되지 않으면 모든 Ingress 연결이 차단됩니다. |
ingress.rules |
배열 | [] |
Ingress 정책에 대한 규칙, 자세한 내용은 https://kubernetes.io/docs/concepts/services-networking/network-policies/#the-networkpolicy-resource 및 아래 예제를 참조하세요. |
egress.enabled |
Boolean | false |
true 로 설정하면 Egress 네트워크 정책이 활성화됩니다. 규칙이 지정되지 않으면 모든 egress 연결이 차단됩니다. |
egress.rules |
배열 | [] |
Egress 정책에 대한 규칙, 자세한 내용은 https://kubernetes.io/docs/concepts/services-networking/network-policies/#the-networkpolicy-resource 및 아래 예제를 참조하세요. |
예제 네트워크 정책
gitlab-shell
서비스는 포트 22에 대한 Ingress 연결과 기본 워크호스 포트 8181에 대한 Egress 연결이 필요합니다. 이 예제는 다음과 같은 네트워크 정책을 추가합니다:
- TCP
0.0.0.0/0
포트 2222에서 오는 모든 Ingress 요청이 허용됩니다 - DNS용으로 UDP
10.0.0.0/8
포트 53에 대한 모든 Egress 요청이 허용됩니다 - Workhorse용으로 TCP
10.0.0.0/8
포트 8181에 대한 모든 Egress 요청이 허용됩니다 - Gitaly용으로 TCP
10.0.0.0/8
포트 8075에 대한 모든 Egress 요청이 허용됩니다
제공된 예제는 예시일 뿐이며 완전하지 않을 수 있습니다
networkpolicy:
enabled: true
ingress:
enabled: true
rules:
- from:
- ipBlock:
cidr: 0.0.0.0/0
ports:
- port: 2222
protocol: TCP
egress:
enabled: true
rules:
- to:
- ipBlock:
cidr: 10.0.0.0/8
ports:
- port: 8181
protocol: TCP
- port: 8075
protocol: TCP
- port: 53
protocol: UDP
KEDA 구성
이 keda
섹션은 일반 HorizontalPodAutoscalers
대신 KEDA ScaledObjects
설치를 활성화합니다.
이 구성은 선택 사항이며, 사용자 정의 또는 외부 메트릭에 따라 오토스케일링이 필요할 때 사용할 수 있습니다.
대부분의 설정은 해당되는 hpa
섹션에 설정된 값으로 기본값을 따릅니다.
다음이 사실이면, CPU 및 메모리 트리거가 hpa
섹션에 설정된 CPU 및 메모리 임계값에 따라 자동으로 추가됩니다:
-
triggers
가 설정되지 않음. - 해당
request.cpu.request
또는request.memory.request
설정이 0이 아닌 값으로 설정됨.
트리거가 설정되지 않으면 ScaledObject
가 생성되지 않습니다.
자세한 내용은 KEDA 문서를 참조하세요.
이름 | 유형 | 기본값 | 설명 |
---|---|---|---|
enabled |
Boolean | false |
KEDA ScaledObjects 사용, HorizontalPodAutoscalers 대신 |
pollingInterval |
Integer | 30 |
각 트리거를 체크하는 주기 |
cooldownPeriod |
Integer | 300 |
마지막 트리거가 활성 상태로 보고된 후 리소스를 0으로 다시 스케일링하기 전 대기하는 기간 |
minReplicaCount |
Integer | KEDA가 리소스를 축소할 최소 레플리카 수, 기본값은 minReplicas
|
|
maxReplicaCount |
Integer | KEDA가 리소스를 확장할 최대 레플리카 수, 기본값은 maxReplicas
|
|
fallback |
Map | KEDA 폴백 구성, 상세 내용은 문서 참고 | |
hpaName |
String | KEDA가 생성할 HPA 리소스의 이름, 기본값은 keda-hpa-{scaled-object-name}
|
|
restoreToOriginalReplicaCount |
Boolean |
ScaledObject 가 삭제된 후 대상 리소스가 원래 레플리카 수로 다시 스케일링되어야 하는지 여부 |
|
behavior |
Map | 업스케일 및 다운스케일 동작에 대한 사양, 기본값은 hpa.behavior
|
|
triggers |
Array | 대상 리소스 스케일링을 활성화하는 트리거 목록, 기본값은 hpa.cpu 및 hpa.memory 에서 계산된 트리거 |
examples/keda/gitlab-shell.yml
에서 keda
사용 예제를 참조하세요.