본문 바로가기
IT/Docker & Kubernetes

Kubernetes - Review, Volume, ConfigMap

by 스마일엔지니어 2025. 1. 13.

*정리

-쿠버네티스가 없을 때

etho으로 디폴트 네트워크의 ip주소를 받아옴

 

호스트 네트워크(도커의 네트워크 172망), 파드 네트워크(CNI가 만듬+담당), 서비스 네트워크(Kube proxy가 만듬+담당)

 

 

Caliaco

Flannel

Cillium => CeBPF 기반

CNI: 서로 다른 장비에 있는 POD들을 하나의 통신가능한 네트워크로 묶음 

L2 캡슐: Kube Proxy만 해석가능 (↓로 갈수록 캡슐화가 이루어짐)

veth0: ip주소가 없음 -> 단순한 전달/ 입출력 파이프라인 역할만 함 (포트포워딩, 1:1 맵핑)

worker 1,2이 aws 가상머신이라 생각하면 됨, kind는 aws에서 할당받은 서브넷과 동일

 

Ap-northeast-2a: 서울 (2a, 2b, 2c, 2d)

Ap-northeast-2를 서울에 있는 데이터센터라 생각하기

숫자는 지역, a, b, c, d는 각자 층이라 생각 (네트워크가 분리)

 

 

볼륨 생성

볼륨 ID: vol-0918afed928ff2634

할당받은 볼륨 ID로 교체

죽어도 보유(그대로)하겠다! (delete라면 죽으면 바로 삭제, recycle은 볼륨은 그대로 데이터는 포)

 

 

생성한 볼륨(디스크)를 ap-northeast-2a에 놓아라

생성 및 조회

 

-동적할당

Storage Class 조회

 

 

 

*Config Map

ConfigMap과 Secret은 Key Value 쌍으로 데이터를 저장하는 공통점을 가지고 있다.

ComfigMap은 일반적인 Use Cases

  - 환경변수 및 파라미터 전달

  - Container 내부에서 사용되는 명령어 및 매개 변수

  - 어플리케이션이 사용하는 읽기 전용 파일

  - ConfigMap을 읽어서 K8s API를 이용해 Pod 내부에서 수행되는 코드 작성에 이용

  - Secret은 패스워드 및 인증서와 같은 중요정보, 보안용으로 사용 (BASE 64 인코딩, 암호화 X)

 

Immutable ConfigMaps

  - 어플리케이션 오류로 인한 원하지 않는 업데이트로부터 보호

  - 대규모 클러스터에서 성능 개선 : kube-apiserver의 부하를 줄임.  ConfigMap 감시 X

 

 

각 이미지(nginx, mysql, springboot)에는 .conf 파일이라는 설정파일이 有

nginx -> default.conf

springboot -> properties.yaml

mysql -> my.conf

문제점: 개발 / 검증(1차, 2차, 3차) / 운영(1차, 2차) 민감한 서비스일수록 단계 多

-> 개발, 검증, 운영 이런거를 거칠수록 설정파일에 어디에 존재하냐에 따라 변수는 바뀌게 됨!!!

 

ConfigMap: Application과 분리, 참조용 그리고 변수값이 변화 & 마운트

Secret: 암호화 X (암호화보단 인코딩/디코딩에 가깝!)

 

-fortuneloop.sh

 

ex) fortuneloop.sh 30  -> fortuneloop.sh: $1 , 30: $2 (argument라 생각하면 ) // $0: 전 명령어

 

 

 

*CI/CD (Continuous Integration & Continuous Delivery)

 

Continuous Integration: 코드 병합 (Git을 통해서 소스 코드를 충돌 없이 병합(pull-request), 버전관리) ->

이미지(Image)

Commit -> Build -> Test -> Security Checks -> Release

Continuous Delivery(Deployment): 실행 파일을 배포

Deploy Stage -> Deploy Prod

 

Delivery: 갖다 놓고 사람이 실행

Deployment: 갖다 놓고 자동으로 실행

 

새로운 요구사항 -> 우선순위 및 가치 슬라이싱 

initialize change fork ->

Detect new or changed WIP Merge Request to Release Branch ->

CI ->

Continuous Merge Request Deployment ->

Change Development ->

Peer Review->

CI/CD ->

Live Service

 

code-revies

1. 너의 코드가 별로야 - Reject 

2. 왠만하면 변경해라 - Accept

3. 의견 (idea, 이렇게도 해볼 수 있지 않나?) - Accept

 

principle (원칙) - practice (관례 or 관행)

 

현대 CI/CD는 VM이 아닌 컨테이너와 쿠버네티스로 설계!!

 

GitHub Action:

 

워크플로우: 레포지토리안에서 특정 작업을 수행하기 위한 설정가능한 자동화 프로세스

- 테스트 코드 수행

- 패키지 배포

- 슬랙 메세지 전송

- 이슈 오픈 / 전송

- 코드 정적 검사

- 애플리케이션 배포

 

워크플로우 안에 잡 안에 스텝 있는데

jobs는 여러 개 작업 동시에 수행 (병렬)

step은 순차적으로 수행

 

*Runner 비교

항목 Github-hosted Runner Self-hosted Runner
관리 및 유지보수 Github가 제공하고 유지보수 사용자가 직접 관리
환경 설정 사전 설정된 OS와 툴 제공 원하는 설정과 스펙으로 직접 설정
비용 사용량에 따라 부과 // 퍼블릭 무료 하드웨어 등 유지보수 비용 발생
사용 사례 일반적인 CI/CD 작업 특수하고 고성능 하드웨어 필요한 경우
보안성 매번 실행 할때마다 초기 상태 환경 제공 작업 완료 후 환경 유지

 

 

'IT > Docker & Kubernetes' 카테고리의 다른 글

Kubernetes - Deployment, Service, Volume  (0) 2025.01.10
Kubernetes - Label, Namespace, Probe, Replicas  (0) 2025.01.09
Kubernetes - Baseline  (0) 2025.01.09
Docker Final - Docker Compose & Advance  (0) 2025.01.07
Docker Compose  (0) 2025.01.06