썸네일 Azure Kubernetes Service Node에 Access 하기 1. Debug pod로 접근 kubectl debug node/{node 명} -it -image=mcr.microsoft.com/cbl-mariner/busybox:2.0 명령어를 통해서 node-debugger로 시작하는 pod를 생성한 후 실행합니다. (node명 확인은 kubectl get nodes 명령어를 사용합니다.) chroot /host 명령어를 입력하여 node에 access 합니다. 추가적으로, Kubernetes의 CRI를 사용하여 System에 있는 image를 확인할 수 있습니다. crictl images crictl images라는 명령어를 통해 Cluster에서 사용 가능한 이미지에 대한 정보를 확인할 수 있습니다. crictl stats crictl stats라는 명령어를..
썸네일 Label과 Selector Labels Kubernetes의 각 object에 대해 필요에 따라 label attach ex. env: dev / app: nginx metadata section 하위에 label이라는 이름의 field 생성 후 기입 원하는 만큼 label attach 가능 metadata: labels: env: dev app: nginx ex) label이 있는 pod를 선택하기 위해 kubectl get po --selector app=App1과 같이 --selector 파라미터를 사용하여 filtering함 Selectors Selector는 각 Kubernets Object들을 filtering하는데 사용 apiVersion: apps/v1 kind: Deployment metadata: name: ng..
썸네일 Encrypting Secret Data at Rest in ETCD 1. ETCD란? ETCD Encryption at Rest 테스트를 진행하기에 앞서 먼저 ETCD가 무엇인지 간단하게 알아보도록 하겠습니다. ETCD란? ETCD는 Kubernetes Cluster의 모든 데이터를 담는 Kubernetes의 Key-Value 형태의 저장소입니다. 우리가 kubectl 명령어를 입력해서 받는 여러 Kubernetes Objects에 대한 정보는 모두 ETCD에 저장된 데이터에서 가져오는 정보죠. 따라서 Secret 데이터도 ETCD에 저장되게 됩니다. 그렇다면 Secret 데이터가 ETCD에 저장될 때 암호화되어 저장이 될까요? 답은 No입니다. 기본적으로 ETCD에 저장되는 Secret 데이터는 평문으로 저장이 됩니다. 그러나 Kubernetes는 ETCD에 저장되는 ..
썸네일 Virtual Machine으로 Kubernetes Cluster 구성하기 (2) 3. Control Plane 구성 3.1 kubeadm init Kubernetes Cluster용 [가상 머신] 모두에게 설치해야 할 것들을 모두 설치하였습니다. 지금부터는 Control Plane에서 kubeadm init 명령어를 사용하여 본격적으로 Kubernetes Cluster를 구성해 보도록 하겠습니다. ※ kubeadm init 명령어는 반드시 Control Plane에서만 설치하여야 합니다.※ kubeadm init 명령어를 실행합니다. 만약 pod cidr 대역이 기본값과 다르다면 (default : 192.168.0.0/16) --pod-network-cidr flag를 사용하여 사용할 pod의 cidr 대역을 직접 명시해 주어야 합니다. (본 테스트에서는 default cidr 대..
썸네일 Virtual Machine으로 Kubernetes Cluster 구성하기 (1) 1. Virtual Machine 배포 Azure 환경에 [가상 머신]을 세 대 배포하여, 1대는 control plane, 2대는 node로 사용합니다. 1.1 Virtual Machine 배포 1.1.1 [리소스 그룹] 생성 구독 : # 사용할 구독 선택 리소스 그룹 : rg-k8s-test # 리소스 명 입력 영역 : Korea Central # 가상 머신이 배포될 Azure Region 선택 1.1.2 [가상 머신] 생성 세 대 모두 배포 방법은 모두 동일합니다. 본 테스트에서는 이름만 변경하였으나 필요에 따라 control plane의 역할을 하는 [가상 머신]의 SKU를 더 크게 지정할 수 있습니다. [기본 사항] 노란색으로 하이라이트한 부분에 대해 설정을 완료한 후 [다음 : 디스크 >] 버..
썸네일 Kubernetes Network Policy 공부하기 (2) 이전 글 : https://sundlscha.tistory.com/13 Kubernetes Network Policy 공부하기 (1) 1. Network Policy란? Kubernetes Cluster 내부에서 pod 간 통신 시 트래픽 규칙을 규정하는 역할을 하는 object입니다. 기본적으로 Network Policy를 사용하지 않는 경우 Kubernetes Cluster 내부의 모든 pod는 서로 통 sundlscha.tistory.com 1. Namespace 생성 및 Label 지정 테스트에 사용할 namespace를 생성합니다. kubectl create ns ns-01 kubectl create ns ns-02 생성된 namespace 확인하기 위해 하기 명령어를 입력합니다. kubectl..
썸네일 Kubernetes Network Policy 공부하기 (1) 1. Network Policy란? Kubernetes Cluster 내부에서 pod 간 통신 시 트래픽 규칙을 규정하는 역할을 하는 object입니다. 기본적으로 Network Policy를 사용하지 않는 경우 Kubernetes Cluster 내부의 모든 pod는 서로 통신 가능하지만 Network Policy 사용 시 pod 간 통신을 제어할 수 있습니다. Kubernetes Cluster가 Network Policy를 지원하는 네트워크 플러그인(CNI Plug-in)을 사용해야 Network Policy를 활성화할 수 있습니다. ✅ 물론, Kubernetes Cluster가 사용하는 CNI가 Network Policy를 지원하지 않더라도 Network Policy object 자체는 생성할 수 있..
썸네일 Kubernetes Namespace 간 Ingress 트래픽 라우팅 하기 1. 궁금증의 시작 저는 최근 Terraform으로 Azure Infra를 구성하는 테스트를 진행하고 있습니다. 모듈화는 처음이라 굉장히 고난을 겪었지만😢 멋진 동기 덕분에 무사히 테스트를 완료하였습니다. 👏🏻👏🏻👏🏻 그 다음 목표는 배포된 Azure Kubernetes Service 내부에 세부 구성을 진행하는 것이었는데요. 도커 이미지를 Build해서 Azure Container Registry로 Push하고 Azure Kubernetes Service에서 그 이미지를 가지고 Web용 Deployment를 배포하기로 했습니다. 동기가 만든 Deployment와 제가 만든 Deployment를 경로에 따라 분기하기 위해서 Nginx Ingress를 생성하는 작업을 진행하던 도중 궁금증이 생겼습니다. D..