GitLab Shell 차트 사용하기

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

gitlab-shell 서브 차트는 GitLab에 대한 Git SSH 액세스를 위해 구성된 SSH 서버를 제공합니다.

요구 사항

이 차트는 Kubernetes 클러스터에서 배포된 GitLab 차트의 일부이거나 외부 서비스로부터 접근 가능해야 하는 Workhorse 서비스에 의존합니다.

디자인 선택

SSH 복제본을 쉽게 지원하고 SSH 허가된 키에 대한 공유 저장소 사용을 피하기 위해, SSH AuthorizedKeysCommand를 사용하여 GitLab 허가된 키 엔드포인트에 대해 인증합니다. 따라서, 이러한 포드 내에서 AuthorizedKeys 파일을 유지하거나 업데이트하지 않습니다.

구성

gitlab-shell 차트는 두 부분으로 구성됩니다: external serviceschart 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.cpuhpa.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.livenessProbedeployment.readinessProbe는 특정 시나리오에서 포드의 종료를 제어하는 메커니즘을 제공합니다.

더 큰 리포지토리는 일반적으로 장기 실행되는 연결에 맞게 생존성 및 준비성 프로브 시간을 조정하는 것의 이점을 얻을 수 있습니다. clonepush 작업 중 잠재적 중단을 최소화하기 위해 준비성 프로브의 지속 시간을 생존성 프로브의 지속 시간보다 짧게 설정하십시오. 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.typeLoadBalancer로 설정된 경우, 사용자 지정 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의 내용을 덮어쓰지 않고 확장합니다.

예시로, extraVolumesextraVolumeMounts를 통해 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.cpuhpa.memory에서 계산된 트리거

examples/keda/gitlab-shell.yml에서 keda 사용 예제를 참조하세요.