1. 쿠버네티스 구성요소(ETCD, Kubelet, Kube Scheduler)등 주요 요소 간 안전한 통신을 위해, TLS인증서를 통해 암호화한다. 1) 네트워크 정책 : 클러스터에서 Pod 간의 트래픽과 Pod과 외부 네트워크 간의 트래픽을 제어하는 규칙- By default, 모든 트래픽 허용 --> 규칙을 설정해서 특정 트래픽만 허용하도록 제한 가능즉, 아무것도 정의되지 않으면, 모든 트래픽이 허용되고, 규칙이 추가될 시, 명시된 규칙에 적힌 트래픽만 통과.##192.168.1.0/24:80에서 오는 트래픽만 Pod에 허용 apiVersion: networking.k8s.io/v1kind: NetworkPolicymetadata: name: allow-specific-ingress names..
1. 리소스 구성 백업1) 데이터 저장소- 쿠버네티스의 모든 구성정보는 etcd에 저장 - 애플리케이션이 영구 스토리지를 사용하고 있다면, 이 또한 백업 대상이 됩니다. 2) 구성 파일 관리- 선언적 접근 방식: YAML 파일을 사용하여 리소스를 정의하고 kubectl apply 명령어로 적용. 이 방식은 구성 파일을 소스 코드 저장소에 저장하여 팀이 관리 - 명령적 접근 방식: kubectl create 명령어를 사용하여 직접 리소스를 생성. 이 경우, 별도의 기록이 없으면 추적이 어려울 수 있음 3) Kube API 서버 쿼리- kubectl get all -all-namespaces -o yaml >all-deploy-services.yaml 명령어를 사용하여 모든 네임스페이스의 리소스를 YAML ..
1. 쿠버네티스 버전 1) 쿠버네티스 버전 체계- 주 버전, 부 버전, 패치버전으로 구성된 세가지 숫자로 버전을 관리- Semantic Versioning을 따르며 각 버전이 어떤 종류의 변경을 포함하는지를 이해하는 데 도움을 줌 - 주버전: 주요 변경사항을 포함하며, 이전 버전과 호환되지 않을 수 있다.- 부버전: 새로운 기능과 개선사항을 포함하며, 기존 배포와 호환 - 패치 버전: 버그 수정 및 보안 취약점 해결에 중점 2) 릴리스 주기- 쿠버네티스는 일반적으로 매년 세 번의 주요 릴리스를 발표. (1) 릴리스 주기 단계- 알파 릴리스: 초기 기능이 도입되며 기본적으로 비활성화되어 있음. 불안정- 베타 릴리스: 기능이 기본적으로 활성화되며, 안정성을 위해 철저히 테스트- 안정 릴리스: 완전히 테스트된..
1. Cordon, Drain, Uncordon1) 노드 관리: Cordon과 Drain- 운영체제 업그레이드 수행하기 전에, 해당 노드에서 실행중인 워크로드를 안전하게 처리하기 위해, cordon,drain,uncordon 명령어를 활용(1) Cordon: 노드 스케줄링 비할성화- kubectl cordon : 해당 노드를 스케줄링 불가능 상태로 설정(SchedulingDisabled)- 이 명령은 새로운 Pod이 해당 노드에 배치되지 않도록 하지만, 기존 Pod는 그대로 유지 (2) Drain: 워크로드 이동- kubectl drain : 명령어는 해당 노드에 존재하는 모든 Pod을 제거하고, 다른 노드로 재배치- DaemonSet과 같은 특정 Pod은 기본적으로 이동되지 않으므로 '--ignor..
1. Init Containers1) 정의 - Kubernetes Pod에서 메인 어플리케이션 컨테이너가 시작되기 전에 실행되는 특수한 컨테이너 - 초기화작업, 환경 설정, 데이터 준비와 같은 작업을 수행하며, 메인 컨테이너가 실행되기 위한 전제 조건을 충족2) 특징(1) 초기화 작업수행: 메인 컨테이너가 시작되기 전에 실행되어 환경을 준비 (2) 순차 실행: 여러 Init Containers를 정의할 경우, 순차적으로 실행되며 각 Init Container가 성공적으로 완료되어야 다음 Init Container가 실행 (3) Pod의 Pending 상태에서 실행 : Pod가 Pending 상태일 Init Containers가 실행되며, 모든 Init Containers가 완료되어야 Pod가 준비상태(..
1. Secretes1) 개념(1) 정의- 민감한 데이터를 안전하게 관리하기 위한 리소스- 비밀번호, API키, TLS 인증서와 같은 민감한 정보를 일반텍스트로 저장되지 않고, base64로 인코딩되어 저장 (2) 특징 - 민감한 정보 저장: 비밀번호, 키, 인증정보를 저장- 인코딩된 형식: base64로 인코딩되어 저장되며, 완전한 암호화는 아님- Pod와 통합: 환경 변수 또는 볼륨으로 Pod에 주입 가능 2) 생성 방법 (1) 명령어를 사용한 생성- kubectl create secret generickubectl create secret generic app-secret \ --from-literal=DB_Host=mysql \ --from-literal=DB_User=root \ --fro..
보호되어 있는 글입니다.
1. 환경변수1) Pod 정의 파일에서 직접 설정 - Pod 정의 파일에서 환경변수를 설정하려면 env속성을 사용 - env는 배열 형식이며 각 항목은 name과 value 속성을 포함 apiVersion: v1kind: Podmetadata: name: simple-webapp-colorspec: containers: - name: simple-webapp-color image: simple-webapp-color ports: - containerPort: 8080 env: - name: APP_COLOR value: "blue"- 위 예제는 'APP_COLOR'라는 환경 변수를 설정하고 값으로 blue를 제공 - 이 환경변수는 컨테이너 내부에서 어플리케이션이 ..
1. Docker에서의 Commands와 Arguments1) 기본 개념 - Docker 컨테이너는 특정 프로세스를 실행하기 위해 설계- 컨테이너 내부에서 실행되는 프로세스는 Docker이미지의 CMD 또는 ENTRYPOINT 지시어에 의해 정의- 컨테이너가 시작되면 이 지시어에 정의된 명령어가 실행 2) CMD(1) 정의 - CMD: 컨테이너가 시작될 때 실행할 기본 명령어(default)를 정의- 커맨드 라인 인수로 대체 가능 - ex) Ubuntu 이미지를 기본적으로 bash를 실행하도록 설정 CMD ["bash"]3) ENTRYPOINT(1) 정의- 컨테이너가 시작될때 반드시 실행해야 하는 명령어를 정의- CMD와 달리 ENTRYPOINT는 명령어를 고정하며, 추가적인 인수를 커맨드라인에서 전달..
1. Rolling Updates1) 개념- 쿠버네티스의 기본 배포 전략으로 어플리케이션의 가용성을 유지하면서 점진적으로 새로운 버전을 배포- 어플리케이션의 가용성을 유지하면서 점진적으로 새로운 버전을 배포2) 특징(1) 점진적 업데이트- 기존 Pod를 하나씩 종료하고, 동시에 새로운 Pod를 하나씩 생성 - 이 과정을 통해 어플리케이션의 다운타임 없이 업데이트가 가능(2) 자동 ReplilcaSet생성 - 새로운 버전이 배포되면 쿠버네티스는 자동으로 새로운 ReplicaSet을 생성하여 새로운 Pod를 관리- 이전 ReplicaSet은 점진적으로 축소 3) 예시(1) 현 상황 기존 Nginx 1.7.1 버전을 사용하는 어플리케이션이 3개의 복제본으로 실행중임을 가정 (2) 이를 Nginx 1.9.1로 ..