1. Secret 이란?Secret은 암호, 토큰 또는 키와 같은 중요한 데이터를 포함하는 오브젝트이다.Secret은 기본적으로 ETCD에 저장되며, K8s API Server를 통해 파드 내 컨테이너로 전달된다. 기본적으로 API 서버의 기본 데이터 저장소인 ETCD에 암호화되지 않은 상태로 저장된다.이에, API 또는 ETCD에 접근할 수 있는 모든 사용자는 시크릿을 조회하거나 수정할 수 있다.2. Secret 생성 및 조회2-1. Secret 생성생성한 Secret 값을 확인해 보면 Secret은 base64로 인코딩만 되고 암호화되지 않는 것을 확인할 수 있다.# Secret 생성kubectl create secret generic secret01 --from-literal username=adm..
1. 개념 설명1-1. KubesprayKubespray는 Kubernetes 클러스터를 배포하고 관리하기 위한 오픈 소스 도구이다.Ansible의 playbook과 inventory 설정을 통해서 Kubernetes 클러스터를 설정한다.AWS, Azure, GCP, OpenStack, VMware 등 다양한 플랫폼을 지원한다. Ansible은 ssh를 사용하여 개별 노드에 접속 하지 않고 원격 설치 및 클러스터 구성이 가능하다.1-2. Ansible인프라 프로비저닝, 애플리케이션 배포 및 구성 관리 등을 위한 대표적인 IaC 도구이다.Ansible은 YAML 형식을 사용하여 Playbook이라고 불리는 구성 파일을 작성한다.Inventory: Ansible은 대상 호스트 그룹을 정의하기 위해 인벤토리 ..
1. probe란? Kubernetes probe는 Kubernetes에서 컨테이너 상태를 모니터링하고 관리하기 위한 도구이다. Probe는 컨테이너의 상태를 확인하고 문제가 발생했을 때 Kubernetes가 적절히 대응할 수 있도록 도와준다. probe는 kubelet에 의해 주기적으로 진단을 수행한다. kubelet: worker node에 있는 agent로 maser node의 kubernetes-api와 통신하며 실제로 contianer runtime에 배포를 명령하는 역할을 한다. (kubelet: 선장, worker node: 배) 2. probe 종류 2-1. Liveness Probe Liveness Probe는 컨테이너에서 실행 중인 애플리케이션이 healthy 상태인지 확인한다. 만약 ..
1. Istion 구성 Istio는 Kubernetes CRD(Kubernetes API의 extension)를 사용하기 때문에 Kubernetes yaml 파일로 구성할 수 있다. 서비스 간 통신을 위한 기본 CRD: Virtual Service, Destination Rule Virtual Service: 어느 서비스로 트래픽을 라우팅할지 결정 Destination Rule: 트래픽을 어떻게 보낼지 정의 (EX: 서킷브레이킹, 트래픽 미러링, 트래픽 시프팅 등) 2. Istion Traffic Flow CRD 생성 Istio는 고수준 라우팅 규칙을 Envoy 특정 구성으로 변환 구성은 프록시 사이드카로 전파 프록시들은 Istio Control Plane에 연결하지 않고도 통신 가능 프록시들은 요청에 ..
1. MSA 소개 1-1. MSA (MicroService) 이란? 1개의 시스템을 독립적으로 배포 가능한 각각의 서비스로 분할합니다. 각각의 서비스는 API를 통해 데이터를 주고받으며 1개의 큰 서비스를 구성한다. MSA 방식으로 구성하면 일부 서비스에 장애가 발생하여도 전체 서비스에 장애가 발생하지 않는다. 또한 각각의 서비스들은 서로 다른 언어와 프레임워크로 구성할 수 있다. 하기 이미지와 같이 온라인 구매 사이트를 만들 때 결제, 재고, 장바구니 페이지 등으로 서비스를 분할하여 구성한다. 1-2. Service Mash를 사용하지 않을 경우 서비스 메쉬 없이 각 마이크로서비스는 서비스 간 커뮤니케이션을 통제하는 로직으로 코딩해야 하기 때문에 개발자들이 비즈니스 목표에 집중하지 못하게 된다. A 서..
1. 모니터링 도구 소개 1) Prometheus SoundCloud사에서 만든 메트릭 기반의 오픈소스 모니터링 시스템다. 프로메테우스는 메트릭을 시계열 데이터로 수집하고 저장한다. RDB 대신 메트릭 이름과 key-value 쌍으로 식별되는 다차원 데이터 모델을 사용한다. 이에, 많은 양의 정보를 빠르게 검색할 수 있다. 2) Grafana 시계열 매트릭 데이터를 시각화 하는데 가장 최적화된 대시보드를 제공해주는 오픈소스 툴킷이다. 사용자가 하나의 대시보드로 통합된 차트와 그래프를 통해 데이터를 확인할 수 있어 데이터를 손쉽게 해석하고 이해할 수 있다. 2. Prometheus & Grafana 설치 1) Helm 설치 Helm 설치 사이트 # Apt (데비안/우분투) curl https://balto..
1. Network Policy 개념 Network Policy를 통해 클러스터 내부에서 파드 간에 트래픽 룰을 규정할 수 있다. Network Policy를 사용하지 않을 경우 클러스터 내부의 모든 파드는 서로 통신이 가능하다. Network Policy의 용도 기본적으로 모든 파드 간 통신은 차단하고 특정 파드 간 통신만 허용하는 화이트리스트 방식을 사용할 수 있다. 네임스페이스별로 트래픽을 전송하지 못하게 할 수 있다. 2. Network Policy 활성화 방법 1) 온프레미스 환경 Network Policy 정책을 지원하는 네트워크 플러그인(CNI 플러그인)을 사용하여 클러스터가 구축되어야 한다. CNI 플러그인으로 Flannel, Calico, Weavenet, NSX 등 다양한 종류가 있다...
1. Load Balancer 유형 1) 하드웨어 로드밸런서 하드웨어 로드 밸런싱은 전용 하드웨어 장비를 통해 부하를 분산한다. 하드웨어 장비로 로드밸런싱을 할 경우 가격이 비싸지만 좋은 성능을 제공한다. 주요 제조사로는 F5 Networks, Citrix, A10 Networks 등이 있다. 2) 소프트웨어 로드밸런서 서버에 설치되는 소프트웨어로, 하드웨어 로드밸런서에 비해 비교적 저렴한 비용으로 구성할 수 있다. 가상 머신, 컨테이너, 물리적 서버 등에서 실행 가능하다. 예시 HAProxy 고성능의 오픈 소스 로드밸런서로, TCP 및 HTTP 기반 로드밸런싱을 지원한다. Nginx 웹 서버로 유명하지만, 로드밸런서로도 사용 가능하며, 가벼우면서도 높은 성능을 제공한다. HTTP, HTTPS, TCP ..
1. 아키텍처 ExternalName SVC를 활용하여 서로 다른 Namespace에 있는 SVC로 Nginx Ingress를 설정한다. 2. ExternalName 서비스란? ExternalName는 클러스터 내부의 Pod가 외부 서비스에 도메인 이름을 통해 접근하는 데 사용된다. 이와 반대로 NodePort 및 LoadBalancer는 외부에서 클러스터 내부의 서비스에 접근하기 위해 사용된다. ExternalName 서비스 생성 시 셀렉터가 없고 DNS 이름을 사용한다. 사용 이유 외부 FQDN 주소가 바뀌더라도, CNAME은 그대로 유지할 수 있어 애플리케이션을 다시 작성하거나 빌드하지 않아도 된다. 외부 Domain을 마치 동일한 내부 서비스인 것처럼 참조할 수 있어 편리하다. 클러스터 내부에서도..