DevOps, Infra 26

[인증/인가] Keycloak User Storage SPI

Service Provider Interfaces (SPI) SPI 는 사용자가 상황에 맞게 Keycloak 의 기능중 일부를 커스텀하여 사용할 수 있도록 Keycloak 에서 제공하는 모듈이다. SPI 는 Thema (로그인,회원가입 화면) , User Storage SPI , Authentication SPI, Vault SPI 등 여러 종류가 있다. 사용 가능한 SPI 는 Keycloak Admin Console 에서 확인할 수 있다. 가장 단순한 형태의 사용자 지정 공급자는 하나 이상의 서비스 구현을 포함하는 표준 jar 파일입니다. 사용가능한 SPI Name Description org.keycloak.authentication.AuthenticatorFactory 사용자 또는 클라이언트 애플리..

DevOps, Infra 2024.04.10

[ArgoCD] App of Apps 패턴으로 서비스 배포하기

개요 argocd app of apps 공식문서 서비스는 GitOps Repo 와 ArgoCD 를 이용하여 자동 배포, Declarative Setup 를 달성했다. 그러나 ArgoCD 에 Application 을 생성할때는 UI 클릭을 통해 생성한다. 다른 클러스터로 생성돼있는 Application 을 모두 이전해야한다면 Web UI 클릭으로 실수 없이 가능할까? Application 을 Web UI 로 수정하다보면 수정 기록은 어디서 확인 할 수 있으며, 해당 관리자가 변경될때는 history 관리는 어떻게 할것인가? App of Apps 패턴은 ArgoCD 를 이용하여 여러 클러스터에 동일 어플리케이션을 배포할 수 있는 장점과 GitOps 의 장점을 100% 활용할 수 있다. App of Apps ..

DevOps, Infra 2023.11.21

[ArgoCD] helm chart 배포하는 방법

개요 ArgoCD 에서 helm차트를 release방법을 설명합니다. ArgoCD Application 은 application 파일을 kubectl 명령어로 생성합니다. 1. helm repo 사용 Application CRD # application.yaml apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: nginx namespace: argocd finalizers: - resources-finalizer.argocd.argoproj.io spec: project: default source: repoURL: https://charts.bitnami.com/bitnami chart: nginx targetRevision: "15..

DevOps, Infra 2023.11.12

[CI/CD] Advanced GitLab CI, gitlab-ci.yml

현재 진행중인 프로젝트에서는 CI툴로 gitlab runner 를 helm chart 기반으로 구성하여 eks에 띄워, gitlab ci로 CI 작업을 이행하고 있습니다. gitlab ci 를 사용하며 템플릿 ,공통 yaml 을 구성하며 익힌 팁을 공유합니다. 1. 사전에 정의된 variable GitLab 사전에 정의된 variable 값 사용 (Predefined Variables) CI_COMMIT_BRANCH (커밋 브랜치) , CI_PROJECT_DIR (프로젝트 경로) , CI_PROJECT_NAME (프로젝트 이름) 을 비롯해 CI_COMMIT_TITLE (커밋 메세지) 등은 사전에 gitlab에 정의된 variable들인데 이를 잘 활용하면 프로젝트 정보를 코드에서 쉽게 사용할 수 있습니다..

DevOps, Infra 2023.09.14

Lens 대신 k9s 를 사용해보자

Lens 를 사용하고 있었는데, (LENS는 쿠버네티스를 모니터링 및 관리할 수 있는 IDE이다.) 개발중 마우스에 손이 가는걸 매우 귀찮아하는 타입이고, 노트북을 옮겨다닐때마다 로그인을 해야하는 것도 귀찮아서 k9s 를 쓰기 시작했다. k9s Kubernetes 클러스터의 Pod, Service, Deployment 등의 리소스를 실시간으로 모니터링 특정 오브젝트를 검색하고 필터링하여 보기 쉽게 표시 노드, 네임스페이스, 레이블 등의 Kubernetes 오브젝트를 시각화하고 관리 k9s 설치 # mac brew install k9s # wsl (window) or ubuntu # 최신버전 확인 : https://github.com/derailed/k9s/releases wget https://githu..

DevOps, Infra 2023.07.09

Linux 에서 정상적으로 프로세스를 중지하는 방법, Graceful Shutdown

Graceful Shutdown ? IT 쪽에서 graceful 의 의미는 "(유예를 가지고 있는) 부드러운/깔끔한/적합한"의미를 가지고 있다. 그래서 graceful shutdown 은 "(유예를 두는) 깔끔한 정상 종료", 혹은 의역하면 "깔끔하게 정상적인 종료를 하기위해 기다려줄 수 있는 것"의 늬앙스를 담아서 해석하는게 맞다. 그러므로 graceful close, graceful shutdown은 Process 의 요청 처리 과정에 있어서 유예 기간(다른 말로 타임아웃으로 이해해도 된다.)을 두고 앞서 전송된 요청 모두가 정상적으로 처리된 뒤에 깔끔하게 끊는 것을 말한다. 참고 : 오류를 잡자 : TCP에는 우아한 종료라는 것은 없다. SIGTERM 과 SIGKILL 의 차이점 Graceful S..

DevOps, Infra 2023.03.13

[Ansible] include vs import

1. 요약 import 는 정적 (Static) 이며, 플레이북 (playbook) 이 Parsing 될 때 사전에 처리되어 일찍 에러를 확인할 수 있음 include 는 동적 (Dynamic) 으로, 플레이북 실행 중에 발생하는 대로 처리되므로 해당 task 에 도달했을때 에러를 발견할 수 있음 2. import tasks --- # main.yml - name: "[Jenkins] Install Jenkins" import_tasks: jenkins.yml - name: "[Jenkins] Set jenkins options" import_tasks: tune.yml 복잡한 작업을 여러 Task 로 나눌수있고, Task 는 나열된 순서 대로 실행된다. --- # main.yml tasks: - imp..

DevOps, Infra 2023.03.09

vagrant multi machine (multi vm)

VM 을 1개만 띄워서 테스트 하는경우 간단하지만, 실제 서버에 가깝게 구현하기 위해 VM 을 여러개 띄워 테스트해야할 상황이 많다. host pc 사양이 CPU intel core i7 RAM 32g 일때 무리 없이 사용했던 Vagrantfile 이다. 1. Vagrantfile box 이미지 : ubuntu/focal64 (Ubuntu 20.04 LTS) 2. vagrant 기동 PS C:\_DEV\_vagrant_workspace\vm> vagrant up 3. vagrant 간단한 명령어 # vagrant 접속 # vagrant ssh (vm host name) vagrant ssh vm-1 vagrant ssh vm-2 # vm-1 을 따로 기동시키고 싶을 경우 vagrant up vm-1 # ..

DevOps, Infra 2023.02.24

베이그런트 (Vagrant) Cheat Sheet

Vagrant Cheat Sheet vagrant 명령줄에서 입력하면 사용 가능한 모든 명령목록을 소개한다. ✔ 이 명령을 실행 할때 Vagrantfile 과 동일한 디렉토리에 있는지 확인해야한다. Creating a VM vagrant init 지정된 기본 이미지를 사용하지않고, Vagrantfile 및 ./.vagrant 디렉토리로 Vagrant 를 초기화한다. vagrant up 을 수행하기 전에 Vagranfile 에서 기본 이미지를 지정해야한다. vagrant init Vagrant 를 특정 box 로 초기화한다. 원하는 box 이미지는 public Vagrant box catalog 에서 확인 할수 있다. For example, vagrant init ubuntu/focal64 Starting..

DevOps, Infra 2023.01.24

[DevOps] Ansible 이란?

1. Ansible 이란? Ansible (앤서블)은 여러 개의 서버를 효율적으로 관리할 수 있게 해주는 환경 구성 자동화 도구이다. IaC (Infrastrictire as Code) 를 지향하는 오픈소스 2. Ansible (앤서블) 요소 인벤토리 (Inventory) 어디서 수행할 것인지 플레이북 (Playbook) 무엇을 수행할 것인지 모듈 (Module) 어떻게 수행할 것인지 2.1. 인벤토리(Inventory) 인벤토리는 앤서블에 의해 제어될 대상을 정의한다. ini 형식과 yaml 형식이 있으니 편한 문법을 선택하여 사용하면된다. 여러 서버들의 SSH 접근 IP, 포트 , 리눅스 사용자와 같은 접속정보를 아래와 같이 정의한다. ini 형식 master ansible_host=192.168.0..

DevOps, Infra 2023.01.17