[K8s] Storage Class스토리지 클래스는 관리자가 제공하는 스토리지의 classes를 설명할 수 있는 방법을 제공한다.클래스는 서비스의 품질 수준, 백업 정책, 클러스터 관리자가 정한 임의의 정책에 매핑될 수 있다. StorageClass 리소스 해당 스토리지클래스에 속하는 PV를 동적으로 프로비저닝할 때 사용된다.스토리지클래스의 이름은 중요하며, 사용자가 특정 클래스를 요청할 수 있는 방법으로 사용된다. apiVersion: storage.k8s.io/v1kind: StorageClassmetadata: name: standardprovisioner: kubernetes.io/aws-ebsparameters: type: gp2reclaimPolicy: RetainallowVolumeExp..
[K8s] PV(Persistent Volume), PVC(Persistent Volume Claim)이전에 볼륨에 관련하여 포스팅을 하면서 PV/PVC에 대해 다뤘는데, 헷갈리는 개념이 있어 더 자세히 정리해보고자 한다. [K8s] 쿠버네티스(Kubernetes) Volume 관리쿠버네티스 (Kubernetes) Volume 관리 Kubernetes Volume 파드 내의 컨테이너가 종료되더라도 파일 시스템이 유지되도록 하고 싶다면? 쿠버네티스 볼륨을 정의해서 사용 가능 여러 개의 컨테이너가 볼륨을heywantodo.tistory.com 쿠버네티스 컨테이너 내의 디스크에 있는 파일은 임시적이며, 이는 몇가지 문제가 있다. 1. 컨테이너가 crash될 때 파일이 손실된다2. pod에서 같이 실행되는 컨테..
[K8s] kubeconfig를 사용하여 다중 클러스터 접근 구성하기만약 여러 클러스터가 있고, 사용자와 구성요소가 다양한 방식으로 인증할 때,kubeconfig 파일들을 사용해서 클러스터, 사용자, 네임스페이스 및 인증 메커니즘에 대한 정보를 관리할 수 있다.기본적으로 kubectl은 $HOME/.kube 디렉터리에서 config라는 이름의 파일을 찾는다. 컨텍스트 (Context)kubeconfig에서 컨텍스트 요소는 편리한 이름으로 접속 매개 변수를 묶는데 사용한다.각 컨텍스트는 클러스터, 네임스페이스. 사용자라는 세 가지 매개변수를 가진다. kubectl config use-context위 명령어를 사용하면 컨텍스트를 선택 할 수있다. 클러스터, 사용자, 컨텍스트 정의만약 개발 작업을 위한 클러스..
[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 네임스페이스에 명명된 서비스 어카운트를 ..
[Docker] Docker 이미지 빌드를 위한 Makefile 활용 방법 도커 이미지를 빌드 할 때 Makefile을 사용하면 자동화된 빌드 프로세스를 구성할 수 있다. 이를 통해 반복적인 작업을 간소화하고 일관성 있는 빌드를 유지할 수 있다. Makefile 작성하기 Makefile은 빌드 프로세스를 정의하고 관리하는데 사용된다. IMAGE_NAME := my-docker-image IMAGE_TAG := latest build: docker build -t ${IMAGE_NAME}:${IMAGE_TAG} . run docker run -it ${IMAGE_NAME}:${IMAGE_TAG} clean docker rmi ${IMAGE_NAME}:${IMAGE_TAG} build : 도커 이미지를 빌드..
[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..
[Docker] ubuntu 22.04 docker 설치 https://docs.docker.com/engine/install/ubuntu/ Install Docker Engine on Ubuntu Jumpstart your client-side server applications with Docker Engine on Ubuntu. This guide details prerequisites and multiple methods to install. docs.docker.com 자세한 설치 방법은 공식 문서에서 확인 Ubuntu 패키지 설치 sudo apt update -y sudo apt-get install apt-transport-https \ ca-certificates curl gnupg-age..
[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..