DevOps/K8S 21

ArgoCD로 멀티 클러스터 배포 관리하기

관리용 클러스터에 ArgoCD를 배포하고 해당 ArgoCD에서 여러 클러스터의 배포를 관리하려고 한다. ArgoCD가 여러 클러스터에 접근하려면 인증정보를 가지고 있어야 하는데, 인증정보를 등록하는 가장 간단한 방법은 kubectl config에 등록된 context를 바로 추가하는 것이다. 1. 관리용 K8S 구축 및 ArgoCD 서비스 배포 ( Skip ) 2. Argo CLI 환경 구성하기 LINUX AMD64 환경이라면 이 방법이 가장 간단하다. 배포된 ArgoCD GUI로 접속하고 Documentation 탭에서 LINUX(AMD64)용 CLI를 다운로드한다. 그럼 argocd-linux-amd64 파일을 받을 수 있는데, argocd-linux-amd64 파일을 linux 서버로 ..

DevOps/K8S 2025.08.25

kubectl로 여러 Kubernetes 클러스터 제어하기

여러 대의 Kubernetes 클러스터를 운영할 때는 각 클러스터의 컨트롤 플레인에 개별적으로 접속해 kubectl을 실행하기보다, 단일 관리 지점에서 kubectl로 통합 제어하는 방식이 관리 효율성과 보안 측면에서 더 유리하다. kubectl 패키지는 ~/.kube/config 파일에 담긴 인증정보로 Cluster에 접근하는데, 이를 Context 단위로 관리한다. kubectl Context는 두 가지 정보로 이루어진다. 1) 클러스터2) 유저 config에 클러스터 등록하기 kubectl과 K8S 클러스터는 TLS 통신을 한다. kubectl 서버는 클러스터에서 보낸 데이터가 정말 클러스터에서 보낸건지 검증을 해야한다. 그래서 클러스터에서 공식으로 발급한 CA PublicKey를 가지고 있..

DevOps/K8S 2025.08.25

Kubernetes 네트워크 동작원리

쿠버네티스 네트워크의 핵심 개념은 2가지이다. 1) kube-proxy2) CNI ( Container Network Interface ) kube-proxy는 서비스에서 파드로 트래픽을 이동시키는 역할을 하고 CNI는 서로 다른 노드 간의 트래픽 이동을 담당한다. 만약 A 노드에 배포된 kube-proxy가 B 노드에 있는 파드로 트래픽을 이동시킨다고 하면 서로 다른 노드이므로 CNI를 타고 트래픽을 이동하는 것이다. 정리하면트래픽 이동을 위한 룰은 kube-proxy가 담당하고 실제 노드 간 트래픽 이동은 CNI가 담당하는 것이다. kube-proxy kube-proxy는 iptables라는 tool을 이용하여 netfilter가 바라보는 룰을 조작하는 프로그램이다. 리눅스 서버는 netfil..

DevOps/K8S 2025.06.18

[K8S] Containerd에 Registry 설정하기 ( with Harbor )

Containerd로 생성된 컨테이너가 특정 Registry에서 이미지를 가져오도록 설정해보자. https://github.com/containerd/containerd/blob/main/docs/cri/registry.md#using-self-signed-certificates containerd/docs/cri/registry.md at main · containerd/containerdAn open and reliable container runtime. Contribute to containerd/containerd development by creating an account on GitHub.github.com 공식문서에는 deprecated된 방법이 메인으로 작성되어 있어서 혼란이 있을..

DevOps/K8S 2025.06.04

[K8S] Kubernetes 동작원리

Docker는 컨테이너 기술의 혁명을 가져왔다.   [Docker] 컨테이너란 무엇일까?Docker 아이콘은 고래 하나가 여러 개의 컨테이너를 싣고 있는 모습이다. 여기서, 고래는 '컴퓨터'이고 컨테이너는 '격리된 프로세스'이다. 도커가 혁명적인 이유는 컨테이너라는 환경분리를 리눅lordofkangs.tistory.com  리눅스 기술( cgroups, namespace)을 활용하여 리소스를 독립적으로 격리하고 할당이 가능해지자, 컨테이너(Container)라는 개념이 등장하였다. 하나의 컴퓨터 안의 여러 개의 컨테이너가 만들어졌고 모두 독립적으로 활동하였다. 이렇게 되자, 수많은 컨테이너를 관리하는 기술이 필요해졌는데, 그것이 바로 쿠버네티스(Kubernetes)이다.  쿠버네티스는 여러 대의 컴퓨터(..

DevOps/K8S 2024.02.25

[Kubernetes] NFS 서버에 PV 만들어 접근하기 ( 우분투 환경 )

컨테이너가 내려갔다가 올라오면 컨테이너 내부 데이터는 사라진다. 데이터를 유지하려면 외부스토리지에 마운트하여 데이터를 저장해야 한다. 클러스터 내부 저장소에 마운트하면 컨테이너 생명주기와 클러스터 생명주기가 다르므로 데이터가 유지될 수 있다. 그러나 클러스터가 내려가면 데이터 역시 사라진다. 클러스터 상태와 무관하게 데이터를 유지하려면 클러스터 외부의 스토리지에 컨테이너가 마운트 되어야 한다. 이번 포스팅에서는 MiniKube 클러스터 밖에 NFS 서버(외부스토리지)를 구성하여 클러스터 밖의 저장소와 데이터를 공유하는 과정을 다루어 보겠다. 우분투OS 로컬환경에 MiniKube와 NFS 서버를 띄어 실습을 진행해보겠다. NFS 서버 생성하기 ( 우분투 환경 ) $ sudo apt-get update $ ..

DevOps/K8S 2023.10.16

[Kubernetes] MySQL PV, PVC 적용하기

[Kubernetes] MySQL 서비스 및 디플로이먼트 생성하기 [Kubernetes] 프론트엔드, 백엔드 서비스 및 디플로이먼트 생성하기 [Kubernetes] Minikube 설치 및 인그레스 설치 및 설정하기 [Docker] Nginx - React - Nodejs - Mysql 연동 실습하기 이번 포스팅에서 구현할 시스 lordofkangs.tistory.com 지난 포스팅까지 간단한 풀스택 시스템을 쿠버네티스에 클러스터 적용해보았다. MySQL DB에 데이터를 입력하고 조회까지 하였지만 컨테이너를 내렸다고 올리면 데이터가 모두 사라져 버린다. 컨테이너를 노드 안의 외부볼륨에 마운트 하면 컨테이너가 내려가더라도 데이터를 유지할 수 있다. GitHub - mgKang3646/Goorm_Practi..

DevOps/K8S 2023.10.16

[Kubernetes] ClusterIP, NodePort, LoadBalancer의 차이

쿠버네티스에서 가장 많이 사용하는 서비스(Service) 유형에는 3가지가 있다. 1. ClusterIP 2. NodePort 3. LoadBalancer 3가지가 어떤 역할을 하는지를 알아보기 전에, 먼저 간략히 IP와 Port 개념을 알아보자. IP는 네트워크상의 특정 노드를 가리키는 주소이다. 그리고 Port는 노드 안에 존재하는 여러가지 서비스의 창구이다. 그러므로 하나의 노드는 하나의 IP와 여러 개의 Port를 갖는다. Port는 16비트로 이루어져있고 0~65535까지 존재한다. 쿠버네티스 클러스터 안에는 여러 오브젝트가 존재하는데, IP가 부여되어 하나의 노드로써 역할을 한다. 서비스(Service)도 IP가 부여되는 클러스터 내 오브젝트이다. 서비스는 하나의 IP와 여러 개의 포트를 가지..

DevOps/K8S 2023.10.13