https://chabin37.tistory.com/75
미니 PC를 활용한 나만의 서버 사용 후기
CPU : N100Ram : 16GB DDR4이러한 성능을 가진 저전력 CPU를 활용한 미니 PC를 구비해 테스트용 서버로 거의 1년정도 사용하고 있다.업비트 거래봇 등을 돌린것도 바로 이 서버이다. AWS의 복잡한 과금정
chabin37.tistory.com

미니 PC 관심이 많은 것 같아, 미니 PC관련을 활용해서 한(또는 할 예정인) 작업들을 추가로 작성하기로 하였다. 1장은 쿠버네티스와 ArgoCD 설치 내용이다(왜 이것뿐이냐고 생각할 수 있지만, 블로그 분량==시간 투자 분량...jenkins를 설치하려고 굉장히 많이 시도하였으며, 결국 실패하였다. GitHub Action을 활용해 CI를 진행하기로 하였고, 관련 내용은 추후 다룰 예정이다).
2025.05.14 추가 : PV와 PVC이 StorageName 미 지정/불일치로 인해 번번히 실패했었는데, 다음 명령어(하단의 5번 팁)를 통해 기본 StorageClass 추가하여 해결할 수 있음을 깨달았다. 추후에 Jenkins 로 CI를 진행할 계획이다.
주의 : 이 글은 K8S와 CI/CD 개념에 대해 비중있게 다루고 있지 않다(필자도 현재 개념을 완벽히 공부한게 아니기 때문). 따라서 개념에 대한 깊은 이해를 원하는 사람들은 다른 블로그를 참고하길 추천한다(개념도 곧 올릴 예정이긴 함).
지금 사용하는 서버에 K8s 마스터 노드와 워커 노드를 한번에 사용하게끔 설치하였다. 실제 현업에서는 대부분 이렇게 사용하지 않을 듯 하지만, 연습하는 입장에서 충분하다고 생각했다(+추가로 미니PC를 들여야 하는 충분한 이유 같기도 하다 ㅎㅎㅎ...언젠간 추가로 구축할 것....).
<참고한 블로그들 - 미니 PC+k8s+argoCD 상황에서의 기초적인 설치는 아래 두 블로그로 충분히 가능하니 중복 기술하지 않음.>
https://blog.injun.dev/posts/ubuntu-2404-kubernetes-single-node-cluster-setup/
Ubuntu 24.04 LTS 에서 단일 노드 쿠버네티스 클러스터 구축하기
1. 서론 쿠버네티스(Kubernetes)는 컨테이너화된 애플리케이션의 배포, 확장, 관리를 자동화하는 강력한 오픈소스 플랫폼이다. 대규모 분산 시스템에서 특히 유용하지만, 개발 및 테스트 목적으로
blog.injun.dev
홈랩 #2 - ArgoCD를 활용한 GitOps 환경 구축
홈랩 쿠버네티스 환경에 ArgoCD를 설치하여 GitOps 기반 인프라를 구축하는 방법을 설명한다.
blog.injun.dev
이 글대로만 하면 대부분은 설치와 사용 가능할 것이다. 따라서 나는 이를 따라 설치할 때 발생한 문제와 꿀팁 등을 작성하기로 하였다.
1. ArgoCD 외부접속 허용
물론 보안적으로 옳지 않을 수 있으나, 연습하는 입장인 만큼 편의를 위해 다음과 같이 설정하면 외부 접속이 가능하여 편하다(이를 설정 안하면, 우분투에서만 ArgoCD접속이 가능함. Ubuntu를 미니 PC로 서버처럼 사용하면 거의 불가능한 행위).
1.1. Service 타입 변경(NodePort-외부 접속 가능)
kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "NodePort"}}'
1.2. NodePort 확인(포트번호는 임의로 변경 번거로움)
kubectl get svc argocd-server -n argocd
1.3. [번외] 초기 비밀번호 확인 방법(로그인 이후 설정에서 비밀번호 변경 가능)
kubectl get secret argocd-initial-admin-secret -n argocd -o jsonpath="{.data.password}" | base64 --decode
2. 권한 관련 error
error: error loading config file "/etc/kubernetes/admin.conf": open /etc/kubernetes/admin.conf: permission denied
위 에러 발생 시, 아래와 같이 권한을 설정해줘야 함
sudo chmod 644 /etc/kubernetes/admin.conf
3. 쿠버네티스 실행 상태 한번에 확인하는 스크립트
echo "==================== 클러스터 정보 ===================="
kubectl cluster-info
echo -e "\n==================== 노드 상태 ===================="
kubectl get nodes -o wide
echo -e "\n==================== 쿠버네티스 버전 ===================="
kubectl version
echo -e "\n==================== 네임스페이스 목록 ===================="
kubectl get namespaces
echo -e "\n==================== 시스템 컴포넌트 상태 ===================="
kubectl get pods -n kube-system -o wide
echo -e "\n==================== 서비스 목록 ===================="
kubectl get svc -A
echo -e "\n==================== 전체 포드 상태 ===================="
kubectl get pods -A -o wide
echo -e "\n==================== kubelet 서비스 상태 ===================="
systemctl status kubelet | grep Active
복사해서 한번에 붙여넣기 한다면, 보기 편하게 상태를 확인할 수 있다. 초기 세팅에 도움되는 스크립트.
4. helm과 수동 Yaml 파일 작성 차이
최근엔 Helm 차트를 활용해 간단히 배포하도록 바뀌었다고 한다. 다음과 같은 물리적인 구조 차이가 존재한다.
Helm : Chart.yaml, values.yaml
Yaml 수동 작성 : Deployment, Service, ConfigMap, Secret, Ingress yaml 전부 작성
또한 Go 템플릿을 사용하고 Helm명령어를 추가로 사용할 수 있어 메리트가 높음.
5. 기본 StorageClass 추가
kubectl patch storageclass standard -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}''Infra' 카테고리의 다른 글
| [미니PC] 3. k8s에 환경 변수 적용하기(namespace기준, CI/CD와 별개로 미리 등록) (2) | 2025.05.16 |
|---|---|
| [미니PC] 2. Github Action+ArgoCD+GHCR를 활용한 CI/CD 구축 (0) | 2025.05.14 |
| [Docker] portainer와 watchtower (0) | 2025.03.26 |
| 미니 PC를 활용한 나만의 서버 사용 후기 (2) | 2025.03.23 |
| Proxy란? (3) | 2024.10.13 |