[K8s] Network Policy Network Policy 네트워크 정책 적용을 통해 클러스터에서 쿠버네티스 네트워크 정책을 생성 할 수 있다. 허용되는 다른 파드 허용되는 네임 스페이스 IP 블록 네트워크 정책을 정의하면, 클러스터가 다중 수준의 애플리케이션을 제공할 때, 심층 방어와 같은 기능을 지원하는 데 도움이 된다. Network Policy 생성 예를 들어 다음과 같이 access: true 레이블을 가지고 있는 pod만 nginx 서비스에 접근할 수 있도록 Network Policy 객체 생성이 가능하다. apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: access-nginx spec: podSelector: m..
[K8s] RBAC(Role-Based Access Control) RBAC는 개별 사용자의 역할을 기반으로 컴퓨터 또는 네트워크 리소스에 대한 액세스를 규제한다. 특정 사용자(User)와 역할(Role) 두 가지를 조합해서 사용자에게 특정 권한을 부여할 수 있다. API 객체 RBAC API는 Role, ClusterRole, Rolebinding 및 ClusterRoleBinding의 네가지 종류의 개체를 선언한다. Role, ClusterRole Role 및 ClusterRole 객체에서 RBAC 규칙을 정의한다. Role : 단일 네임스페이스에 포함된 리소스에 대한 액세스를 정의한다. apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: n..
[K8s] ServiceAccount 서비스 어카운트 (Service Account) 서비스 어카운트는 쿠버네티스에서 애플리케이션의 인증 및 권한 관리를 담당한다. 쿠버네티스 클러스터 내에서 실행되는 애플리케이션은 기본적으로 API 서버와 상호작용을 해야하는데, 서비스 어카운트를 통해 API에 접근 권한을 부여받을 수 있다. 서비스 어카운트는 파드에서 실행되는 프로세스에 대한 ID를 제공하며, 해당 프로세스 ID는 서비스 어카운트 객체에 매핑된다. API 서버에 액세스 모든 쿠버네티스의 네임스페이스에는 ServiceAccount가 하나 이상 포함되어 있다. 만약 서비스 어카운트를 따로 지정하지 않고 Pod를 생성하여 API 서버에 연결하면, Pod는 default 네임스페이스에 명명된 서비스 어카운트를 ..
[K8s] Job, CronJob https://heywantodo.tistory.com/35 [K8s] 쿠버네티스(Kubernetes) 컨트롤러 (2) 쿠버네티스 (Kubernetes) 컨트롤러 (2) DaemonSet DaemonSet 전체 노드에서 Pod가 한 개씩 실행되도록 보장 log 수집기, 모니터링 에이전트와 같은 프로그램 실행 시 적용 apiVersion: apps/v1 kind: DaemonSet metadata: n heywantodo.tistory.com 앞선 컨트롤러 포스팅에서 job과 cronjob을 짤막하게 설명했는데, 내용이 헷갈리는 부분이 있어 따로 정리해보고자 한다. Job 파드의 애플리케이션 실행이 완료/종료되는 것에 초점을 맞춘 컨트롤러 https://kubernetes..
[Minikube] Windows에 Minikube 설치 minikube github GitHub - kubernetes/minikube: Run Kubernetes locally Run Kubernetes locally. Contribute to kubernetes/minikube development by creating an account on GitHub. github.com minikube 설치 가이드 minikube start minikube is local Kubernetes minikube.sigs.k8s.io Minikube? 쿠버네티스를 로컬에서 쉽게 실행할 수 있는 툴 리눅스 VM 내에서 고가용성이 없는 단일 노드 쿠버네티스 클러스터를 실행한다. 테스트나 개발용으로 사용하려는 사용자를..
[K8s] 컨피그 맵(Config map) 컨피그맵은 컨테이너에 필요한 환경 설정을 컨테이너와 분리해서 제공하는 기능이다. Cloud Native Architecture에서 컨테이너는 변하지 않는 자원이여야 한다. 그러나 개발용과 상용 서비스는 서로 다른 설정이 필요할 때가 많은데 이렇게 다른 설정으로 컨테이너를 실행해야 할 때 사용하는 것이 컨피그맵이다. 컨피그맵 사용 config-dev.yaml .data 하위 필드로 환경 설정 값을 넣는다. apiVersion: v1 kind: ConfigMap metadata: name: config-dev namespace: default data: DB_URL: localhost DB_USER: myuser DB_PASS: mypass DEBUG_INFO: d..
[K8s] NodePort VS LoadBalancer VS Ingress 너무 헷갈려서 정리..😢 ClusterIP 클러스터 내의 다른 앱이 접근할 수 있게 해준다. 외부 접근이 되지 않는다. 쿠버네티스 proxy를 통해선 접근이 가능하다. 외부로 노출되지 않고 클러스터 내에서만 접근 가능한 서비스에 적합하다. ExternalName 외부서비스를 쿠버네티스 내부에서 호출하고자 할 때 사용한다. Selector가 아닌 DNS 이름을 사용하는 특수한 서비스다. NodePort 서비스에 외부 트래픽을 직접 보낼 수 있는 방법이다. 모든 Node에 특정 포트를 열어두고, 이 포드로 보내지는 모든 트래픽을 서비스로 포워딩한다. 개발 및 테스트 환경에서 주로 사용된다. LoadBalancer Load Balanc..
[K8s] Helm Helm https://helm.sh/docs/ Docs Home Everything you need to know about how the documentation is organized. helm.sh 쿠버네티스 패키지 매니저 Helm의 기능 새로운 chart 생성 chart로 chart archive(tgz) files로 패키지화 하기 chart가 저장되는 chart 저장소와 상호작용 kubernetes cluster에 chart의 설치 및 제거, 릴리즈 주기 관리 Helm의 구성 Chart : Helm 패키지, k8s application, tool, service를 구동하는데 필요한 resource의 집합 Repository : helm chart를 모아두고 용유하는 저장소 ..
쿠버네티스 (Kubernetes) Volume 관리 Kubernetes Volume 파드 내의 컨테이너가 종료되더라도 파일 시스템이 유지되도록 하고 싶다면? 쿠버네티스 볼륨을 정의해서 사용 가능 여러 개의 컨테이너가 볼륨을 공유해서 사용할 수도 있음 Volumes On-disk files in a container are ephemeral, which presents some problems for non-trivial applications when running in containers. One problem is the loss of files when a container crashes. The kubelet restarts the container but with a clean state. A ..
쿠버네티스 (Kubernetes) Ingress 인그레스 컨트롤러 (Ingress Controller) 🔎 OSI 7계층 L1 : cable L2: MAC Address (LAN) L3: IP (DIP/SIP) L4: Port (SPord, Dpord) . . L7: Message (GET) LoadBalancer L4 : Port Number와 IP만 보기떄문에 Path를 못찾음 L7 : Path를 찾을 수 있음 Ingress Controller : L4 LoadBalancer를 쓰더라도 Rule을 통해 path를 찾을 수 있게 해줌 서비스 인그레스 (Service Ingress) : HTTP나 HTTPS를 통해 클러스터 내부의 서비스를 외부로 노출시키는 API 인그레스의 기능 외부 URL을 제공 트래..