전체 글 687

영구적인 Service Account Token 만들기

아래처럼 ServiceAccount에서 토큰을 추출하면 토큰만료기간이 정해져있어 보안에는 좋지만 관리가 쉽지 않다. # 한시적인 Token 생성 kubectl create token -n --duration=24h 토큰을 영구적으로 사용하려면 kubernetes.io/service-account-token 타입의 Secret을 생성하여 ControlPlane이 etcd에 저장된 Token을 만료시간을 reconciliation 하도록 해야한다. To create a non-expiring, persisted API token for a ServiceAccount, create a Secret of type kubernetes.io/service-account-token with an annotat..

Ops/Kubernetes 2026.02.04

node-core-dns 란?

K8s에 떠있는 파드 하나에 내부로 접속해서 resolv.conf 파일을 열어보면 다음과 같다. bash-4.4$ cat /etc/resolv.confsearch mongodb.svc.cluster.local svc.cluster.local cluster.local default.svc.cluster.localnameserver 192.254.25.10options ndots:5 kube-proxy는 svc -> pod 트래픽을 이동시킨다. 그러므로 만약 다른 파드로 트래픽을 보내고 싶다면 svc로 트래픽을 보내면 된다. svc의 도메인과 ip 매핑 정보는 CoreDNS에 저장되어 있는데, DNS 쿼리 성능을 높히기 위해, CoreDNS의 캐시를 가지고 있는 파드를 daemonset으로 배포하는데, ..

Ops/Kubernetes 2025.12.31

[Terraform] 테라폼 동작원리 ( + Ansible )

Terraform이 강력한 이유는 tfstate 파일로 인프라를 리소스 단위로 상태 관리를 하기 때문이다. AWS, AZURE 같은 Public Cloud 환경은 여러 리소스 ( VPC, EC2 등 )이 서로 유기적으로 연동되어 있는데, 이를 '코드'로 구현하고 구현된 '상태'를 비교하여 어떤 인프라 요소가 생성, 변경, 삭제 되는지를 예측할 수 있다. 반면 대표적인 또 다른 배포도구인 Ansible은 상태를 관리하지 않는다. 상태를 관리하는 Terraform, 상태를 관리하지 않는 Ansible. 두 도구의 철학은 다르다. Terraform은 비교로 인프라를 관리하고Ansible은 명령으로 인프라를 관리한다. Terraform은내가 원하는 상태는 'EC2가 t3.small이야' 라고 말하면 테라폼..

Ops/CICD 2025.12.26

[Prometheus] Vector와 Scalar란?

Vector는 방향 + 크기, Scalar는 크기 이다. 메트릭에서 '방향'의 개념은 라벨(Label)이다. Vector는 라벨(방향) + 값(크기), Scalar는 값(크기)이다. 나의 경우, K8s 파드의 메모리 사용률을 확인하기 위해 아래 PromQL을 작성하였는데, 값이 출력되지 않았다. PromQL ( Vector / Vector )container_memory_working_set_bytes{namespace="$namespace", container="$container"} / (sum(kube_pod_container_resource_limits{namespace="$namespace", container="$container"}) / count(kube_pod_container..

Ops/Monitoring 2025.12.17

[이슈] Network Policy - failed to get status by proxying to the pod, you might lack permissions to get pods/proxy

이슈 CNPG Cluster 파드에 kube-system, cnpg-system 네임스페이스로 부터 들어오는 트래픽이 8000번 포트로 접근할 수 있도록 허용하는 Network Policy를 적용하였는데, 다음과 같은 에러가 발생하였다. kubectl cnpg status cluster-example-1failed to get status by proxying to the pod, you might lack permissions to get pods/proxy: the server is currently unable to handle the request (get pods https:cluster-example-1-1:8000) 해결결론부터 말하면, ingress로 네임스페이스 뿐가 아니라 calico..

Ops/Kubernetes 2025.12.08

Ingress에서 Gateway API로 전환해야 하는 이유

Ingress에서 GatewayAPI로 전환해야 하는 이유는 더이상 kubernetes는 Ingress 관련 추가 기능을 제공하지 않기 때문이다.Ingress is frozen. New features are being added to the Gateway API. https://kubernetes.io/docs/concepts/services-networking/ingress/ 추가 기능을 제공하지 않은 이유는 다음과 같다. Ingress는 Kubernetes-Native하지 못하고 특정 벤더 종속성을 띈다. Ingress 구조 자체가 단순하여 복잡한 기능을 제공하려면 Ingress에 어노테이션을 달아야 하는데, 특정 벤더에 종속된 어노테이션이다보니 k8s 리소스인 Ingress가 특정 벤더 설정으로..

Ops/Kubernetes 2025.10.23

K8S NFS 동적 프로비저닝 구현하기

https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner GitHub - kubernetes-sigs/nfs-subdir-external-provisioner: Dynamic sub-dir volume provisioner on a remote NFS server.Dynamic sub-dir volume provisioner on a remote NFS server. - kubernetes-sigs/nfs-subdir-external-provisionergithub.com NFS Provisioner를 활용하면, K8S에서 동적으로 NFS 스토리지에 볼륨을 생성할 수 있다. K8S에 Helm으로 NFS Provisioner 배포하기helm..

Ops/Kubernetes 2025.09.16

Prometheus Federation 구현하기

Prometheus는 다른 Prometheus가 수집한 메트릭을 수집할 수 있다. 이것을 'federate'라 부른다. 쿠버네티스 클러스터 안의 수집기들이 수집하는 메트릭을 외부의 프로메테우스가 수집하려면 복잡하지만 클러스터 안 프로메테우스는 간단한 설정으로 수집이 가능하다. 그래서 클러스터 마다 프로메테우스를 올리고 이를 다시 부모 프로메테우스가 수집하는 방식으로 구현하고자 한다. 부모 프로메테우스 prometheus.yml 설정 prometheus.yml: scrape_configs: - job_name: prometheus static_configs: - targets: - localhost:9090 - job_name: 'federate' ..

Ops/Monitoring 2025.09.16

[이슈, 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도 잘 되어서 의아했는데 공식문서에..

Ops/CICD 2025.08.26