CDK8S를 사용하여 Kubernetes 사용자 지정 리소스용 AWS 컨트롤러 생성
추상적인
Answer : 모든 ACK 컨트롤러는 특정 CR을 감시하며 cdk8s를 사용하여 해당 리소스를 생성할 수 있습니다. 두 프로젝트는 서로를 보완합니다. cdk8s는 Kubernetes 리소스를 생성할 수 있으며 ACK는 해당 리소스를 사용하여 AWS 인프라를 생성합니다.
목차
🚀 전제 조건
projen은 플러스
🚀 cdk8s-app projen 초기화
- You can just init cdk8s project using
cdk8s init typescript-app
but following is used projen to mange configuration through code - Init
cdk8s-app-ts
with projen in typescript.
⚡ $ projen new cdk8s-app-ts --projenrc-ts
- cdk8s import
⚡ $ cdk8s import --language typescript --output src/imports
Importing k8s v1.22.0...
Importing resources, this may take a few moments...
k8s
🚀 ACK CRDS를 CDK8S API로 가져오기
⚡ $ cdk8s import https://raw.githubusercontent.com/aws-controllers-k8s/s3-controller/main/helm/crds/s3.services.k8s.aws_buckets.yaml --output src/imports/
Importing resources, this may take a few moments...
s3.services.k8s.aws
s3.services.k8s.aws/bucket
rds-controller crds , 가져온 후
rds.services.k8s.aws.ts
crds에 있는 모든 CRDS에 해당 이름이 할당되므로 파일 이름을 rds.services.db.instance.k8s.aws.ts
에서 rds-controller
로 바꿉니다. ⚡ $ cdk8s import https://raw.githubusercontent.com/aws-controllers-k8s/rds-controller/main/helm/crds/rds.services.k8s.aws_dbinstances.yaml --output src/imports/
Importing resources, this may take a few moments...
rds.services.k8s.aws
rds.services.k8s.aws/dbinstance
⚡ $ mv src/imports/rds.services.k8s.aws.ts src/imports/rds.services.db.instance.k8s.aws.ts
rds.services.k8s.aws.ts
에서 rds.services.subnet.group.k8s.aws.ts
로 변경 ⚡ $ cdk8s import https://raw.githubusercontent.com/aws-controllers-k8s/rds-controller/main/helm/crds/rds.services.k8s.aws_dbsubnetgroups.yaml --output src/imports/
Importing resources, this may take a few moments...
rds.services.k8s.aws
rds.services.k8s.aws/dbsubnetgroup
⚡ $ mv src/imports/rds.services.k8s.aws.ts src/imports/rds.services.subnet.group.k8s.aws.ts
🚀 지금 코드로 손을 더럽히세요
rds
├── constants.ts
├── db-instance.ts
└── subnet-group.ts
subnet-group.ts
)의 프라이빗 서브넷이 포함된 서브넷 그룹과 사용자 자격 증명을 보관할 비밀 키가 필요합니다. k8s 비밀은 여기 코드를 통해 생성되지 않습니다. db-instance.ts
는 DbInstance
의 사양을 정의합니다.S3
s3
├── constants.ts
└── s3.ts
🚀 빌드 매니페스트
- Just run
yarn build
⚡ $ yarn build
yarn run v1.22.15
warning ../../../package.json: No license field
$ 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.js
Done in 25.90s.
- Output directory
dist
├── rds
│ ├── rds-db-instance.yaml
│ └── rds-subnet-group.yaml
└── s3
└── s3-test-bucket.yaml
- We can now use the
yaml
files to create the AWS infrastructure through ACK
🚀 결론
- Although we have to import ACK CRDS resources for cdk8s API, we can manage k8s manifests through code
🚀 부다오 🚀 팔로우
🚀 AWSome Devops | AWS Community Builder | AWS SA || ☁️ CloudOpz ☁️
붐다오 / 붐다오
Reference
이 문제에 관하여(CDK8S를 사용하여 Kubernetes 사용자 지정 리소스용 AWS 컨트롤러 생성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aws-builders/use-cdk8s-to-create-aws-controllers-for-kubernetes-custom-resources-4542텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)