CDK8S를 사용하는 코드로서의 Keda ScaledObject
8533 단어 cdk8scloudopzkedakubernetes
추상적인
keda은 Kubernetes Event-driven Autoscaling이며 현재 현명하게 사용되고 있습니다. 이 블로그에서는 CDK8S typescript를 사용하여 Keda scaledobject CRD를 코드로 생성하는 방법을 제공합니다.
목차
🚀 전제 조건
🚀 케다 개요
🚀 Keda CRD 가져오기
- Keda does not provide its CRDs separately so we can found the manifest in GH release section. Here I import the current latest version of keda v2.8.0 and out the
imports
folder insrc/imports
⚡ $ cdk8s import https://github.com/kedacore/keda/releases/download/v2.8.0/keda-2.8.0.yaml --output src/imports/
------------------------------------------------------------------------------------------------
A new version 2.0.88 of cdk8s-cli is available (current 2.0.13).
Run "npm install -g cdk8s-cli" to install the latest version on your system.
For additional installation methods, see https://cdk8s.io/docs/latest/getting-started
------------------------------------------------------------------------------------------------
Importing resources, this may take a few moments...
keda.sh
keda.sh/clustertriggerauthentication
keda.sh/scaledjob
keda.sh/scaledobject
keda.sh/triggerauthentication
- Import result
⚡ $ tree src/imports/
src/imports/
└── keda.sh.ts
0 directories, 1 file
🚀 코드 작성
- Overview of keda scaledObjects in this post
1. 크론 - 크론 일정에 따라 애플리케이션을 확장합니다.
2. PostgreSQL - PostgreSQL 쿼리를 기반으로 애플리케이션을 확장합니다.
targetQueryValue: '1.5'
- 위의 계산 결과를 이 대상 값으로 나누어 확장할 포드 수를 결정합니다3. CPU - CPU 메트릭스를 기반으로 애플리케이션 확장
CPU 사용률이 80%보다 높을 때 작업자 프로비저닝을 보장하므로 선택 사항입니다.
TriggerAuthentication
. 자격 증명은 airflow-secret
네임스페이스 내의 K8S 비밀airflow
에서 가져옵니다. const pgAuth = new TriggerAuthentication(this, 'KedaPostgresAuthentication', {
metadata: {
name: 'keda-airflow-postgresql-auth',
namespace: 'airflow',
},
spec: {
secretTargetRef: [{
parameter: 'password',
name: 'airflow-secret',
key: 'postgresql-password',
}],
},
});
pollingInterval
: 각 트리거를 확인하는 간격입니다. 기본적으로 KEDA는 30초마다 모든 ScaledObject의 각 트리거 소스를 확인합니다. 따라서 공기 흐름 데이터베이스에 대한 쿼리 연결/워크로드를 줄이려면 이 값을 관리해야 합니다. cooldownPeriod
: 자원을 다시 0으로 조정하기 전에 마지막 트리거가 활성으로 보고된 후 대기하는 기간입니다. 🚀 코드에서 keda scaledobjects 빌드
- Source code:
⚡ $ tree src/
src/
├── imports
│ └── keda.sh.ts
├── keda-airflow.ts
└── main.ts
1 directory, 3 files
- Build resource
⚡ $ npx projen build
👾 build » default | ts-node --project tsconfig.dev.json .projenrc.ts
👾 build » compile | tsc --build
👾 build » post-compile » synth | cdk8s synth
No manifests synthesized
👾 build » test | jest --passWithNoTests --all --updateSnapshot
No tests found, exiting with code 0
----------|---------|----------|---------|---------|-------------------
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
----------|---------|----------|---------|---------|-------------------
All files | 0 | 0 | 0 | 0 |
----------|---------|----------|---------|---------|-------------------
👾 build » test » eslint | eslint --ext .ts,.tsx --fix --no-error-on-unmatched-pattern src test build-tools projenrc .projenrc.ts
- Manifest yaml file
⚡ $ tree dist/
dist/
└── keda
└── airflow-keda-so.yaml
1 directory, 1 file
🚀 신청 및 테스트
# k apply -f
# k get so -n airflow
NAME SCALETARGETKIND SCALETARGETNAME MIN MAX TRIGGERS AUTHENTICATION READY ACTIVE FALLBACK AGE
airflow-worker-1 apps/v1.StatefulSet airflow-worker 2 12 cron keda-airflow-postgresql-auth True True False 2d21h
# k get hpa -n airflow
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
keda-hpa-airflow-worker-1 StatefulSet/airflow-worker 500m/1 (avg), 500m/1 (avg) + 2 more... 2 12 2 2d21h
🚀 결론
- Within the Scaledobject class, you can jump to definition to understand the meaning of each properties and also know which required/optional attributes.
- We can create a custom construct and base on that to provision multiple KEDA scaledobjects with customize specs/meta such as min/max/desired replicas, triggers, trigger authentication, etc.
Reference
이 문제에 관하여(CDK8S를 사용하는 코드로서의 Keda ScaledObject), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aws-builders/keda-scaledobject-as-code-using-cdk8s-268c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)