GitLab-Sidekiq 차트 사용하기

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

서브 차트 sidekiq은 여러 개의 Deployment을 통해 각각의 확장성과 구성을 가진 Sidekiq 워커를 유연하게 배포할 수 있도록 구성할 수 있도록 하고 있습니다.

이 차트는 기본 pods: 선언을 제공하지만, 빈 정의를 제공할 경우 어떤 워커도 갖지 않게 됩니다.

요구 사항

이 차트는 완전한 GitLab 차트의 일부로서 또는 이 차트가 배포되는 Kubernetes 클러스터에서 도달할 수 있는 외부 서비스로서 Redis, PostgreSQL, 그리고 Gitaly에 의존합니다.

디자인 선택 사항

이 차트는 여러 개의 Deployment와 관련된 ConfigMap을 생성합니다. 컨테이너의 command에 대한 추가 인자나 environment 속성을 사용하는 대신 ConfigMap 동작을 이용하도록 선택되었으며, 이는 명령어 길이에 대한 걱정을 피하기 위함입니다.

구성

sidekiq 차트는 세 부분으로 구성됩니다: 차트 전역의 외부 서비스, 차트 전역의 기본값들, 그리고 각 pod의 정의.

설치 명령줄 옵션

다음 표에 helm install 명령을 통해 --set 플래그를 사용하여 제공할 수 있는 가능한 차트 구성을 모두 포함하고 있습니다:

매개변수 기본값 설명
annotations   Pod 어노테이션
podLabels   보조 Pod 라벨. 선택기로 사용되지는 않습니다.
common.labels   이 차트에서 생성된 모든 객체에 적용되는 보조 라벨들
… (이하 생략)    

차트 구성 예시

리소스

resources를 사용하여 Sidekiq pod가 소비할 수 있는 리소스(메모리 및 CPU)의 최솟값과 최댓값을 구성할 수 있습니다.

Sidekiq pod 워크로드는 배포마다 크게 다릅니다. 일반적으로 각 Sidekiq 프로세스는 약 1 vCPU 및 2GB의 메모리를 소비한다고 이해됩니다. 수직 스케일링은 일반적으로 이 1:2 비율의 vCPU:메모리에 맞게 구성되어야 합니다.

아래는 resources를 사용한 예시입니다:

resources:
  limits:
    memory: 5G
  requests:
    memory: 2G
    cpu: 900m

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

특정 pod에 대해 extraEnv를 설정할 수도 있습니다:

extraEnv:
  SOME_KEY: some_value
  SOME_OTHER_KEY: some_other_value
pods:
  - name: mailers
    queues: mailers
    extraEnv:
      SOME_POD_KEY: some_pod_value
  - name: catchall
    negateQueues: mailers

이렇게 하면 mailers pod의 애플리케이션 컨테이너에만 SOME_POD_KEY가 설정됩니다. Pod 수준의 ‘extraEnv’ 설정은 init containers에 추가되지 않습니다.

extraEnvFrom

extraEnvFrom을 사용하여 모든 pod의 모든 컨테이너에서 다른 데이터 소스에서 추가 환경 변수를 노출할 수 있습니다. 이후에 Sidekiq pod별로 변수를 재정의할 수 있습니다.

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
      # optional: boolean
pods:
  - name: immediate
    extraEnvFrom:
      CONFIG_STRING:
        configMapKeyRef:
          name: useful-config
          key: some-string
          # optional: boolean

extraVolumes

extraVolumes를 사용하여 차트 전역으로 추가 볼륨을 구성할 수 있습니다.

extraVolumes를 사용한 예시는 다음과 같습니다:

extraVolumes: |
  - name: example-volume
    persistentVolumeClaim:
      claimName: example-pvc

extraVolumeMounts

extraVolumeMounts를 사용하여 차트 전역의 모든 컨테이너에 대해 추가 볼륨 마운트를 구성할 수 있습니다.

extraVolumeMounts를 사용한 예시는 다음과 같습니다:

extraVolumeMounts: |
  - name: example-volume-mount
    mountPath: /etc/example

image.pullSecrets

pullSecrets를 사용하여 pod에서 이미지를 가져오기 위해 개인 레지스트리에 인증할 수 있습니다.

개인 레지스트리 및 해당 인증 방법에 대한 추가 자세한 내용은 Kubernetes 문서에서 찾을 수 있습니다.

pullSecrets를 사용한 예시는 다음과 같습니다:

image:
  repository: my.sidekiq.repository
  pullPolicy: Always
  pullSecrets:
  - name: my-secret-name
  - name: my-secondary-secret-name

tolerations

tolerations을 사용하여 tainted worker 노드에 pod를 예약할 수 있습니다.

tolerations을 사용한 예시는 다음과 같습니다:

tolerations:
- key: "node_label"
  operator: "Equal"
  value: "true"
  effect: "NoSchedule"
- key: "node_label"
  operator: "Equal"
  value: "true"
  effect: "NoExecute"

annotations

annotations을 사용하여 Sidekiq pod에 주석을 추가할 수 있습니다.

annotations을 사용한 예시는 다음과 같습니다:

annotations:
  kubernetes.io/example-annotation: annotation-value

이 차트의 Community Edition 사용

기본적으로 Helm 차트는 GitLab의 Enterprise Edition을 사용합니다. 원하는 경우 Community Edition을 대신 사용할 수 있습니다. 두 버전 간의 차이점에 대해 자세히 알아보세요.

Community Edition을 사용하려면 image.repositoryregistry.gitlab.com/gitlab-org/build/cng/gitlab-sidekiq-ce로 설정하세요.

외부 서비스

이 차트는 Webservice 차트와 동일한 Redis, PostgreSQL 및 Gitaly 인스턴스에 연결해야 합니다. 외부 서비스의 값은 모든 Sidekiq pods 간에 공유되는 ConfigMap에 채워집니다.

Redis

redis:
  host: rank-racoon-redis
  port: 6379
  sentinels:
    - host: sentinel1.example.com
      port: 26379
  password:
    secret: gitlab-redis
    key: redis-password
Name Type Default Description
host String   사용할 데이터베이스가 있는 Redis 서버의 호스트명입니다. 이것은 serviceName 대신에 생략할 수 있습니다. Redis Sentinels를 사용하는 경우 host 속성은 sentinel.conf에서 지정된 클러스터 이름으로 설정해야 합니다.
password.key String   Redis의 password.key 속성은 비밀번호가 들어있는 시크릿(아래 참조)의 키 이름을 정의합니다.
password.secret String   Redis의 password.secret 속성은 사용할 Kubernetes Secret의 이름을 정의합니다.
port Integer 6379 Redis 서버에 연결할 포트입니다.
serviceName String redis Redis 데이터베이스를 운영하는 service의 이름입니다. 이 속성이 있는 경우 host가 아닌 현재 .Release.Name을 기준으로 서비스의 호스트명을 템플릿화합니다. 이는 Redis를 전체 GitLab 차트의 일부로 사용할 때 편리합니다.
sentinels.[].host String   Redis HA 설정에서 Redis Sentinel 서버의 호스트명입니다.
sentinels.[].port Integer 26379 Redis Sentinel 서버에 연결할 포트입니다.

참고: 현재 Redis Sentinel 지원은 별도로 GitLab 차트에서 배포된 Sentinel을 지원합니다. 결과적으로, GitLab 차트를 사용하여 배포하는 Redis가 비활성화되어야 합니다. Redis 비밀번호를 포함하는 시크릿은 GitLab 차트를 배포하기 전에 수동으로 생성되어야 합니다.

PostgreSQL

psql:
  host: rank-racoon-psql
  serviceName: pgbouncer
  port: 5432
  database: gitlabhq_production
  username: gitlab
  preparedStatements: false
  password:
    secret: gitlab-postgres
    key: psql-password
항목 유형 기본값 설명
host String   사용할 데이터베이스가 있는 PostgreSQL 서버의 호스트 이름입니다. postgresql.install=true (기본값 non-production)인 경우 이 항목은 생략할 수 있습니다.
serviceName String   PostgreSQL 데이터베이스를 운영하는 service의 이름입니다. 이 값이 존재하고 host가 존재하지 않으면, 차트는 host 값 대신 서비스의 호스트 이름을 템플릿화합니다.
database String gitlabhq_production PostgreSQL 서버에서 사용할 데이터베이스의 이름입니다.
password.key String   PostgreSQL의 password.key 속성은 비밀번호가 포함된 시크릿(secret)의 이름을 정의합니다.
password.secret String   PostgreSQL의 password.secret 속성은 사용할 Kubernetes Secret의 이름을 정의합니다.
port Integer 5432 PostgreSQL 서버에 연결할 포트입니다.
username String gitlab 데이터베이스에 인증하기 위한 사용자 이름입니다.
preparedStatements Boolean false PostgreSQL 서버와 통신할 때 준비된 문(prepared statements)을 사용할지 여부입니다.

Gitaly

gitaly:
  internal:
    names:
      - default
      - default2
  external:
    - name: node1
      hostname: node1.example.com
      port: 8079
  authToken:
    secret: gitaly-secret
    key: token
항목 유형 기본값 설명
host String   사용할 Gitaly 서버의 호스트 이름입니다. 이 항목은 serviceName에 대한 대안으로 생략될 수 있습니다.
serviceName String gitaly Gitaly 서버를 운영하는 service의 이름입니다. 이 값이 존재하고 host가 존재하지 않으면, 차트는 host 값 대신 서비스의 호스트 이름 (및 현재 .Release.Name)을 템플릿화합니다. 이는 Gitaly를 전체 GitLab 차트의 일부로 사용할 때 편리합니다.
port Integer 8075 Gitaly 서버에 연결할 포트입니다.
authToken.key String   시크릿 아래의 토큰을 포함하는 키의 이름입니다.
authToken.secret String   사용할 Kubernetes Secret의 이름입니다.

메트릭스

기본적으로, 각 pod에 대해 Prometheus 메트릭스 익스포터가 활성화됩니다. 메트릭스는 GitLab Prometheus metrics이 관리자 영역에서 활성화된 경우에만 사용할 수 있습니다. 익스포터는 포트 3807에서 /metrics 엔드포인트를 노출합니다. 메트릭스가 활성화된 경우, 각 pod에 주석이 추가되어 Prometheus 서버가 노출된 메트릭스를 찾고 스크래핑할 수 있도록합니다.

차트 전역 기본값

다음 값은 각 pod별로 제공되지 않을 경우 차트 전체에서 사용됩니다.

항목 유형 기본값 설명
concurrency Integer 25 동시에 처리할 작업 수입니다.
timeout Integer 4 Sidekiq 셧다운 타임아웃입니다. TERM 시그널을 받은 후 Sidekiq이 프로세스를 강제로 종료하기 전의 시간(초)입니다.
memoryKiller.checkInterval Integer 3 메모리 체크 사이의 시간(초)
memoryKiller.maxRss Integer 2000000 지연 종료가 트리거되는 최대 RSS 킬로바이트로 표시됩니다.
memoryKiller.graceTime Integer 900 트리거 된 종료에 대한 대기 시간(초) 표시
memoryKiller.shutdownWait Integer 30 트리거 된 종료 후 기존 작업을 완료할 시간(초) 표시입니다.
minReplicas Integer 2 최소 복제본 수
maxReplicas Integer 10 최대 복제본 수
maxUnavailable Integer 1 사용 불가능한 Pod의 최대 수 제한

참고: Linux 패키지 문서에서 Sidekiq memory killer의 자세한 설명을 확인할 수 있습니다.

파드별 설정

pods 선언은 워커 파드의 모든 속성을 선언하는 데 사용됩니다. 이러한 내용은 Deployment에 템플릿화되며, 개별 ConfigMap은 해당 Sidekiq 인스턴스에 대해 생성됩니다.

참고: 설정은 모든 대기열을 모니터링하도록 설정된 단일 파드를 기본값으로 사용합니다. 파드 섹션을 수정하면 기본 파드가 아닌 다른 파드 구성으로 덮어씁니다. 이로써 새 파드가 추가되는 것이 아니라 기본 파드가 덮어쓰입니다.

Name Type Default Description
concurrency 정수   동시에 처리할 작업 수입니다. 제공되지 않으면 차트 전역 기본값에서 가져옵니다.
name 문자열   이 파드의 DeploymentConfigMap의 이름으로 사용됩니다. 짧게 유지해야하며 두 항목 간에 중복되어서는 안 됩니다.
queues 문자열   아래 참조.
negateQueues 문자열   사용되지 않음 아래 세부 정보 참조.
queueSelector 부울 false 대기열 선택기를 사용합니다. 감별된 경로를 선호합니다. 자세한 정보는 queues루팅 규칙을 참조하세요.
timeout 정수   Sidekiq 종료 시간 초과입니다. Sidekiq에서 TERM 시그널을 받은 후 프로세스를 강제로 종료하기 전의 시간(초). 제공되지 않으면 차트 전역 기본값에서 가져와야 합니다. 이 값은 반드시 terminationGracePeriodSeconds보다 작아야 합니다.
resources     각 파드는 각자의 리소스 요구사항을 제시할 수 있으며, 이는 해당 파드에 대해 생성된 Deployment에 추가됩니다. 이는 Kubernetes 문서와 일치합니다.
nodeSelector     각 파드는 nodeSelector 속성으로 구성할 수 있으며, 이는 해당 파드에 대해 생성된 Deployment에 추가됩니다. 이 정의는 Kubernetes 문서와 일치합니다.
memoryKiller.checkInterval 정수 3 메모리 체크 간격입니다.
memoryKiller.maxRss 정수 2000000 특정 파드에 대한 최대 RSS를 재정의합니다.
memoryKiller.graceTime 정수 900 특정 파드의 트리거된 종료 전 대기할 시간을 재정의합니다.
memoryKiller.shutdownWait 정수 30 트리거된 종료 후 기존 작업을 완료할 시간을 특정 파드에 대해 재정의합니다.
minReplicas 정수 2 최소 복제본 수
maxReplicas 정수 10 최대 복제본 수
maxUnavailable 정수 1 사용할 수 있는 최대 파드 수 제한
podLabels {} 보조 파드 라벨. 선택기로 사용되지 않습니다.
strategy   {} 배포에 의해 사용되는 업데이트 전략을 구성합니다.
extraVolumes 문자열   지정된 파드에 대한 추가 볼륨을 구성합니다.
extraVolumeMounts 문자열   지정된 파드에 대한 추가 볼륨 마운트를 구성합니다.
priorityClassName 문자열 "" 파드 priorityClassName 구성을 허용합니다. 이는 이탈 경우 파드 우선 순위를 제어하는 데 사용됩니다.
hpa.customMetrics 배열 [] 사용할 지정 복제본 수 계산을 위한 사양을 포함합니다 (targetAverageUtilization에서 구성된 평균 CPU 사용률의 기본값 적용을 무력화합니다).
hpa.cpu.targetType 문자열 AverageValue 오토스케일링 CPU 대상 유형을 덮어씁니다. Utilization 또는 AverageValue 중 하나여야 합니다.
hpa.cpu.targetAverageValue 문자열 350m 오토스케일링 CPU 대상 값을 덮어씁니다.
hpa.cpu.targetAverageUtilization 정수   오토스케일링 CPU 대상 활용도를 덮어씁니다.
hpa.memory.targetType 문자열   오토스케일링 메모리 대상 유형을 덮어씁니다. Utilization 또는 AverageValue 중 하나여야 합니다.
hpa.memory.targetAverageValue 문자열   오토스케일링 메모리 대상 값을 덮어씁니다.
hpa.memory.targetAverageUtilization 정수   오토스케일링 메모리 대상 활용도를 덮어씁니다.
hpa.targetAverageValue 문자열   사용되지 않음 오토스케일링 CPU 대상 값을 덮어씁니다.
keda.enabled 부울 false KEDA 사용 여부를 덮어씁니다.
keda.pollingInterval 정수 30 KEDA 폴링 간격을 덮어씁니다.
keda.cooldownPeriod 정수 300 KEDA 쿨다운 기간을 덮어씁니다.
keda.minReplicaCount 정수   KEDA 최소 복제본 수를 덮어씁니다.
keda.maxReplicaCount 정수   KEDA 최대 복제본 수를 덮어씁니다.
keda.fallback   KEDA 페일백 구성을 덮어씁니다.
keda.hpaName 문자열   KEDA HPA 이름을 덮어씁니다.
keda.restoreToOriginalReplicaCount 부울   원래 복제본 수로 복원 기능을 덮어씁니다.
keda.behavior   KEDA HPA 동작을 덮어씁니다.
keda.triggers 배열   KEDA 트리거를 덮어씁니다.
extraEnv   노출할 추가 환경 변수 목록입니다. 차트 전역 값은 이 목록과 병합되며, 파드의 값이 우선합니다.
extraEnvFrom   노출할 다른 데이터 소스에서 가져온 추가 환경 변수 목록입니다.
terminationGracePeriodSeconds 정수 30 파드가 정상적으로 종료되기 위한 초 단위의 선택 사항 기간입니다.

대기열

queues 값은 처리해야 하는 큐의 쉼표로 구분된 목록을 포함하는 문자열입니다. 기본적으로 설정되어 있지 않으며, 이는 모든 대기열이 처리됨을 의미합니다.

문자열에는 공백을 포함해서는 안 됩니다. merge,post_receive,process_commit는 작동하지만 merge, post_receive, process_commit은 작동하지 않습니다.

작업이 추가되지만 적어도 하나의 pod 항목으로 나타나지 않는 대기열은 처리되지 않을 것입니다. 모든 큐의 완전한 목록은 GitLab 소스의 다음 파일에서 확인할 수 있습니다.

  1. app/workers/all_queues.yml
  2. ee/app/workers/all_queues.yml

gitlab.sidekiq.pods[].queues를 구성하는 것 외에도 global.appConfig.sidekiq.routingRules를 구성해야 합니다. 자세한 정보는 Sidekiq 라우팅 규칙 설정을 참조하십시오.

negateQueues (폐지됨)

폐지에 대한 자세한 정보는 폐지된 Negate 설정을 참조하십시오.

negateQueuesqueues와 동일한 형식입니다. 그러나 처리하는 대신 무시할 큐를 나타냅니다.

문자열에는 공백을 포함해서는 안 됩니다. merge,post_receive,process_commit는 작동하지만 merge, post_receive, process_commit은 작동하지 않습니다.

이 기능은 중요한 대기열을 처리하는 pod와 다른 대기열을 처리하는 다른 pod가 있는 경우 유용합니다. 동일한 큐 목록을 사용하되 하나는 queues에 있고 다른 하나는 negateQueues에 있는 경우입니다.

참고: negateQueuesqueues와 함께 제공되어서는 안 되며, 그렇게 할 경우 영향을 미치지 않습니다.

pod 항목의 예

pods:
  - name: immediate
    concurrency: 10
    minReplicas: 2  # 상속된 값의 기본값
    maxReplicas: 10 # 상속된 값의 기본값
    maxUnavailable: 5 # 상속된 값의 기본값
    queues: merge,post_receive,process_commit
    extraVolumeMounts: |
      - name: example-volume-mount
        mountPath: /etc/example
    extraVolumes: |
      - name: example-volume
        persistentVolumeClaim:
          claimName: example-pvc
    resources:
      limits:
        cpu: 800m
        memory: 2Gi
    hpa:
      cpu:
        targetType: Value
        targetAverageValue: 350m

Sidekiq 구성의 전체 예

다음은 가져오기 관련 작업을 위한 별도의 Sidekiq pod와 기타 모든 작업을 위한 다른 pod를 사용하는 Sidekiq 구성의 전체 예입니다.

...
global:
  appConfig:
    sidekiq:
      routingRules:
      - ["feature_category=importers", "import"]
      - ["*", "default"]
...
gitlab:
  sidekiq:
    pods:
    - name: import
      queues: import
    - name: default
...

networkpolicy 구성

이 섹션은 NetworkPolicy 를 제어합니다. 이 구성은 선택 사항이며, Pod의 Egress 및 Ingress를 특정 엔드포인트로 제한하는 데 사용됩니다.

이름 유형 기본값 설명
enabled Boolean false 이 설정은 네트워크 정책을 활성화시킵니다.
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 및 아래 예제를 참조

네트워크 정책의 예

Sidekiq 서비스는 활성화된 경우 Prometheus exporter를 위해 Ingress 연결만 필요로하며 일반적으로 다양한 마계지로의 Egress 연결이 필요합니다. 이 예제는 다음과 같은 네트워크 정책을 추가합니다.

  • TCP 10.0.0.0/8 포트 3807에서 네트워크로부터의 모든 Ingress 요청은 메트릭 내보내기를 위해 허용됩니다.
  • UDP 10.0.0.0/8 포트 53으로 네트워크로의 모든 Egress 요청은 DNS를 위해 허용됩니다.
  • TCP 10.0.0.0/8 포트 5432으로 네트워크로의 모든 Egress 요청은 PostgreSQL을 위해 허용됩니다.
  • TCP 10.0.0.0/8 포트 6379으로 네트워크로의 모든 Egress 요청은 Redis를 위해 허용됩니다.
  • 로컬 네트워크인 10.0.0.0/8로의 다른 Egress 요청은 제한됩니다.
  • 10.0.0.0/8 외부의 Egress 요청은 허용됩니다.

제공된 예제는 단순한 예제일 뿐이며 완전하지 않을 수 있음에 유의하세요.

메모: Sidekiq 서비스는 외부 객체 저장소의 이미지를 위해 공개 인터넷과의 외부 연결성이 필요합니다.

networkpolicy:
  enabled: true
  ingress:
    enabled: true
    rules:
      - from:
        - ipBlock:
            cidr: 10.0.0.0/8
        ports:
        - port: 3807
  egress:
    enabled: true
    rules:
      - to:
        - ipBlock:
            cidr: 10.0.0.0/8
        ports:
        - port: 53
          protocol: UDP
      - to:
        - ipBlock:
            cidr: 10.0.0.0/8
        ports:
        - port: 5432
          protocol: TCP
      - to:
        - ipBlock:
            cidr: 10.0.0.0/8
        ports:
        - port: 6379
          protocol: TCP
      - to:
        - ipBlock:
            cidr: 0.0.0.0/0
            except:
            - 10.0.0.0/8

KEDA 구성

keda 섹션에서는 KEDA ScaledObjects를 일반적인 HorizontalPodAutoscalers 대신 설치할 수 있습니다. 이 구성은 선택 사항이며 사용자나 외부 메트릭을 기반으로 자동 확장이 필요할 때 사용할 수 있습니다.

대부분의 설정은 해당되는 경우 hpa 섹션에 설정된 값으로 기본 설정됩니다.

다음이 모두 참인 경우 CPU 및 메모리 트리거가 자동으로 추가됩니다. 이는 triggers가 설정되지 않았거나, 해당하는 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가 리소스를 축소할 최소 레플리카 수로, 기본값은 minReplicas로 설정됩니다.
maxReplicaCount 정수   KEDA가 리소스를 확장할 최대 레플리카 수로, 기본값은 maxReplicas로 설정됩니다.
fallback   KEDA 후속 구성, 문서를 참조하십시오.
hpaName 문자열   KEDA가 생성할 HPA 리소스의 이름으로, 기본값은 keda-hpa-{scaled-object-name}로 설정됩니다.
restoreToOriginalReplicaCount 부울   ScaledObject가 삭제된 후 대상 리소스를 원래 레플리카 수로 다시 확장해야 하는지 여부를 지정합니다.
behavior   확장 및 축소 동작에 대한 사양으로, 기본값은 hpa.behavior로 설정됩니다.
triggers 배열   대상 리소스의 스케일링을 활성화하는 트리거 목록으로, 기본값은 hpa.cpuhpa.memory에서 계산된 트리거 목록으로 설정됩니다.