반응형 분류 전체보기61 [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. [CI/CD 프로젝트] Ingress 를 통한 외부 트래픽 관리 Ingress란?Ingress는 클러스터 외부의 트래픽을 내부의 특정 서비스로 라우팅하는 Kubernetes 리소스이다. Ingress는 URI, hostname, path 등과 같은 protocol을 사용할 수 있기 때문에 HTTP(S) 네트워크를 가능하게 해준다. Ingress가 지원하는 기능은 아래와 같다.경로 기반 라우팅: HTTP(S) path에 따라 트래픽을 서로 다른 서비스로 라우팅합니다.도메인 기반 라우팅: 여러 도메인에 대해 별도의 트래픽 라우팅 규칙을 설정합니다.TLS 지원: TLS 인증서를 통해 HTTPS 보안을 설정할 수 있습니다.Ingress, NodePort, LoadBalancer세가지 모두 외부에서 접근할 수 있도록 도와주는 툴이다.이 세 가지에서, 가장 큰 차이점은 Ingr.. 2024. 11. 20. [CI/CD 프로젝트] Helm 구조와 Helm Chart 생성 방법 Helm이란?Helm은 Kubernetes 애플리케이션을 관리하기 위한 패키지 매니저이다. Chart라는 패키지를 통해 애플리케이션 배포, 관리, 업그레이드를 효율적으로 처리할 수 있다.Helm의 필요성Kubernetes 리소스의 수동 관리 복잡도를 줄이고, 여러 리소스를 하나의 Chart로 관리가 가능해진다.Helm의 구성 요소Chart: Kubernetes 애플리케이션을 정의하는 템플릿 파일 모음. 기동되기 위해 필요한 모든 리소스들이 포함되어 있다. (Deployment, Service 등..)Release: Helm Chart를 이용해 Kubernetes 클러스터에 배포된 인스턴스.Repository: Helm Chart를 저장하고 공유할 수 있는 저장소.Helm Chart 구조디렉토리 구조myc.. 2024. 11. 20. [CI/CD 프로젝트] Kustomize 사용하여 다양한 환경에서 쉽게 배포하기 Kustomize란?❈ kubernetes 1.14부터 kustomize는 내장되었다.Kustomize는 Kubernetes 리소스를 YAML 파일로 관리하면서, 중복 없이 다양한 환경에 맞춰 쉽게 리소스를 커스터마이징할 수 있는 도구입니다. Base와 Overlay 개념을 통해 공통 리소스를 정의하고, Overlay에 대한 내용을 상속받아 환경별로 다르게 적용 가능하다.Kustomize와 Helm 비교kubernetes를 사용하면서, 대표적인 배포 도구 helm, kustomize 에 대해서 비교해 본다.Helm: 패키징된 Chart를 사용해 전체 애플리케이션을 배포하고 관리하며, 변수화와 템플릿화를 지원한다.Kustomize: 기존 YAML 파일을 커스터마이징하는 방식으로, 패키징된 차트가 필요하지 .. 2024. 11. 19. [CI/CD 프로젝트] K8S - Calico 내부 동작 이해 Calico란?Calico는 Kubernetes 클러스터에서 Pod 간의 통신을 가능하게 하는 네트워킹 솔루션입니다. Calico는 기본적으로 라우팅 기반 네트워킹을 사용하며, IP 패킷을 통해 Pod 간의 통신을 처리한다.주요 특징:고성능 네트워킹: L3 라우팅을 기반으로 하여 빠르고 효율적인 통신 제공.네트워크 보안: Kubernetes 네트워크 정책을 사용하여 Pod 간의 통신을 제어.확장성: 대규모 클러스터에서도 안정적으로 작동.CNI의 역할Pod 간 통신: CNI는 각 Pod에 고유한 IP 주소를 할당하고, 이러한 IP 주소를 통해 Pod 간에 통신할 수 있도록 설정한다. CNI 플러그인은 네트워크 브리징, 라우팅, NAT(Network Address Translation) 등과 같은 네트워크 .. 2024. 11. 19. [CI/CD 프로젝트] K8S - kubeadm으로 Kubernetes Cluster 구축하기 쿠버네티스란?쿠버네티스는 Container Orchestration 개념으로, 많은 컨테이너를 쉽게 관리할 수 있도록 도와주는 도구이다.쿠버네티스의 동작 원리는, kubectl 을 통해 control plane에 있는 etcd에 desired state를 입력하고, 다양한 컴포넌트를 통해 container를 배포한다. 이런 동작 원리로, self healing과 같은 특징이 생기게 된다.이 외에도,Service에 대한 load balancing : 원래는 우리는 서비스를 호출하기 위해 사용하고 있는 ip와 포트를 알아야한다. 쿠버네티스는 서비스들을 label로 관리하여 서비스를 호출 하였을 때 해당 label이 붙어있는 pod로 트래픽을 분산해준다.Storage 관리 : K8S는 스토리지를 명시하여 자동.. 2024. 11. 19. [CI/CD 프로젝트] K8S - Containerd 내부 구조 이해 1. 컨테이너를 위한 리눅스 네트워크※ 1.2이상 버전에서 K8S는 컨테이너 런타임으로 Docker 의 사용 중단한다.컨테이너는 애플리케이션이 한 컴퓨팅 환경에서 다른 컴퓨팅 환경으로 빠르고 안정적으로 실행될 수 있도록 코드와 모든 종속성을 패키지화하는 소프트웨어의 표준 단위이다.컨테이너를 수행하게 되면 네트워크 네임스페이스 별로 격리화되어, 고유의 네트워크 구성을 가지게 된다.서로 다른 네트워크 네임스페이스는 서로 “고립된” 환경으로 존재하게 된다.echo "# Network devices"ip link listecho -e "\n# Route table"ip route listecho -e "\n# iptables rules"iptables --list-rules리눅스 네트워크 시스템은 기본적으로 이.. 2024. 11. 19. 이전 1 2 3 4 5 6 ··· 8 다음 반응형