본문 바로가기
반응형

사이드 프로젝트19

[CI/CD 프로젝트] Gatekeeper를 통한 K8S 정책 관리 GatekeeperGatekeeper는 Kubernetes 클러스터 내에서 정책을 감사하고 시행할 수 있는 도구이다. Open Policy Agent(OPA)와 Rego 언어를 기반으로 하여, Kubernetes 리소스의 표준화된 생성 및 업데이트를 지원한다. Gatekeeper는 정책을 통해 클러스터의 일관성과 보안을 유지하며, 다양한 팀이 리소스를 관리하는 데 있어 통합된 기준을 제공한다.Gatekeeper의 필요성Kubernetes 환경에서 많은 팀이 리소스를 작성할 때, 구성 방식에 차이가 발생할 수 있다. 이러한 차이를 관리하고 일관성을 유지하기 위해 Gatekeeper는 다음과 같은 기능을 제공한다:정책 집행: Gatekeeper는 클러스터 내에서 정책을 준수하지 않는 리소스의 생성 또는 업데.. 2024. 11. 20.
[CI/CD 프로젝트] Ansible을 통한 인프라 관리의 자동화 Ansible 주요 개념Inventory : 인벤토리 파일은 Ansible이 관리할 서버 목록을 정의합니다. 일반적으로 /etc/ansible/hosts 에 위치하며, 그룹으로 서버를 정의할 수 있다.예시:[webservers]server1 ansible_host=192.168.1.1server2 ansible_host=192.168.1.2[dbservers]server3 ansible_host=192.168.1.3Playbook : 하나 이상의 작업(task)을 정의한 YAML 파일. 각 Play는 인벤토리의 특정 호스트나 호스트 그룹에서 실행되며, 다양한 모듈과 함께 사용해 복잡한 자동화 작업을 구성할 수 있다.- name: Install and configure web server hosts: w.. 2024. 11. 20.
[CI/CD 프로젝트] Prometeus + Grafana 를 통한 모니터링 가시성 높이기 Prometheus데이터 수집: Prometheus는 애플리케이션, 서버, 네트워크 장비 등에서 성능 데이터를 수집한다.시계열 데이터 저장: 수집된 데이터는 시계열 데이터베이스에 저장되며, 시간에 따른 변화 추이를 분석할 수 있다.알림 기능: 특정 조건이 충족되면 Alertmanager와 연동하여 알림을 발송해 주는 역할을 한다.Pull 방식: Prometheus는 주로 Pull 방식으로 데이터를 수집하여, 필요할 때 데이터를 직접 가져오는 방식이다.Query Language (PromQL): PromQL이라는 전용 쿼리 언어를 사용하여 데이터를 필터링하거나 집계할 수 있어, 복잡한 분석을 구현할 수 있다.Grafana데이터 시각화: Prometheus나 다른 데이터 소스에서 가져온 데이터를 그래프, 차.. 2024. 11. 20.
[CI/CD 프로젝트] ArgoRollout로 canary배포하기 Canary 배포이전 광부들이 광산에 들어갈 때 이 canary 새를 풀어봐 광산이 안전한지 위험도 테스트를 진행했다.유래와 같이 Canary 배포는 새로운 애플리케이션 버전을 점진적으로 배포하여, 작은 사용자 그룹에게 먼저 제공한 뒤 안정성이 확인되면 전체로 확대하는 배포 방식이다. 이 방식은 배포 시 위험을 줄이고, 문제가 발생했을 때 신속히 롤백할 수 있다는 장점이 있다.Canary 배포Canary 릴리즈: 새로운 버전의 애플리케이션을 소수의 Pod 또는 인스턴스에 배포합니다. 초기에는 전체 트래픽 중 일부만 새로운 버전에 전달한다.( EX. 회사 내부 인력, 베타 테스트 등..) header, cookie로 트래픽을 조절할 수 있어 베타테스트 등에 유용하다.모니터링 및 검증: 새로운 버전이 소수의.. 2024. 11. 20.
[CI/CD 프로젝트] ArgoRollout로 Blue/Green 배포하기 K8S RollingUpdate 한계점k8s는 이미 rolling update를 지원하고 있지만, 배포 속도가 느리고 새버전으로의 트래픽 조절을 하지 못한다. 또한 상태확인이 Readiness Probe로만 이루어 지고 있어 운영환경에 적합하지 않는다. 자동 롤백 기능도 지원하지 않는다.ArgoRolloutArgo Rollouts는 Kubernetes 애플리케이션의 배포를 점진적으로 관리하기 위한 오픈소스 툴이다.Argo 프로젝트의 일부로, Canary 및 Blue-Green 방식과 같은 다양한 롤아웃 전략을 지원하며, 이를 통해 배포 과정에서 안정성을 높이고 리스크를 줄일 수 있습니다. 주로 CD(Continuous Delivery) 환경에서 Kubernetes 네이티브 방식으로 애플리케이션 배포를 세.. 2024. 11. 20.
[CI/CD 프로젝트] ArgoCD를 통한 CD 구성 Argocd 구성 요소1. Application여러 팀에서 사용할 때 어플리케이션의 논리적 그룹을 제공한다.항목:Source: Git 리포지토리와 브랜치, 디렉토리 경로를 설정하여 어떤 Kubernetes 매니페스트를 사용할지를 정의합니다.Destination: 리소스가 배포될 Kubernetes 클러스터와 네임스페이스를 설정한다.Sync Policy: 애플리케이션이 어떻게 배포되고 업데이트될지를 정의하는 정책으로, 자동 또는 수동으로 동기화할 수 있다.2. ProjectProject는 여러 Application을 논리적으로 그룹화하여 관리할 수 있다.특정 클러스터 내에서 리소스를 체계적으로 관리하기 위해 애플리케이션을 논리적으로 묶는 역할을 한다.application은 무조건 한 project에는 포함.. 2024. 11. 20.
[CI/CD 프로젝트] GitAction을 통한 CI 구성 GitHub Actions이란GitHub Actions는 코드 변경 사항에 따라 자동으로 워크플로우(빌드, 테스트, 배포 등)를 실행하는 GitHub의 CI/CD 도구입니다.2. GitHub Actions의 기본 구성 요소Workflow: 하나 이상의 작업을 포함하는 프로세스.Job: 병렬 또는 순차적으로 실행되는 작업의 묶음.Step: 각 Job 안에서 실행되는 개별 명령어 또는 스크립트.Runner: 워크플로우가 실행되는 환경(가상 머신 또는 컨테이너).다양한 CI 도구가 있지만, 접근의 편의성이 높은 Git Action으로 먼저 CI를 구축해보고자 한다.실습💡github action을 통해서 정적 분석을 진행하고, docker build를 진행한다.아래 와 같이 동작하는 CI 구조를 만들어 본다... 2024. 11. 20.
[CI/CD 프로젝트] API gateway의 도입 배경과 역할 MSA ArchitectureGartner가 소개한 MSA 아키텍처의 컴포넌트이다.MSA 아키텍처를 보면 모두 APIgateway가 들어가 있는 것을 볼 수 있다.Why APIgatewayAPIgateway 는 proxy를 해주는 역할이다. 하지만 왜 굳이 단일 장애 지점(SPOF)의 위험이 있는데도 APIgateway를 사용할까?추상화 : 다수의 백엔드를 숨기고 한개의 endpoint로 통일한다.종속성 제거 : api definition을 json형태로 통일하여 프론트/백엔드에 대한 종속성 제거한다.공통기능 : 인증, cache, CORS 등 공통적으로 제공해야하는 기능을 한 군데에서 처리하며 개발 생산성 향상한다.모니터링 : 마이크로서비스 아키텍처의 가시성과 관리 용이성을 높인다.위와 같이 이유로 A.. 2024. 11. 20.
반응형