본문 바로가기
반응형

Kubernetes36

Kubernetes에서 Vault로 비밀 다루기: Seal, Sync, 주입 들어가며클라우드 네이티브 환경에서 비밀 정보를 안전하게 다루는 것은 DevOps와 플랫폼 팀의 핵심 과제다. Kubernetes에서 HashiCorp Vault를 연동해 Secret을 주입하는 방식은 크게 3가지 흐름으로 나뉜다. 각 방식의 동작 주체, Secret 저장 위치, 갱신 전략이 완전히 다르다. 또한, Vault의 Seal/Unseal 개념은 Vault 서버의 보안 상태를 제어하는 관문 역할을 한다.🔒 Vault Seal / 🔓 Unseal 이란?Vault는 모든 Secret 데이터를 마스터 키(Master Key) 로 암호화하여 storage(기본적으로는 etcd가 아닌 Vault 자체 저장소)에 저장한다. 하지만 마스터 키가 평문으로 디스크에 저장되면 탈취 위험이 있기 때문에, Vaul.. 2025. 11. 27.
그림과 실습으로 배우는 쿠버네티스 입문 📘 서평: 《그림과 실습으로 배우는 쿠버네티스 입문》클라우드 환경에서 일반적인 가상머신 기반 구조를 쿠버네티스로 이전하면서,처음 쿠버네티스를 접하는 개발자에게 어떻게 이 기술을 이해시키고 익히게 할 수 있을까 고민하던 시점에 이 책을 만났습니다.개념을 설명할 때 ‘그림’만큼 강력한 도구는 없다고 생각합니다. 그래서 제가 작성하는 발표자료나 기술문서에도 늘 시각 자료를 넣습니다.이 책은 그런 면에서 정말 매력적이었습니다. 이름 그대로 ‘그림과 실습’ 중심으로 구성되어 있어,쿠버네티스를 처음 접하는 분들에게 개념을 시각적으로 쉽게 이해시켜 주고,직접 따라 하며 감각적으로 익힐 수 있도록 돕습니다.💬 만화로 시작하는 친숙한 접근 책의 챕터의 첫부분은 쿠버네티스 개념을 대화 형식의 만화로 소개합니다.지금까.. 2025. 11. 2.
Kubernetes에서 애플리케이션 설정 우선순위 이해하기 목차 ConfigMap, Secret, 그리고 내부 설정 중 무엇이 이길까?Kubernetes에서 애플리케이션을 배포하다 보면,“앱 내부 설정값이 우선일까, ConfigMap/Secret이 우선일까?”라는 의문이 자주 생깁니다.특히 운영 중인 서비스의 환경설정이 기대와 다르게 동작할 때,이 우선순위를 정확히 이해하고 있지 않으면 디버깅이 어렵습니다.이 글에서는 Kubernetes가 실제로 설정값을 어떻게 주입하고,최종적으로 어떤 값이 적용되는지를 프레임워크별로 정리해보겠습니다.1️⃣ Kubernetes는 ‘우선순위’를 결정하지 않는다먼저 중요한 사실 하나:Kubernetes는 단지 환경 변수나 파일 형태로 설정을 주입할 뿐,어떤 값이 “최종적으로 우선”인지는 애플리케이션의 설정 로더가 결정합니다.즉.. 2025. 10. 23.
_helpers.tpl란? Helm Chart 템플릿 파일 중 하나예요.보통 charts//templates/_helpers.tpl 경로에 있습니다.여기에는 템플릿 함수(helpers) 가 정의돼 있어서, Chart의 여러 템플릿(deployment.yaml, service.yaml, ingress.yaml 등)에서 반복되는 부분을 재사용할 수 있게 해줍니다.예: 리소스 이름 규칙(fullname, name, chart)이나 label 공통 정의 등을 여기서 함수로 정의하고 다른 곳에서 호출합니다.# _helpers.tpl{{- define "mychart.fullname" -}}{{- printf "%s-%s" .Release.Name .Chart.Name | trunc 63 | trimSuffix "-" -}}{{- end }.. 2025. 9. 18.
[kubernetes] kind 설치 및 간단한 실행방법 목차1) 사전 준비Docker Desktop 설치 (WSL2 백엔드 권장). Docker가 켜져 있어야 합니다.kubectl 설치 (없다면 함께 설치).Windows (PowerShell)# Docker Desktop 설치(수동 설치 권장), 설치 후 실행# kubectlwinget install -e --id Kubernetes.kubectl # 또는choco install kubernetes-cli -y # 또는scoop install kubectl# kindchoco install kind -y # 또는scoop install kind # 또는winget .. 2025. 9. 6.
ArgoCD 배포 시 실패한 Pod는 삭제됐는데 ReplicaSet은 남아있다? 괜찮은 걸까? 쿠버네티스 환경에서 ArgoCD로 애플리케이션을 배포하다 보면, 실패한 Pod는 삭제됐는데 ReplicaSet(RS)은 계속 남아 있는 상황을 접할 수 있습니다. 처음에는 “이거 뭔가 잘못된 거 아닌가?” 싶지만, 사실은 정상적인 동작입니다. 이번 글에서는 왜 이런 현상이 발생하는지, ReplicaSet을 어떻게 관리해야 하는지 정리해 보겠습니다.1. ReplicaSet이 남는 이유Deployment의 기본 동작 원리쿠버네티스에서 Deployment(또는 Argo Rollouts)는 직접 Pod를 생성하지 않습니다. 대신 ReplicaSet을 생성하고, ReplicaSet이 파드를 관리합니다. 따라서 파드가 실패해 삭제되더라도 ReplicaSet은 그대로 남아 있으며, 필요 시 새 파드를 다시 만들 준비.. 2025. 8. 29.
Argo CD에서 “읽기 전용(READ-ONLY)” 사용자 만들기 (Helm/Terraform 예시) 로컬 계정 하나 만들고role:readonly 를 정의해 조회만 허용policy.default 를 role:readonly 로 두되, admin은 명시적으로 전권 매핑Helm values 로 관리하고, 적용 후 argocd-server 재시작 → 비밀번호/토큰 발급 → 권한 확인1) 개념 한 줄 요약Argo CD 권한은 Casbin 정책(policy.csv) 으로 정의합니다.p, , , , , allow|denyg, , role: (사용자→역할 매핑)policy.default 는 매핑되지 않은 사용자의 기본 역할입니다.deny가 allow를 이깁니다. 읽기 전용 역할에 굳이 deny 줄을 많이 넣기보다, “허용만 명시”하는 편이 안전합니다.admin은 반드시 명시 매핑하세요. 기본 역할이 readonly.. 2025. 8. 29.
Argo CD에서 이미지 변경 트리거 안되는 배포 트러블 슈팅 — GitOps + ECR 날짜태그 + Argo CD Image Updater + IRSA, 그리고 Helm으로 한 장 템플릿 감싸기까지이 글은 제가 실제로 겪은 “ECR 이미지가 바뀌었는데 Argo CD가 변화를 못 잡는다” 문제를 완전 종료한 과정 정리입니다.길지만, 그대로 따르면 끝납니다. (폴더 구조, Terraform, Helm, 어노테이션, GitHub Actions, 체크리스트 모두 포함)문제의 본질: Argo CD는 “Git 변경”만 본다컨테이너 이미지를 :latest 로 계속 덮어써도 Git 매니페스트가 그대로면 Argo CD는 “변화 없음”으로 봅니다.해결 핵심은 두 가지 중 하나:A안(불변 태그 + Git 반영): 매 빌드마다 새 태그(날짜/커밋SHA) 를 만들고, 그 태그를 Git에.. 2025. 8. 25.
ArgoCD + ALB + CloudFront 환경에서 HTTPS 리다이렉션 정리 쿠버네티스에서 ArgoCD와 여러 앱을 ALB(aws-load-balancer-controller) 뒤에 붙이고, 그 앞단에 CloudFront를 둔 구조를 쓰다 보면 HTTP→HTTPS 리다이렉션 충돌 문제가 자주 발생합니다. 이번 글에서는 실제 경험한 케이스와 함께, 왜 문제가 생기는지, 그리고 어떻게 정리하는 것이 좋은지 정리합니다.문제 상황ArgoCD, Grafana, Invitation 앱 등 여러 서비스가 같은 ALB 그룹(shared-alb) 을 공유.Invitation 앱의 Ingress에 리다이렉트 액션 (alb.ingress.kubernetes.io/actions.redirect-to-https) 이 설정되어 있었음.이 액션이 host 제한 없이 / catch-all 로 걸려 있어, 같.. 2025. 8. 24.
AWS ALB Ingress Controller – 포트 & Path 기반 라우팅 완전 정리 목차 쿠버네티스 환경에서 AWS ALB Ingress Controller를 사용하면, 하나의 ALB로 여러 서비스에 트래픽을 라우팅할 수 있습니다.이 글에서는 포트와 Path를 활용한 라우팅 개념부터 Terraform 예제, 그리고 포트 매핑 케이스별 매트릭스와 패킷 흐름까지 전부 정리합니다.1. ALB + Kubernetes에서 포트 흐름 이해하기ALB → Kubernetes Service → Pod 컨테이너 포트는 아래 4단계로 연결됩니다.[Client] ↓ Listener Port[ALB Listener] ↓ Target Group Port (Service Port)[Kubernetes Service] ↓ targetPort[Pod Container Port] 구분 설명예시ALB Li.. 2025. 8. 8.
AWS EKS에서 externalTrafficPolicy 설정에 따른 NLB 헬스체크 동작 차이: Ingress Controller vs 일반 서비스 AWS EKS에서 Kubernetes 서비스에 NLB(Network Load Balancer)를 연동할 때,externalTrafficPolicy 설정에 따라 NLB의 타겟 헬스체크 상태가 다르게 표시되는 현상을 종종 마주하게 됩니다.이 글에서는 특히 Ingress Controller를 사용할 때와 일반적인 서비스(e.g. echo-service)를 사용할 때externalTrafficPolicy=Cluster일 때의 동작이 왜 다르게 보이는지를 기술적으로 분석합니다.✅ externalTrafficPolicy 란?Kubernetes 서비스에서 외부로부터 들어온 트래픽을 어떻게 Pod에 전달할 것인지를 결정하는 설정입니다. 설정 값설명Cluster트래픽이 도달한 노드에 파드가 없어도 kube-proxy가 .. 2025. 8. 7.
일반 서비스 (echo-service)와 Ingress Controller의 차이 ingress controller 를 nlb를 쓸때 자주 사용하는데 이게 주로 nginx 써드파티를 쓰다보니 자세한 설명이 자주 없더군요.그래서 일반 service와 nginx controller를 한번 정리해보았습니다.✅ 핵심 차이: 서비스 대상(엔드포인트) 의 구조가 다르기 때문 항목일반 서비스 (echo-service)Ingress Controller서비스 대상 (selector)일반 파드 (예: echo)NGINX Ingress Controller 자체가 파드 대상NodePort 요청 시 처리 방식kube-proxy가 어디든 있는 echo 파드로 라우팅 가능NodePort → Ingress Pod → 라우팅외부 트래픽 최종 종착지echo 파드NGINX 컨트롤러가 프록시처럼 중간 처리요청 처리 실패.. 2025. 8. 7.
반응형