

전에 꼬꼬막 프로젝트 때
Docker + docker-compose + github Action 이렇게 해서 CI/CD를 구축해봤었는데 그 과정에서 쿠버네티스를 참 많이 들었엇다.
그래서 아 쿠버네티스는 도커같은 거구나..! 하고 넘어갔던 것이 기억난다.
하지만 이번엔 진짜로 쿠버네티스를 다뤄보며 쿠버네티스를 익혔다.

쿠버네티스(Kubernetes)는 컨테이너 오케스트레이션 플랫폼으로, 대규모 컨테이너화된 애플리케이션을 관리하고 배포하기 위한 오픈 소스 도구이다. Google에서 개발하였다고 한다.
쿠버네티스는 클라우드 환경 뿐만 아니라 온프레미스 환경에서도 사용할 수 있으며, 컨테이너 오케스트레이션 및 관리를 단순화하고 스케일링, 가용성, 보안 및 관리를 향상시키는 데 도움이 된다.

Compose는 단순히 여러 개의 컨테이너를 한번에 관리하는 것이고, 쿠버네티스는 클러스터 환경에서 컨테이너를 관리하기 위한 도구이다.
문법도 다르고
쿠버네티스는 yaml파일에 정의된 내용을 바탕으로 쿠버네티스 클러스터 내에서 쿠버네티스 오브젝트를 만들고 컨트롤러를 만들지만
도커 컴포즈는 yaml파일에 정의된 내용을 바탕으로 Host컴퓨터 내에 컨테이너를 만든다는 점에 차이점이 있다.

파드 (Pod): 컨테이너의 기본 배포 단위로 하나 이상의 컨테이너를 그룹화한다.
서비스 (Service): 파드에 대한 로드 밸런싱 및 네트워크 노출을 관리한다.
볼륨 (Volume): 데이터를 파드 내에서 유지하기 위한 스토리지 솔루션을 제공한다.
스토리지 관리 (Persistent Volumes, Persistent Volume Claims): 데이터의 지속성을 관리하기 위한 기능을 제공한다.
여기서 젤 중요한건 파드와 pv,pvc라고 생각한다.
사실 첨에 공부도 안하고 막 했다가 pv가 뭐지...? pvc가 왜 필요한거지..? 하면서 삽질했던 기억이난다.
정말 파드, pv, pvc 만 알아도 쿠버네티스를 안다고 할 수 있을 정도로 중요한 용어인 것 같다.
간단히 말해, Pod는 컨테이너의 실행을 담당하고, PV는 영구적인 스토리지를 나타내며, PVC는 파드가 스토리지를 요청하고 연결하는 데 사용된다.

ChirpStack은 IoT 장치 및 센서를 관리하고 연결하기 위한 오픈 소스 소프트웨어다. LPWAN 기술을 활용하여 데이터 수집 및 IoT 애플리케이션 개발을 지원한다.
스마트 시티, 농업자동화, 환경 모니터링 등 IoT에 많이 적용된다.
minikube를 도커로 run 하고 chirspstack을 세팅하기 위하여 네임스페이스를 생성해줬다.
해당 네임스페이스에서 chirspstack의 pv와 pvc를 생성하고 pod를 생성하니 pv와 pcv가 연결된 것을 확인할 수 있었다.
추가로 postgres, redis 배포를 하고
mosquitto 배포,
chirpstack-application를 배포를 하니
postgres-as, postgres-ns와 application server가 연결되며 postgres 데이터베이스를 사용할 수 있게 되었다.
그리고 포트포워딩을 해주면 chirpstack을 화면으로 볼 수 있게 된다.
kubectl port-forward --address 0.0.0.0 services/chirpstack-application-server 8888:8080 -n chirpstack-dev

이렇게 로그인 화면이 뜬다.
username: admin
pw: admin
으로 접속해주자.
이제 iot기계의 데이터 송수신을 위하여 라즈베리파이에 서버를 띄울것이다.
라즈베리 파이를 굽고 접속해준다.