- CI
- Continuous Integration
- 소스코드의 지속적인 빌드 및 테스트를 자동화 하여, 상용서비스에 버그를 예방하고 생산성을 높인다.
- CircleCI
- 1) 소스코드 레파지토리(github, bitbucket, ... ) 연동
- 3rd Party OAuth 등으로 연동을 하면 됨.
- 예) Login with GitHub -> 해당 'My깃헙repo' 및 'Org깃헙repo' 와 연동
- 2) Project 셋업 및 Organization 셋팅
- 레파지토리의 원하는 프로젝트를 지정하면서 CI 가 시작 됨.
- 해당 project의 각종 (env-var, ssh-key, ...) setting 가능.
- 예) Project Settings -> SSK Keys -> 해당 레파지토리의 Checkout 용 Deploy Key 등록
- 조직적으로 사용 할 셋팅
- Contexts : 보안이 필요한 환경변수 (GITHUB_비번, QUAY_비번, ... ) 등등
- VCS : ...
- Security : ...
- 레파지토리의 원하는 프로젝트를 지정하면서 CI 가 시작 됨.
- 3) .circleci/config.yaml 작성
- // APP깃 푸쉬 -> [circleci]-> 도커 빌드&푸쉬 -> Config깃 클론&수정&푸쉬 <-> [argo cd]-> ...
- // APP깃 태깅 -> [circleci]-> 도커 풀&태깅-> Config깃 클론&수정&푸쉬 <-> [argo cd]-> ...
- version :
- executors :
- {익스큐터명}
- environment :
- 사용할 환경변수 정의
- 예) IMAGE_NAME, DOCKERFILE_PATH, RECIPE_URL, CONFIG_XXX_ROOT, ...
- environment :
- {익스큐터명}
- orbs :
- // 하단에 따로 설명...
- jobs :
- {잡이름}
- executor : {익스큐터명}
- docker :
- - image : // 해당작업 수행환경 이미지 (특정한 커맨드 등등이 사용 해야 할 때!)
- steps :
- - checkout // 해당 본 깃소스 체크아웃
- - run :
- name :
- command : |
- 예) docker login, build, tag, push, ...
- 예) git clone ... /recipe , ...
- 예) cd /recipe/.../kustomization.yaml , ...
- 예) kustomize edit set image , ...
- $CIRCLE_SHA1, $CIRCLE_TAG, ... 등등 CircleCI 자체 환경변수(?) 도 활용 가능!
- {잡이름}
- workflows :
- version :
- {명명}
- jobs :
- - {잡이름}
- context : "organization 셋팅"
- filters : "브렌치 및 태그 지정"
- requires : ...
- - {잡이름2}
- ...
- - {잡이름}
- jobs :
- ...
- orbs)
- https://circleci.com/developer/orbs
- https://circleci.com/docs/2.0/orb-intro
- CircleCi의 config.yaml을 템플릿화 하여~ 아주 쉽게 타 파트너사가 제시하는 CI/CD 를 셋팅 할 수 있음!
- 예) aws-sam-serverless
-
# 기본적으로 'AWS 크리덴셜 콘텍스트'으로 권한을 확보 해아함! # Project Settings -> Advanced Settings -> 파이프라인 enalbe 해야한다네? # 띠빠끄 "sam:" 정확히쓰는지몰라서... 개삽질함... version: 2.1 orbs: sam: circleci/aws-sam-serverless@3.0 workflows: test: jobs: - sam/deploy: context: {AWS 크리덴셜} name: deploy-dev s3-bucket: {SAM 패키징 버킷} stack-name: stack-???-Dev template: ./template.yaml filters: branches: only: main
-
- ex)
- https://ddii.dev/devops/circleci
- AWS EKS 배포
- 개발한 컨테너 이미지를 DockerFile으로 빌드하고 -> AWS ECR 푸쉬한다
- eksctl 으로 AWS EKS 클러스터를 생성한다.
- kubectl 으로 ...
- AWS EKS 배포
- https://daddyprogrammer.org/post/10541/aws-lambda-circleci-auto-deploy
- AWS Lambda 배포
- ...
- AWS Lambda 배포
- https://ddii.dev/devops/circleci
- kustomize
- kustomization.yaml 파일을 이용해, kubernetes 오브젝트를 변경(customize)하는 툴.
- https://kubernetes.io/ko/docs/tasks/manage-kubernetes-objects/kustomization
- https://kustomize.io
- 예)
- kubectl kustomize <kustomization_directory> // 리소스 확인
- kubectl apply -k <kustomization_directory> // 리소스 적용
- kubectl get 혹은 describe -k <kustomization_directory> // 리소스 조회
- kubectl diff -k <kustomization_directory> // 매니페스트가 적용된 경우의 클러스터 상태와 비교
- kubectl delete -k <kustomization_directory> // 리소스 삭제
- ...
- kustomization.yaml 파일을 이용해, kubernetes 오브젝트를 변경(customize)하는 툴.
- kustomization.yaml 작성
- ...
- kustomize cli 명령어
- ...
-끝-
'DevOps' 카테고리의 다른 글
git-sync (0) | 2021.06.26 |
---|---|
Argo CD (0) | 2020.11.23 |
K8S 애플리케이션 (0) | 2020.07.19 |
K8S 리소스 (0) | 2020.07.17 |
Dockerfile (0) | 2020.07.09 |