CDK8S를 사용하여 Kubernetes 사용자 지정 리소스용 AWS 컨트롤러 생성

8059 단어 cloudopzcdk8sawsack

추상적인


  • 질문이 있습니다. ACK는 cdk8s과 어떤 관련이 있습니까?

  • Answer : 모든 ACK 컨트롤러는 특정 CR을 감시하며 cdk8s를 사용하여 해당 리소스를 생성할 수 있습니다. 두 프로젝트는 서로를 보완합니다. cdk8s는 Kubernetes 리소스를 생성할 수 있으며 ACK는 해당 리소스를 사용하여 AWS 인프라를 생성합니다.
  • 이 게시물은 cdk8s typescript를 사용하여 ACK의 kubernetes 매니페스트를 생성하는 예를 제공합니다
  • .

    목차


  • Pre-requisite
  • Init cdk8s-app projen
  • Import ACK CRDS As CDK8S API
  • Get your hands dirty with code now
  • Build manifest
  • Conclusion



  • 🚀 전제 조건

  • This post expects you have knowledge of ACK 및 .
  • cdk8s
  • 에서 생성된 매니페스트를 테스트하기 위해 기반으로 할 수 있습니다.

  • 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로 가져오기

  • s3-controller crds

  •   ⚡ $ 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 서브넷 그룹, 파일 이름을 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

  •   rds
      ├── constants.ts
      ├── db-instance.ts
      └── subnet-group.ts
    

  • DBInstance에는 EKS VPC(subnet-group.ts)의 프라이빗 서브넷이 포함된 서브넷 그룹과 사용자 자격 증명을 보관할 비밀 키가 필요합니다. k8s 비밀은 여기 코드를 통해 생성되지 않습니다.
  • db-instance.tsDbInstance의 사양을 정의합니다.

  • 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 ☁️






    붐다오 / 붐다오


    좋은 웹페이지 즐겨찾기