본문 바로가기
반응형

사이드 프로젝트19

[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.
[CI/CD 프로젝트] SonarQube 사용한 코드품질 향상 SonarQubeSonarQube는 소스 코드의 품질을 분석하고 코드의 버그, 코드 스멜, 보안 취약점을 찾아내는 정적 분석 도구주요 기능: 코드 리뷰 자동화, 품질 게이트 설정, 기술 부채 감소 지원.SonarQube 아키텍처Scanner: 소스 코드를 분석하는 클라이언트.Server: 분석 결과를 저장하고 대시보드로 보여주는 중앙 서버.Database: 분석 결과와 프로젝트 메타데이터를 저장.SonarQube / Sonarlint는 아래와 같은 기준을 가지고 정적 분석을 진행한다.제품품질 메트릭규모 관련(라인, 주석비율, 함수별 라인수)복잡도 관련순환 복잡도 : 제어 흐룸에 따라 1 , case, while, for, if (10이하)인지 복잡도 : 중첩문 빈도테스트 관련룰 기반 분석 관련결함 관련의.. 2024. 11. 19.
[CI/CD 프로젝트] Terraform을 사용하여 bastion 서버 생성하기 테라폼이란?테라폼은 HashiCorp에서 개발한 IaC(Infrastructure as a Code)도구이다.클라우드 및 온프레미스 리소스를 파일로 명시하여 인프라를 선언적으로 관리할 수 있다.이러한 구성 파일은 버전 관리, 재사용 및 공유가 가능하여 관리가 용이하다.일관된 워크플로우를 사용하여 인프라의 전체 수명 주기 동안 프로비저닝 및 관리할 수 있다.컴퓨팅, 스토리지, 네트워킹과 같은 저수준 구성 요소부터 애플리케이션과 같은 고수준 구성 요소까지 관리 가능하다. 테라폼 용어ProviderTerraform이 관리할 수 있는 리소스 유형 및/또는 데이터 소스 세트를 추가 ex. AWSResources리소스란 특정 Provider가 제공해주는 조작 가능한 대상의 최소 단위 ex. aws_instanceH.. 2024. 11. 19.
반응형