DevOps, Infra 26

[k6] 성능테스트 도구

1. K6 란? k6를 이용하면 시스템의 성능테스트를 수행할 수 있다. Grafana Lab에서 만든 load testing 툴이다. 최대 성능을 위해 k6 툴 자체는 Go 언어로 작성돼있다. 1.1. K6 install (Linux) sudo apt-get update sudo apt-get install k6 https://github.com/grafana/k6/releases 2. 장점 / 단점 2.1. 장점 친숙한 언어인 JavaScript로 테스트 시나리오를 짤 수 있기 때문에 러닝커브가 낮다. 간단한 CLI 를 제공하며, 이미 사용중인 DevOps Tool 과 함께 사용하기 쉽다. 2.2. 단점 npm 패키지를 사용하려면 번들링 (Bundling) 및 트랜스파일링(transpiling) 이 필..

DevOps, Infra 2023.01.10

[Keycloak] MSA 인증/인가 Open Source Solution Keycloak ?

목차 1. Keycloak 이란? Keycloak은 웹 앱 및 RESTful 웹 서비스를 위한 Single Sign On 솔루션이다. Keycloak의 목표는 애플리케이션 개발자가 조직에 배포한 애플리케이션과 서비스를 쉽게 보호할 수 있도록 보안을 단순화하는 것이다. 2. Keycloak 기능설명 2.1. SSO 사용자는 개별 응용프로그램이 아닌 Keycloak으로 인증한다. 애플리케이션이 로그인 양식, 사용자 인증 및 사용자 저장에 관여하지 않으며 Keycloak에 로그인한 후에는 사용자가 다른 애플리케이션에 액세스하기 위해 다시 로그인 불필요하다. ( 이것은 로그아웃에도 적용된다. Keycloak은 Single Sign-out을 제공하므로 사용자는 Keycloak을 사용하는 모든 응용 프로그램에서 로..

DevOps, Infra 2023.01.05

[ArgoCD]카나리 배포 (Canary Deployment)

1. Rollout 플러그인 설치 # argo-rollouts namespace 생성 kubectl create namespace argo-rollouts # argo-rollouts latest 버전 설치 kubectl apply -n argo-rollouts -f https://github.com/argoproj/argo-rollouts/releases/latest/download/install.yaml Canary 배포를 하려면 ArgoCD Rollout 플러그인 설치가 필요하다. 참고 : ArgoCD Rollouts 2. GitOps 2.1. Rollout.yml Blue Green 배포때 작성했던 Rollout 과 마찬가지로 apiVersion : argoproj.io/v1alpha1 kind:..

DevOps, Infra 2022.12.30

[ArgoCD] 블루그린 배포(Blue Green Deployment)

1. Rollout 플러그인 설치 # argo-rollouts namespace 생성 kubectl create namespace argo-rollouts # argo-rollouts latest 버전 설치 kubectl apply -n argo-rollouts -f https://github.com/argoproj/argo-rollouts/releases/latest/download/install.yaml Blue Green 배포를 하려면 ArgoCD Rollout 플러그인 설치가 필요하다. 참고 : ArgoCD Rollouts 2. GitOps 2.1. Rollout.yml apiVersion : apps/v1 대신 argoproj.io/v1alpha1를 사용한다. kind : Deployment 대..

DevOps, Infra 2022.12.30

[ArgoCD] 롤링 배포 (Rolling Deployment)

1. GitOps 1.1. deployment 1. minReadySeconds 설정 spec.minReadySeconds은 pod의 status가 ready가 될 때까지의 최소 대기시간이다. pod가 실행되고나서 .spec.minReadySeconds에 설정된 시간동안은 트래픽을 받지 않는다. 2. Pod Anti-affinity 설정 이 설정은 pod가 여러 node 에 균일하게 배포되는것을 보장한다. 만약 replicas를 3으로 설정하였는데 모두 하나의 node에 배포되고 해당 node가 장애로 다운된다면 해당 서비스 또한 당분간 아예 서비스가 되지 않는다. 하지만 Pod Anti-affinity 설정으로 최대한 동일한 pod가 같은 node에 배포되는것을 방지하여 장애에 강한 서비스를 만들 수 ..

DevOps, Infra 2022.12.30

[skaffold] window 에 설치한 skaffold Trouble Shooting

WSL 에 Skaffold 를 설치했을때 나타난 issue 입니다. WSL 에 아래 명령어로 Skaffold 를 설치했다. # skaffold 설치 curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/v2.0.0/skaffold-linux-amd64 # skaffold 명령어를 모든 user 가 사용할수 있도록 이동 sudo install skaffold /usr/local/bin/ 10:35:01 ubuntu@DESKTOP-BHD5HLL ~ → which skaffold /usr/local/bin/skaffold Global Skaffold Config File 10:35:00 ubuntu@DESKTOP-BHD5HLL .skaffold..

DevOps, Infra 2022.12.29

[ArgoCD] 무중단 배포 전략

ArgoCD 의 무중단 배포 전략은 3가지가 있다. 롤링 배포 (Rolling Deployment) 블루/그린 배포 (Blue/Green Deployment) 카나리 배포 (Canary Deployment) 본문에서는 3가지 배포 전략의 방식과 장단점을 설명한다. 목차 1. 롤링 배포 (Rolling Deployment) 1.1. 배포 방식 롤링 배포는 이전 버전을 새 버전으로 천천히 교체한다. 배포되어있는 Pod 들을 동시에 업데이트 하는게 아닌 1개, 2개 등 퍼센테이지를 정해 교체해 나가는 방식이다. Kubernetes 에서도 지원 하는 기존 배포 전략이다. 1.2. 장단점 장점 서버 리소스 제약이 있을 경우 유용하다. 인스턴스마다 차례로 배포를 진행하기 때문에 상황에 따라 손쉽게 롤백(Roll B..

DevOps, Infra 2022.12.29

[ArgoCD] ArgoCD Install

목차 1. GitOps GitOps 는 Weaveworks 라는 회사에서 처음 쓰기 시작했다. Git 저장소에 저장된 쿠버네티스 매니페스트 파일이 쿠버네티스 클러스터에 똑같이 반영된다. Human Error 를 줄일 수 있어 안정성이 보장된다. 변경사항을 커밋 로그및 히스토리로 확인 할 수 있어 장애 발생시 빠르게 롤백할 수 있고 버전 관리 가 된다. 누가 수정했는지 코드로 확인할 수 있다. 매니페스트가 정의되어 있는 Git 저장소가 변경되면, Git 저장소의 내용과 쿠버네티스 클러스터를 동기화 해주는 에이전트가(=ArgoCD) 변경 내역을 쿠버네티스 클러스터에 반영해 주게 되는 것입니다. 인프라 관리를 점차 코드를 통해 관리하는 추세인데 GitOps 또한 그런 맥락으로 이해할 수 있을 것 같다. IaC..

DevOps, Infra 2022.12.28

[Jenkins] 빌드 자동화 - webhook

Github 에 코드 Push만 해도 Jenkins 를 통해 자동 빌드 처리 하는 방법은 Webhook 과 Polling 방식이 있다. 본문에서는 Webhook 을 설명한다. Webhook 이란? Webhook(웹훅)이란, 특정 이벤트가 발생하였을 때 타 서비스나 응용 프로그램으로 알림을 보내는 기능입니다. 목차 선행 사항 ● Jenkins 설치 ● Jenkins > Github plugin 설치 ● Jenkins > Github credential 등록 1. ngrok Jenkins 가 http://localhost:18080 으로 떠있는 상황 만약 Jenkins 가 로컬이 아니라 외부접속이 가능한 환경에 설치돼있다면 Skip 해도 되는 절차이다. ngrok - 로컬 컴퓨터의 개발 환경을 인터넷으로 공..

DevOps, Infra 2022.12.28