GitLab-Sidekiq 차트 사용하기

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

sidekiq 서브 차트는 Sidekiq 워커를 유연하게 배포하기 위해 설계된 것으로, 여러 Deployment 간에 큐를 분리하고 개별 확장성과 구성을 제공하는 것을 명확히하도록 명시적으로 구현되었습니다.

요구 사항

이 차트는 완전한 GitLab 차트의 일부로서 또는 이 차트가 배포된 Kubernetes 클러스터에서 도달 가능한 외부 서비스로서 Redis, PostgreSQL 및 Gitaly 서비스에 의존합니다.

설계 선택 사항

이 차트는 여러 Deployment 및 관련 ConfigMap을 생성합니다. 커맨드의 길이에 대한 우려를 피하기 위해 환경 특성이나 컨테이너의 추가적인 인자를 사용하는 대신 ConfigMap 동작을 사용하는 것이 더 명확하다고 결정되었습니다. 이 선택은 많은 수의 ConfigMap을 유발하지만, 각 Pod가 무엇을 수행해야 하는지 매우 명확하게 정의합니다.

구성

sidekiq 차트는 세 가지 부분으로 구성됩니다: 차트 전체적인 외부 서비스, 차트 전체적인 기본값, 각 Pod의 정의.

설치 명령줄 옵션

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

| 매개변수 | 기본값 | 설명 | | —————————————— | ———————————————————— | ———————————————————————————————————————————————————————————————— | | annotations | | Pod annotations | | podLabels | | 부가적인 Pod 라벨. 선택기에 사용되지 않음. | 모든 이에 해당하는 데이터들을 제외하고 번역될 것입니다.

차트 구성 예시

리소스

resources를 사용하면 Sidekiq pod가 사용할 수있는 리소스 (메모리 및 CPU)의 최소 및 최대량을 구성할 수 있습니다.

Sidekiq pod 작업 부하는 배포간에 크게 다릅니다. 일반적으로 각 Sidekiq 프로세스가 약 1 vCPU 및 2GB의 메모리를 사용한다는 것으로 이해됩니다. 대부분의 경우 수직 스케일링은 vCPU:메모리1:2 비율에 일반적으로 정렬해야합니다.

아래는 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

이렇게하면 SOME_POD_KEYmailers pod의 응용 프로그램 컨테이너에만 설정됩니다. 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를 사용하면 차트 전체의 모든 컨테이너에 대해 추가 volumeMounts를 구성할 수 있습니다.

아래는 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로 설정하십시오.

외부 서비스

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

Redis

redis:
  host: rank-racoon-redis1
  port: 6379
  sentinels:
    - host: sentinel1.example.com
      port: 26379
  password:
    secret: gitlab-redis
    key: redis-password
이름 유형 기본값 설명
host String   사용할 Redis 서버의 호스트 이름입니다. 이는 serviceName의 대체로 생략 할 수 있습니다. Redis Sentinel을 사용하는 경우 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)을 host 값 대신에 템플릿화합니다. 이는 Redis를 전체적으로 GitLab 차트의 일부로 사용할 때 편리합니다.
sentinels.[].host String   Redis HA 설정의 Redis Sentinel 서버의 호스트 이름입니다.
sentinels.[].port Integer 26379 Redis Sentinel 서버에 연결 할 포트입니다.

참고 : 현재 Redis Sentinel 지원은 별도로 배포된 Sentinels 만 지원합니다. 결과적으로 GitLab 차트를 통한 Redis 배포는 redis.install=false로 매뉴얼으로 비활성화해야합니다. 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 (기본: 비 프로덕션) 경우 생략할 수 있습니다.
serviceName String   PostgreSQL 데이터베이스를 운영하는 service의 이름입니다. 이 값이 존재하고 host가 없으면 차트는 서비스의 호스트 이름을 host 값 대신에 템플릿화합니다.
database String gitlabhq_production PostgreSQL 서버에서 사용할 데이터베이스의 이름입니다.
password.key String   PostgreSQL 비밀번호를 포함하는 시크릿에서 키의 이름을 정의합니다.
password.secret String   Kubernetes Secret에서 끌어올리는 PostgreSQL의 password.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의 서비스(hostname)로 템플릿화합니다. 이는 Gitaly를 전체 GitLab 차트의 일부로 사용할 때 편리합니다.
port Integer 8075 Gitaly 서버에 연결할 포트 번호입니다.
authToken.key String   authToken을 포함하고 있는 비밀 키의 이름입니다.
authToken.secret String   가져올 Kubernetes Secret의 이름입니다.

지틀리 메트릭스

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

차트 전역 기본값

값이 pod별로 제공되지 않은 경우 차트 전반에 걸쳐 사용될 기본값은 다음과 같습니다.

이름 유형 기본값 설명
concurrency Integer 25 동시에 처리할 작업 수입니다.
timeout Integer 4 Sidekiq 셧다운 타임아웃입니다. Sidekiq가 TERM 시그널을 받은 후 강제로 프로세스를 종료하기 전의 시간(초)입니다.
memoryKiller.checkInterval Integer 3 메모리 체크 간격(초)입니다.
memoryKiller.maxRss Integer 2000000 지연된 셧다운이 트리거될 최대 RSS로 표현된 킬로바이트 단위의 값입니다.
memoryKiller.graceTime Integer 900 트리거된 셧다운 이후 기존 작업이 완료될 때까지 대기해야 하는 시간으로 표현된 시간(초)입니다.
memoryKiller.shutdownWait Integer 30 트리거된 셧다운 이후 기존 작업이 완료될 때까지 대기하는 시간으로 표현된 시간(초)입니다.
minReplicas Integer 2 최소 pod 복제본 수입니다.
maxReplicas Integer 10 최대 pod 복제본 수입니다.
note
Sidekiq 메모리 킬러에 대한 자세한 문서는 Linux 패키지 문서에서 제공됩니다.

pod별 설정

pods 선언은 각 워커 pod의 모든 속성을 선언하기 위한 것으로, 이들은 개별 ConfigMap을 갖는 Deployment로 템플릿화될 것입니다.

note
설정은 모든 큐를 모니터링하도록 기본의 단일 pod을 포함하도록 기본적으로 설정되어 있습니다. pod 섹션을 변경하면 기본 pod을 덮어쓰기 할 뿐, 기본 pod에 새로운 pod을 추가하지는 않습니다.
이름 유형 기본값 설명
concurrency Integer   동시에 처리할 작업 수입니다. 제공되지 않은 경우 차트 전역 기본값에서 가져옵니다.
name String   이 pod의 DeploymentConfigMap의 이름으로 사용됩니다. 짧게 유지되어야 하며 어떠한 두 항목 사이에도 중복되어서는 안 됩니다.
queues String   아래 참조.
timeout Integer   Sidekiq 셧다운 타임아웃입니다. Sidekiq가 TERM 시그널을 받은 후 프로세스를 강제로 종료하기 전의 시간(초)입니다. 제공되지 않은 경우 차트 전역 기본값에서 가져옵니다. 이 값은 terminationGracePeriodSeconds보다 반드시 작아야 합니다.
resources     각 pod마다 자신의 resources 요구 사항을 제시할 수 있으며, 이는 제공되는 경우 해당 pod을 위해 생성된 Deployment에 추가됩니다. 이는 Kubernetes 문서와 일치합니다.
nodeSelector     각 pod은 제공되는 경우 해당 pod을 위해 생성된 Deployment에 추가될 nodeSelector 속성을 설정할 수 있습니다. 이 정의는 Kubernetes 문서와 일치합니다.
memoryKiller.checkInterval Integer 3 메모리 체크 간격(초)입니다.
memoryKiller.maxRss Integer 2000000 주어진 pod의 최대 RSS를 무시합니다.
memoryKiller.graceTime Integer 900 주어진 pod에 대한 트리거된 셧다운 이후 대기해야 하는 시간을 무시합니다.
memoryKiller.shutdownWait Integer 30 주어진 pod에 대한 트리거된 셧다운 이후 존재하는 작업이 완료될 때까지 대기해야 하는 시간을 무시합니다.
minReplicas Integer 2 최소 pod 복제본 수입니다.
maxReplicas Integer 10 최대 pod 복제본 수입니다.
maxUnavailable Integer 1 사용 불가능한 pod의 최대 수의 제한입니다.
podLabels Map {} 보충적인 pod 라벨입니다. 선택기 용이 아닙니다.
strategy   {} 배포에 사용되는 업데이트 전략을 구성할 수 있습니다.
extraVolumes String   주어진 pod을 위해 추가 볼륨을 구성합니다.
extraVolumeMounts String   주어진 pod을 위해 추가 볼륨 마운트를 구성합니다.
priorityClassName String "" pod 우선 순위를 제어하기 위해 사용되는 pod의 priorityClassName을 구성할 수 있습니다.
hpa.customMetrics Array [] 원하는 복제본 수를 계산하는데 사용할 사양을 포함합니다(targetAverageUtilization로 구성된 평균 CPU 이용률의 기본 사용에 재정의됩니다).
hpa.cpu.targetType String AverageValue 오토 스케일링 CPU 대상 유형을 덮어쓰며, 반드시 Utilization 또는 AverageValue이어야 합니다.
hpa.cpu.targetAverageValue String 350m 오토 스케일링 CPU 대상 값을 덮어쓰며, 반드시 Utilization 또는 AverageValue이어야 합니다.
hpa.cpu.targetAverageUtilization Integer   오토 스케일링 CPU 대상 이용률을 덮어쓰며, 반드시 Utilization 또는 AverageValue이어야 합니다.
hpa.memory.targetType String   오토 스케일링 메모리 대상 유형을 덮어쓰며, 반드시 Utilization 또는 AverageValue이어야 합니다.
hpa.memory.targetAverageValue String   오토 슼일링 메모리 대상 값을 덮어쓰며, 반드시 Utilization 또는 AverageValue이어야 합니다.
hpa.memory.targetAverageUtilization Integer   오토 스케일링 메모리 대상 이용률을 덮어쓰며, 반드시 Utilization 또는 AverageValue이어야 합니다.
hpa.targetAverageValue String   폐기예정 오토 스케일링 CPU 대상 값을 덮어쓰며 반드시 Utilization 또는 AverageValue이어야 합니다.
keda.enabled Boolean false KEDA 활성화를 덮어씁니다.
keda.pollingInterval Integer 30 KEDA 폴링 간격을 덮어씁니다.
keda.cooldownPeriod Integer 300 KEDA 쿨다운 기간을 덮어씁니다.
keda.minReplicaCount Integer   KEDA 최소 복사본 수를 덮어씁니다.
keda.maxReplicaCount Integer   KEDA 최대 복사본 수를 덮어씁니다.
keda.fallback Map   KEDA 대체 구성을 덮어씁니다.
keda.hpaName String   KEDA HPA 이름을 덮어씁니다.
keda.restoreToOriginalReplicaCount Boolean   원래 복사본 수를 복원하는 것을 덮어씁니다.
keda.behavior Map   KEDA HPA 동작을 덮어씁니다.
keda.triggers Array   KEDA 트리거를 덮어씁니다.
extraEnv Map   노출할 추가 환경 변수 디렉터리입니다. 차트 전역값은 이 값에 Merge되며 pod에서 가져오는 값이 우선합니다.
extraEnvFrom Map   노출할 기타 데이터 소스에서 추가 환경 변수 디렉터리입니다.
terminationGracePeriodSeconds Integer 30 pod이 정상적으로 종료되어야 하는 시간(초)입니다.

대기열

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 라우팅 규칙 설정을 참조하세요.

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, 별도의 Redis 인스턴스를 사용하는 내보내기 작업에 대한 Sidekiq pod, 그리고 나머지 모든 작업에 대한 다른 pod를 사용하여 Sidekiq 구성의 전체 예시입니다.

...
global:
  appConfig:
    sidekiq:
      routingRules:
      - ["feature_category=importers", "import"]
      - ["feature_category=exporters", "export", "queues_shard_extra_shard"]
      - ["*", "default"]
  redis:
    redisYmlOverride:
      queues_shard_extra_shard: ...
...
gitlab:
  sidekiq:
    pods:
    - name: import
      queues: import
    - name: export
      queues: export
      extraEnv:
        SIDEKIQ_SHARD_NAME: queues_shard_extra_shard # global.redis.redisYmlOverride의 키와 일치하도록 설정
    - name: default
...

networkpolicy 구성

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

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

네트워크 정책 예시

Sidekiq 서비스는 활성화된 경우 Prometheus 익스포터에 대한 Ingress 연결만 요구하며 일반적으로 다양한 위치로부터의 Egress 연결이 필요합니다. 이 예시에는 다음과 같은 네트워크 정책이 추가됩니다.

  • TCP 10.0.0.0/8의 네트워크에서의 모든 Ingress 요청은 메트릭 익스포팅을 위해 허용됩니다.
  • UDP 10.0.0.0/8의 네트워크로의 모든 Egress 요청은 DNS를 위해 허용됩니다.
  • TCP 10.0.0.0/8의 네트워크로의 모든 Egress 요청은 PostgreSQL을 위해 허용됩니다.
  • TCP 10.0.0.0/8의 네트워크로의 모든 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/8
        ports:
        - port: 5432
          protocol: TCP
      - to:
        - ipBlock:
            cidr: 10.0.0/8
        ports:
        - port: 6379
          protocol: TCP
      - to:
        - ipBlock:
            cidr: 0.0.0.0/0
            except:
            - 10.0.0.0/8

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가 리소스를 축소할 최소 수의 레플리카, minReplicas의 기본값으로 설정됨
maxReplicaCount 정수   KEDA가 리소스를 확장할 최대 수의 레플리카, maxReplicas의 기본값으로 설정됨
fallback   KEDA 대체 구성, 자세한 내용은 설명서 참조
hpaName 문자열   KEDA가 생성할 HPA 리소스의 이름, keda-hpa-{scaled-object-name}의 기본값으로 설정됨
restoreToOriginalReplicaCount 부울린   ScaledObject가 삭제된 후 대상 리소스를 원래 레플리카 수로 복원해야 하는지 여부
behavior   확장 및 축소 동작에 대한 사양, hpa.behavior의 기본값으로 설정됨
triggers 배열   대상 리소스의 스케일링을 활성화할 트리거 디렉터리, hpa.cpuhpa.memory에서 계산된 기본값으로 설정됨