본문 바로가기
728x90

데브옵스 이야기/Kubernetes9

kubernetes 인증/인가 - OIDC (AWS EKS) 앞서 작성한 글인 인증/인가에 대하여.. 와 OIDC(로컬환경실습)에서 인증/인가와 `OIDC`의 개념에 대해서는 충분히 알아보았습니다.하지만 앞에서 진행한 실습이 local 환경이다보니 실무에서 사용하듯이 외부 `idP`를 통한 인증/인가가 불가능했는데요. 이번 포스팅에서는 `AWS EKS` 환경에서 `OIDC`를 설정하여 사용자(개발자)가 `kubectl` 명령어로 `EKS Cluster`에 접근할 때에 허용된 리소스에 접근할 수 있는 실습을 진행해보겠습니다. 실습 실습 환경 다이어그램전체적인 다이어그램은 위와 같습니다. 1. `kubectl get nodes` 실행 2. `kubelogin`이 `Dex`에 `Authorization Request` 전송 (`client_id`, `redirec.. 2026. 4. 3.
kubernetes 인증/인가 - OIDC (로컬 환경 실습) 지난 글에서는 k8s의 인증(Authentication)과 인가(Authorization)에 대해 개념을 공부하고 실습을 진행했습니다. 하지만 실제 업무에서는 개발자가 `kubectl`로 pod에 접근하거나 Devops 엔지니어가 `cluster` 상태를 확인한다거나, 여러 `cluster`를 관리한다거나 처럼 사람이 k8s에 접근하는 경우가 많습니다. 이때, k8s는 OIDC(OpenID Connect)를 이용하여 외부 인증 시스템과 연동할 수 있습니다. OIDC(OpenID Connect) `OIDC`는 `OAuth 2.0` 기반의 인증 프로토콜 입니다. OAuth 2.0과 OIDC의 관계`OIDC`를 이해하려면 먼저 `OAuth 2.0` 을 알아야 합니다.`OAuth 2.0`은 인가 프로토콜로.. 2026. 3. 13.
쿠버네티스 인증인가에 대하여... kubernetes Control Plane의 인증(AuthX)은 [요청자가 누구인가]를 확인하는 과정이고, 인가(AuthZ)는 [그 요청자가 해당 리소스에 대해 실행하려는 동작을 할 권한이 있는가]를 판단하는 과정입니다. 모든 API 요청은 이 두 단계를 통과해야 admission을 통해 ETCD에 반영되며, 인증 실패시 401, 인가 실패시 403 HTTP 상태 코드가 반환됩니다. 이러한 쿠버네티스의 인증/인가를 직접 실습해보면서 알아보겠습니다. (기초 주의) 실습 환경 구성실습을 진행할 디렉토리(폴더) 생성mkdir /k8s-auth-stury && cd /k8s-auth-study 실습은 kind를 통해 local 머신에서 kubernetes clsuter를 생성하여 진행할 것 이기에, 해당 .. 2026. 3. 6.
쿠버네티스 장애 원인 분석을 Slack으로 받아보기 (feat. K8sGPT) 배경EKS를 운영하다 보면 크고 작은 장애와 마주하게 됩니다. (Pod가 뜨지 않거나, Service가 연결되지 않거나, Ingress가 정상인데 트래픽이 오지 않는 등 원인은 다양합니다.) 보통 `kubectl describe`. `kubectl logs`, pod 상세에서 event 세션 확인, Prometheus의 Alertmanager를 통해 알람을 확인하는 방식으로 문제의 원인을 파악합니다. 하지만 실제 운영 환경에서는 에러 원인은 여러 리소스에 걸쳐 있고, 맥락을 종합해야 하는 경우가 많습니다. AI를 활용해 Kubernetes 클러스터 운영을 조금 더 효율적으로 만들 수 없을까 고민하던 중, 문득 2024년 9월 CNKCD2024에서 발표된 [당신이 누구던 쿠버네티스를 사용한다면 K8s.. 2026. 1. 10.
stakater/Reloader 사용시 configmap, secret 변경할 시에 감지 안되는 이슈 K8s 운영 과정에서 ConfigMap/Secret 변경 시 Pod를 재기동하는 것은 꼭 필요한 프로세스입니다.다만 사람이 수동으로 처리하기 어렵기 때문에, 보통은 Helm 템플릿 + checksum annotation(`checksum/config`) 방식으로 ConfigMap/Secret 변경을 감지해 자동으로 Rolling Update가 일어나도록 구성합니다. 하지만 사내에서는 아직 Helm을 도입하지 않았고(준비중), Kustomize를 활용하여 리소스를 관리하고 있기 때문에 오픈소스인 stakater/reloader를 도입해 ConfigMap/Secret 변경 시 워크로드를 자동으로 재배포하도록 운영하고 있습니다. 그런데 운영 중 ConfigMap이 변경되었음에도 간헐적으로 Pod가 재시작되지 .. 2025. 12. 22.
K8s의 Memory? (RAM, Storage) Memory?많은 사람들이 메모리와 스토리지를 동일한 것으로 생각하기도 합니다. 아마 지칭하는 단위를 GB를 사용하기 때문이 아닐까 싶은데요.둘 다 용량을 나타내는 GB단위를 사용하는 이유는 기본적으로 용량을 측정하는 표준 단위이기 때문입니다. 엄연히 다른 Memory우리가 흔히 말하는 메모리에는 크게 RAM이라고 하는 휘발성 메모리, Storage라고 불리는 영구적 메모리 2가지가 존재합니다. K8s의 Memory이 두 가지의 차이를 살펴보기 전에 먼저 Pod를 정의하는 manifest file에 선언하는 resource.limit.memory와 resource.request.memory는 무엇을 의미할까요?apiVersion: v1kind: Podmetadata: name: example-pods.. 2024. 8. 2.
Kubernetes common errors CrashLoopBackOff설명: 파드가 반복적으로 충돌하고 재시작합니다.문제 해결 방법 : 애플리케이션의 시작 및 초기화 코드를 조사합니다.명령어 # 파드 로그 확인kubectl logs # Pod 명세 확인kubectl describe pod ImagePullBackOff설명: Kubernetes가 레지스트리에서 컨테이너 이미지를 가져올 수 없습니다.문제 해결 방법:이미지 이름과 태그를 확인합니다.이미지 레지스트리 자격 증명을 확인합니다.지정된 레지스트리에 이미지가 존재하는지 확인합니다. Pending Pods설명: 파드가 "Pending" 상태에 머물며 스케줄링되지 않습니다.문제 해결 방법:노드 자원 (CPU, 메모리)을 확인하여 충분한 용량이 있는지 확인합니다.노드 셀렉터 또는 어피니티를 사용.. 2024. 7. 29.
CKA, CKAD 취득 후기 들어가며 사내에서 Kubernetes를 도입하기 위해 공부하던 찰나 쿠버네티스 관련 자격증이 있다는 것을 알게 되었습니다. 하지만 당시에 자격증 취득을 위한 공부보단 하루 빨리 실무에 적용하기 급급했던터라 수박겉핥기 식으로 공부를 했었습니다. 그렇게 오직 이론보단 실무를 위하여 Kubernetes를 도입하여 운영했었고, 어느정도 시간이 지남에 따라 안정화가 되어 자격증을 공부를 하기 시작했습니다. (시기로 보자면 23년 11월부터 준비를 했네요.) 23년 12월에 2번의 시험을 본 후 연달아 불합격했고 24년 1월에 한 번 더 결제를 하여 2번을 보아 합격했습니다!(총 4번을 보았네요…) 그리고 바로 2주 뒤 45% 설날 세일때 이때다 싶어 CKAD까지 1번의 불합격에 이어 결국 합격을 했습니다..! .. 2024. 3. 4.
fluent-bit를 활용한 Metric Data 수집하기 들어가며kubernetes를 상용으로 운영하기 전 CPU나 system에 대한 Metrics Data를 수집하고 시각화하여 원활한 운영을 해야할 필요가 있었습니다.현재 EFK Stack으로 logging system을 구축해놓았었는데, 그 중 fluent-bit를 활용하여 metrics data를 수집하는 방법에 대해 다뤄보려고 합니다.CPU Metricfluent-bit의 input plugin중 cpu는 기본적으로 프로세스 혹은 전체 시스템의 CPU 사용량을 측정합니다.설정된 시간에 대해 백분율 단위로 수집되며 현재 이 plugin은 linux에서만 사용하실 수 있습니다.key key namedescriptioncpu_p이 값은 사용자 및 커널 공간에 소요된 사간 대비 전체 시스템의 CPU 사용량을 .. 2023. 4. 26.
728x90