본문 바로가기
반응형

전체 글61

[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.
[CI/CD 프로젝트] Git와 GitOps 아키텍처의 이해 GitOps란?Git을 단일 소스로 사용 모든 서비스, 인프라에 대한 관리를 Git을 통해 선언적으로 진행한다. 버전 관리, 협업, 코드 리뷰 등이 표준화된다. 자동화된 배포 gitops에서는 argocd와 같은 툴을 이용하여 배포를 자동화할 수 있다. argocd는 git에 명시되어있는 desired state와 운영환경의 상태가 일치하도록 한다. 이떄문에 변경 사항이 빠르게 배포되고, 롤백할 경우에도 히스토리 관리가 용이하다 GitOps의 작동 방식GitOps는 크게 두 가지 방식으로 작동한다.Push 기반 (배포 방식, CI) 대표 툴 : GitHub Actions, GitLab CI, Jenkins 새로운 코드나 인프라 변경 사항이 Git에 push되면, CI 파이프라인이 이를 감지하여 빌드를 진.. 2024. 11. 19.
[Leetcode] Take Gifts From the Richest Pile TIL변동이 있는 변수/크기 변동이 있는 오브젝트를 반복문의 조건문으로 사용하지 말기ex) 아래처럼 poll하면서 size가 계속 작아지는데 이게 반복문 횟수의 기준이다..? -> 안됨 for( int i = 0; i ** Array -> Length, ArrayList, Queue -> size()**코드 import java.util.*;class Solution { public long pickGifts(int[] gifts, int k) { long sum = 0; PriorityQueue giftMax = new PriorityQueue((o1, o2) -> o2 - o1 ); for( int i = 0; i 1){ i.. 2024. 11. 18.
[백준] 센티와 마법의 뿅망치 성공 예외 케이스1 50 110거인이 사실은 난쟁이였다는 사실을 고려할 필요하 있다..import java.util.*;import java.io.*;public class Main { public static void TallKiller() throws IOException { String answer = "YES"; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String info = br.readLine(); String[] parse_info = info.split(" "); int tall_num = Integer.parseInt(parse_inf.. 2024. 11. 17.
[java] 최대힙, 최소힙 다이어그램으로 힙 sort에 대해 확인하고자 한다면 아래 링크를 클릭해서 참고하면 좋다.heap sort시간 복잡도작업 시간 복잡도:삽입: 𝑂(log𝑛) — 힙의 말단에 삽입한 후, 정렬 수행.삭제: 𝑂(log𝑛) — 최상단(root) 노드를 제거한 후, 힙을 재정렬.접근(최상단 요소 확인): 𝑂(1)구조힙 자료구조:내부적으로 완전 이진 트리(Complete Binary Tree) 구조를 배열로 표현하여 구현된다.노드 간의 부모-자식 관계는 우선순위에 따라 정렬한다.최소 힙: 부모 노드는 항상 자식 노드보다 작거나 같다.최대 힙: 부모 노드는 항상 자식 노드보다 크거나 같다.최소힙PriorityQueue minHeap = new PriorityQueue();최대힙PriorityQueue maxH.. 2024. 11. 15.
반응형