전체 글 203

IaC 도구 비교

Terraform Ansible CloudFormation 유형 프로비저닝 구성 관리 프로비저닝 오픈소스 여부 공개 공개 비공개 적용 대상 클라우드 멀티 멀티 AWS 전용 정책 설정 가능 불가능 부분적 구성 방식 Immutable mutable Immutable 라이프사이클 관리 가능 불가능 부분적 온프레미스 지원 부분적 부분적 불가능 ✔︎ Immutable : 인프라스트럭처의 상태를 변경할 때, 기존 인프라스트럭처를 수정하거나 업데이트하는 것이 아니라 새로운 인프라스트럭처를 생성하여 이전 상태의 인프라스트럭처를 교체하는 방식을 의미한다. Ansible 프로비저닝보다 구성 관리에 더 큰 장점을 가지고 있고, 테라폼으로 자원을 생성(프로비저닝)하고 앤서블로 생성된 자원에 대한 구성 관리하는 방식으로 조합해..

IaC 2024.04.02

[세미나] RedHat container Day 2024

기업의 컨테이너 전환 여정과 시사점결론 : 기업이 컨테이너 전환시, 단계별로 레드햇이 지원하는 서비스 및 상품 홍보하는 내용 이었습니다. 컨테이너 전환 과정의 어려움플랫폼 신규 구축대상 애플리케이션 선정ex) 어떤 업무를 올려야 하는가? → 개발자들의 수고 ↓, "의미" 있는 애플리케이션을 올려야 한다.                                                                     ※ 의미 = 투자 비용이 높은 도입과 관련된 전반적 기술적 의사 결정ex) 버전 변경으로 인한 여러가지 이슈사항 고려, 개발자들의 공수 고려클라우드 네티이브 애플리케이션 개발플랫폼 확산주요 고려 사항인프라클러스터와 컨테이너 자원 관리 방안, 멀티 클러스터, 스토리지 유형 등애플리케이션..

영구 볼륨 클레임

컨피그 & 스토리지 API 카테고리 설정/기밀 정보/영구 볼륨 등에 관련된 리소스 - 시크릿 - 컨피그맵 - 영구 볼륨 클레임 볼륨, 영구 볼륨, 영구 볼륨 클레임의 차이 볼륨 사용 가능한 볼륨을 매니페스트에 직접 지정하여 사용할 수 있게 하는 것 사용자가 설정된 볼륨을 사용할 수 있지만, 쿠버네티스에서 신규 볼륨을 생성하거나 기존 볼륨을 삭제하는 작업은 할 수 없다. 매니페스트에서 볼륨 리소스 생성 불가능 영구 볼륨 외부 영구 볼륨을 제공하는 시스템과 연계하여 신규 볼륨을 생성하거나 기존 볼륨을 삭제하는 등의 작업이 가능하다. 구체적으로 매니페스트에서 영구 볼륨 리소스를 별도로 생성하는 형태다. 볼륨과 같은 플러그인 제공 예를 들어 GCP, AWS 볼륨 서비스에서는 영구 볼륨 플러그인과 볼륨 플러그인 ..

Kubernetes 2024.02.20

ConfigMap(컨피그맵)

작성중 컨피그 & 스토리지 API 카테고리 설정/기밀 정보/영구 볼륨 등에 관련된 리소스 - 시크릿 - 컨피그맵 - 영구 볼륨 클레임 설정 정보 등 key-value 값으로 저장할 수 있는 데이터 저장 리소스다. nginx.conf나 http.conf 같은 설정 파일 자체도 저장할 수 있다. 컨피그맵 생성 kubectl로 파일에서 값을 참조하여 생성(--from-file) kubectl로 직접 값을 전달하여 생성 (--from-literal 매니페스트로 생성(-f) ku커 빌드 시 컨테이너 이미지에 추가 이미지를

Kubernetes 2024.02.20

Secret(시크릿)

컨피그 & 스토리지 API 카테고리 설정/기밀 정보/영구 볼륨 등에 관련된 리소스 - 시크릿 - 컨피그맵 - 영구 볼륨 클레임 # 직접 옵션에서 type과 값을 지정하여 시크릿 생성 $ kubectl create secret generic --save-config sample-basic-auth \ --type kubernetes.io/basic-auth \ --from-literal=username=root --from-literal=password=rootpassword MySQL 데이터베이스에 접속하려면 사용자명이나 패스워드 등의 기밀 정보가 필요하다. 쿠버네티스에서 애플리케이션을 실행할 경우, 이와 같은 기밀 정보를 컨테이너로 전달하는 방법으로는 어떤 것이 있을까? 도커 빌드 시 컨테이너 이미지에..

Kubernetes 2024.02.19

컨피그 & 스토리지 API 카테고리

컨피그 & 스토리지 API 카테고리 설정/기밀 정보/영구 볼륨 등에 관련된 리소스 - 시크릿 - 컨피그맵 - 영구 볼륨 클레임 컨테이너에 대해 설정 파일, 패스워드 같은 기밀 정보 등을 추가하거나 영구 볼륨을 제공하기 위한 리소스다. 내부에서 사용되는 것을 제외하고 사용자가 직접 사용하는 것으로 세 가지 종류의 컨피그 & 스토리지 리소스가 있따. 환경 변수 사용 쿠버네티스에서 개별 컨테이너의 설정 내용은 환경 변수나 파일이 저장되어 있는 영역을 마운트하여 전달하는 것이 일반적이다. 쿠버네티스에서 환경 변수를 전달할 때 파드 템플릿에 env 또는 envForm을 지정한다. 다음과 같이, 크게 나눠 다섯 가지 정보를 환경 변수에 포함시킬 수 있다. 정책 설정 파드 정보 컨테이너 정보 시크릿 리소스 기밀 정보..

Kubernetes 2024.02.18

서비스 API 카테고리 정리

서비스 API 카테고리 컨테이너를 외부에 공개하는 엔드포인트를 제공하는 리소스 - 서비스 - ClusterIP - ExternalIP (ClusterIP의 한 종류) - NodePort - LoadBalancer - 그 외 서비스 기능 - Headless (None) - ExternalName - None-Selector - 인그레스 서비스 L4 로드 밸런싱 클러스터 내부 DNS를 사용한 이름 해석 레이블을 사용한 파드의 서비스 디스커버리 인그레스 L7 로드 밸런싱 SSL 터미네이션 경로 기반 라우팅 서비스 종류 서비스 종류 IP 엔드포인트 내용 ClusterIP 쿠버네티스 클러스터 내부에서만 통신 가능한 가상 IP ExternalIP 특정 쿠버네티스 노드의 IP 주소 NodePort 모든 쿠버네티스 노..

Kubernetes 2024.02.18

Ingress(인그레스)

서비스 API 카테고리 컨테이너를 외부에 공개하는 엔드포인트를 제공하는 리소스 - 서비스 - ClusterIP - ExternalIP (ClusterIP의 한 종류) - NodePort - LoadBalancer - 그 외 서비스 기능 - Headless (None) - ExternalName - None-Selector - 인그레스 인그레스 지금까지 설명한 서비스는 L4 로드밸런싱이지만 Ingress는 L7 로드밸런싱을 제공하는 서비스이다. 서비스들을 묶는 서비스들의 상위 객체로, 서비스 종류의 하나로서가 아닌 독립된 리소스로 구현되어 있다. Network Policy 리소스에 Ingress/Egress라는 설정 항목이 있지만 이 인그레스와 관련은 없다. 1. 리소스와 컨트롤러 쿠버네티스에서 서비스를 ..

Kubernetes 2024.02.17

None-Selector 서비스

서비스 API 카테고리 컨테이너를 외부에 공개하는 엔드포인트를 제공하는 리소스 - 서비스 - ClusterIP - ExternalIP (ClusterIP의 한 종류) - NodePort - LoadBalancer - 그 외 서비스 기능 - Headless (None) - ExternalName - None-Selector - 인그레스 None-Selector ExternalName 서비스는 서비스명으로 이름 해석을 하면 CNAME으로 반환 하였다. 그에 반해, None-Selector 서비스는 서비스명으로 이름 해석을 하면 A 레코드로 반환한다.자신이 설정한 멤버에 대해 로드 밸런싱을 하며, Client-side 로드밸런싱용 엔드포인트를 제공하는 서비스라고 말할 수 있다.type: LoadBalancer..

Kubernetes 2024.02.17

스케줄링(taint&tolerations/NodeSelector/NodeAffinity)

Woker Node위에 Pod들이 배포될때 다양한 스케줄링 기법을 제공합니다. taint&tolerations taint와 tolerations의 사용 목적: 특정 Node에 할당되지 않도록 방지. taint taint가 설정된 노드에는 pod가 스케줄 되지 않는다. 특정 파드만 받기 위한 노드 설정 kubectl taint node [node명] -l key1=value1 key2=value2:effect kubectl taint nodes node-name key=value:taint-effect → kubectl taint nodes node1 app=blue:NoSchedule apiVersion: v1 kind: Node metadata: name: sample-toler labels: labe..

Kubernetes 2024.02.13