전체 글 669

[GitLab] unauthorized: authentication required 오류

GitLab Runner로 이미지를 GitLab Registry로 Push하던 중 unauthorized: authentication required 오류가 발생하였다. docker push gitlab.example.com/myproject/docs:latestThe push refers to a repository [gitlab.example.com/myproject/docs]630816f32edb: Preparing530d5553aec8: Preparing...4b0bab9ff599: Waitingd1c800db26c7: Waiting42755cf4ee95: Waitingunauthorized: authentication required docker login도 잘 되어서 의아했는데 공식문서에..

TroubleShooting 2025.08.26

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

Traefik에서 대량으로 포트 오픈 시 발생한 이슈

이슈사항 Kubernetes Ingress Controller로 Traefik을 사용하고 있다.Traefik 로드밸런서에 MetalLB로 외부 ip를 부여하고 EntryPoint을 등록해서 Port를 열려고 하는데 문제가 하나 발생했다. 단일한 포트 몇 개 여는데는 문제가 없으나 특정 범위의 포트를 일괄 개방하려니, Traefik에서 해당 기능을 지원하지 않았다. 그래서 파이썬 코드를 작성하여 특정 범위의 포트를 모두 단일 포트로 Traefik Helm의 values.yaml에 직접 넣어주었더니... values.yaml 이 거대해짐에 따라 여러가지 문제가 발생하였다. 결론부터 말하면이슈가 여러 개 발생하여, 결국 만 개에서 7천개 정도로 개방할 포트 수를 줄여서 임시방편으로 문제를 해결하였다. 내..

ubuntu 패키지 설치시 GPG Key가 필요한 이유

Ubuntu 패키지를 설치할 때,오픈소스 패키지의 경우 GPG Key를 curl 명령어로 미리 받아놓는데, 이유는 무엇일까? 예시) # GPG Key 받기curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.33/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg# Repository에 GPG Key 등록하기echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /' | sudo tee /etc/apt/sources.list.d/..

DevOps/Linux 2025.07.29

HTTPS 개념

HTTPS는 TLS를 이용한 HTTP 통신이다.TLS(Transport Layer Security)는 비대칭키 암호화(Public Key, Private Key) 방식을 이용한다. 간단히 말해,Public Key로 데이터를 암호화하면 PrivateKey로 복호화하거나PrivateKey로 서명하면 PublicKey로 검증하는 방식이다. 암호화나 검증에 사용되는 Key는 Public하게 공개해도 되지만복호화나 서명에 사용되는 Key는 Private하게 관리되어야 한다. 이것은 TLS의 가장 중요한 원리이다. 그렇다면 비대칭키 암호화 방식이 클라이언트와 서버 간 통신에 필요한 이유는 무엇일까? 클라이언트(웹브라우저)는 서버(웹서버)에 '도메인'(ex. naver.com, google.co..

CS/NETWORK 2025.07.23

DMZ망에 APT Mirror 서버 구축하기

GNS3로 간단한 네트워크망 구성 실습하기사내 인프라가 마땅치 않아인프라 구성에 고민하던 중 GNS3라는 시뮬레이션 환경을 알게 되었다. 네트워크 엔지니어가 아니라 전문적으로 네트워크 구성을 하지 못하지만구성하고 싶은 인프라lordofkangs.tistory.com 이전 포스팅에서 GNS3로 간단한 네트워크 망을 구축해보았다. 구축한 망에 Apt Mirror 서버를 구축해보자. 구성도는 위와 같다. *DMZ망 - APT Mirror 서버*내부망 - 운영망 - 우분투 서버 ( VLAN10, 노란색원 ) - 관리망 - DNS 서버 ( MGMT ) 외부와 접근 가능한 DMZ망에 Apt Mirror 서버를 구축하고 내부망에 위치한 우분투 서버는 DNS 서버로부터 IP를 받아 ..

DevOps/Linux 2025.07.23

파일시스템에 볼륨 추가하기

apt-mirror 서버 구성에 용량이 800GB 정도 필요한데 멋도 모르고 진행하다가 루트 디렉토리 파일시스템 사용률이 100%가 되었다. 일단은 1TB 외장디스크 장치를 apt mirror 서버에 추가해주었다. 파일시스템을 정리하고 볼륨을 생성해서 용량을 확보해보자. 1. 공간확보하기 루트 디렉토리가 100%이므로 우선 이 문제부터 해결해주어야 한다. apt-mirror의 패키지를 설치하는 과정에서 /var/spool/apt-mirror 디렉토리에 데이터가 쌓여 파일시스템 사용률 100%가 되었으므로 정리해준다. 어차피 apt-mirror를 다시 설치해야해서 나는 그냥 삭제를 해서 공간을 확보하였다. 민감한 환경이면 또 다른 공간에 백업을 추천한다. 2. 볼륨 그룹 확장하기 볼륨그..

DevOps/Linux 2025.07.18

GNS3로 간단한 네트워크망 구성 실습하기

사내 인프라가 마땅치 않아인프라 구성에 고민하던 중 GNS3라는 시뮬레이션 환경을 알게 되었다. 네트워크 엔지니어가 아니라 전문적으로 네트워크 구성을 하지 못하지만구성하고 싶은 인프라를 테스트하기 위한 기초적인 네트워크 환경이 필요하여 실습하게 되었다. 그러므로아래 내용은 부정확한 정보를 포함하고 있으니 참고용으로만 추천한다. 요구사항 1. VLAN 구성이 가능해야 한다. 2. 방화벽으로 물리적 망분리가 가능해야 한다. 3. DMZ 망이 존재해야 한다. 4. 인터넷 접속이 가능해야 한다. 5. 가능한 이중화 구성이 되어야 한다. 방화벽 방화벽은 망 밖에서 들어오는 트래픽의 접근을 제어하거나 특정한 IP로 라우팅 시키는 기초적인 기능만 제공하면 되므로, 방화벽 장비가 아닌 라우터(c3725..

CS/NETWORK 2025.07.16