PaaS/CI CD 50

Github Actions) AutoScaling Runner Controller 아키텍처 설명

공식가이드 : https://docs.github.com/ko/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/quickstart-for-actions-runner-controller 공식설명서 : https://docs.github.com/en/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/about-actions-runner-controller#about-actions-runner-controller 기존 Runner 방식과 다른점은 Workflow가 동시에 발생하더..

PaaS/CI CD 2024.01.28

Github Actions) Github-hosted와 self-hosted runner의 차이점

Github-hosted Runner는 간단하고 빠르게 Workflow를 운영할 수 있다. 반면에 self-hosted Runner는 당신의 환경에 맞추어 커스터마이징할수 있는 여지가 많다. GitHub-hosted runners Github으로부터 관리되는 가상환경이며 매 Job 실행마다 Clean한 인스턴스가 제공된다. 무료로 제공되는 몇분이 있고 그이후에는 분단위로 과금된다. Self-hosted runners Runner에 대한 업데이트는 비활성화하면서도 Runner 어플리케이션만 자동업데이트를 하게된다. 이러한 Runner S/W 업데이트에 대한 자세한 내용은 이 링크를 참조바란다. 그리고 직접 관리하는 로컬머신이나 Cloud 서비스에서 운영하므로 당신은 해당 OS와 관련 S/W에 대한 책임이 ..

PaaS/CI CD 2024.01.03

(Gitlab) Merge Request시 delete source branch가 체크되어 있는 경우

Gitlab에서 Merge Request시에 아래와 같이 Delete source branch ... 가 체크되어 있는 경우가 있다. 만약 조직의 DevOps 정책이 Merge해도 Branch삭제를 하지 않는것이 정책이라면 사용자 실수를 방지하는것이 중요하다. Default로 Delete Source Branch를 띄우고 싶지 않다면 아래와 같은 세팅을 하는 것이 좋다 . [해당 Project]-[General Settings]-[Merge Request] 에서 Enable "Delete source branch" ... 를 비활성화 한다.

PaaS/CI CD 2023.12.14

Gitlab 의 Project내의 특정 파일을 Access Token 만으로 접근하여 다운로드

Shell 이나 CICD Pipeline을 짜다보면 간단하게 특정 Repository의 Single File만 다운로드 받고 싶을때가 있다. 이럴때 사용하면 유용하다. 1. Gitlab에서 계정에 대한 Token을 만든다. [내 Profile]-[Edit profile]-[Access Token]-[Personal Access Token] ※ Access Token을 복사해두자! 2. 해당 Token으로 API가 정상적으로 호출되는지 테스트한다. $ curl --header "PRIVATE-TOKEN: PUT_ACCESSTOKEN_HERE" "http://gitlab.armyost.com/api/v4/personal_access_tokens" 이때 JSON Type으로 Gitlab 계정에 대한 API 토..

PaaS/CI CD 2023.12.08

Github Actions의 Workflow에서 GCP(Google Cloud Platform) 인증받기

AWS와 거의 유사하게 IAM에서 만든 Account에 OIDC 인증이 가능하도록 세팅하는 구조이다. 관련링크 : https://cloud.google.com/blog/products/identity-security/enabling-keyless-authentication-from-github-actions Enabling keyless authentication from GitHub Actions | Google Cloud Blog Authenticate from GitHub Actions to create and manage Google Cloud resources using Workload Identity Federation. cloud.google.com Github Actions 파이프라인과 샘..

PaaS/CI CD 2023.12.07

App of Apps 패턴으로 배포하기. 그리고 나의 생각

App of Apps 패턴이란 어떤 규모의 소프트웨어를 구성하는 모듈들을 모아서 Application으로 정의한다. ※ MSA 로 변화하면서 전체 소프트웨어를 구성하는 독립적인 모듈들이 많아 졌다. 사실 각 요소 어플리케이션은 생명주기를 모듈간 의존성 없도록 독립적으로 가져가는게 맞다. 그러기위해서 MSA를 한 것이 아닌가... 근데 초기 Provisioning은 한꺼번에 해줄 필요는 있어서 App of Apps로 하는게 효율적으로 보인다. 이때 Application이란 하나의 Profile 같은것이다. 아래 공식가이드는 Helm을 기반으로 하였는데, ArgoCD는 Helm 관련한 호환성이 있어서 Helm으로 정의한 소프트웨어 배포도 수월하게 할 수 있다. 필자의 생각으로는 App of Apps Repo..

PaaS/CI CD 2023.11.15

Argo Rollout으로 Canary 배포하기

Argo Rollout을 Canary 전략으로 배포를 설명한다. ArgoCD를 통 아래 Github url로 배포한다. https://github.com/armyost/ArgoRollout GitHub - armyost/ArgoRollout Contribute to armyost/ArgoRollout development by creating an account on GitHub. github.com 1차적으로 blue버전으로 rollout을 배포한다. 처음에는 파란색으로만 서비스가 된다. 두번째로 blue를 green 버전으로 변경한 'rollout-canary'를 ArgoCD에서 다시 'Sync'한다. # AS-IS spec: containers: - name: canary-rollouts-demo ..

PaaS/CI CD 2023.11.15

Argo Rollout으로 Blue/Green 배포하기

ArgoCD 서버 설치부터 Argo Rollout 을 통한 Blue/Green 배포까지 설명한다. Argo Rollout Blue / Green 이벤트 순서 (https://argo-rollouts.readthedocs.io/en/stable/features/bluegreen/) 1. 완전히 사용자에게 런칭되기전 Revision 1은 ActiveService와 PreviewService으로 지명됩니다. 2. 서비스 배포자는 Rollout YAML의 spec.template.spec를 Revision 2의 Image로 변경합니다. 3. 해당 Revision 2 ReplicaSet이 0 Size로 만들어 집니다. 4. PreviewService는 이 Revision 2 ReplicaSet을 가리킵니다. (이..

PaaS/CI CD 2023.11.15

Blue / Green 배포의 라우팅 포인트를 어디로 가져가야 하는가?

Blue / Green 배포는 운영환경 배포에 있어 매우 안정성있는 좋은 전략이다. 요즈음 일반적으로 운영환경으로 사용되는 Public Cloud + k8s 환경에서는 어느 포인트에서 Blue ↔ Green 간 라우팅 포인트를 잡아야 할까? 최상단부터 아래로 내려가며 포인트를 발굴해보자. 1. DNS에서 새로운 LoadBalancer 로 라우팅 Public Cloud가 가장 많이 권장하는 방법이다. LoadBalancer ~ Application 구간을 한벌 새로이 만들기를 권장하고 DNS제공자(Route53)이 LoadBalancer Endpoint를 교체한다. 가중치를 줄 수 있어 손쉽게 Canary 구현이 가능하다. 2. LoadBalancer에서 Target을 변경 AWS의 경우 ALB는 Ingr..

PaaS/CI CD 2023.11.09

CI/CD에서 테스트가 매우 중요해지고 있다.

필자는 글로벌 표준을 볼때 Google, AWS, Netflix Blog를 보곤한다. 요즘 국내 개발자 시장도 그렇고 전반적으로 "테스트"에 관심이 많다. AWS Device Farm은 테스트 용 인프라를 프로비저닝하고 관리하지 않아도 다양한 데스크톱 브라우저 및 실제 모바일 디바이스에서 테스트를 진행하여 웹 및 모바일 앱 품질을 향상시키는 애플리케이션 테스트 서비스이다. 테스트를 통해 여러 데스크톱 브라우저나 실제 디바이스에서 동시에 테스트를 실행함으로써 테스트 도구 실행 속도를 높이고 비디오 및 로그를 생성하여 앱과 관련된 문제를 빠르게 식별할 수 있다. 아래 그림에서 보듯 Deploy하여 QA환경에서 환경별 테스트를 진행한다. (운영은 아닐것이라 생각, Quality Gate를 통과해야 운영배포 지..

PaaS/CI CD 2023.11.09