Kubernetes 145

[Jupyterlab] jupyterlab-sql-explorer - SQL GUI 플러그인

개요예전에 jupyterlab / jupyter notebook을 사용할 때, 데이터베이스를 다루는 경우 jupyterlab-sql이라는 플러그인을 아주 잘 사용했다. 하지만 이 플러그인은 이제 유지보수가 이뤄지고 있지 않아 최신 버전의 jupyterlab에서는 사용이 불가능한 상태이다. 그래서 jupysql을 계속 사용해 왔는데, 최근 jupyterlab-sql을 대체할 만한 플러그인을 확인하여 기록해 둔다. jupyterlab-sql-explorerjupyterlab-sql-explorer는 사용자가 JupyterLab에서 SQL을 실행하고 데이터베이스 객체를 탐색할 수 있도록 도와주는 플러그인이다.JupyterLab 내에서 테이블, 뷰와 같은 데이터베이스 객체를 탐색할 수 있고, SQL문을 직접 ..

Kubernetes 2025.06.20

[EKS] aws-auth - EKS 클러스터에서 IAM 확인

개요업무에서 EKS에 접속해서 사용 중인데, 클러스터 내에서 내가 어떤 AWS 계정을 사용해서 작업을 수행하는지 확인하고 싶다. 찾아보니 EKS 접근 제어를 aws-auth라는 걸로 관리하는 것 같은데, 이번 글에서는 aws-auth에 대해서 조금 알아보려고 한다. aws-authEKS의 접근을 구성하는 방식 중 하나로, 클러스터가 IAM 보안 주체로 aws-auth라는 이름의 ConfigMap을 취급하는 방식이다. 즉, IAM 사용자, Role, Group을 Kubernetes RBAC과 연결하는 역할을 한다.aws-auth ConfigMap은 EKS 접근 제어를 관리하고 Kubernetes RBAC을 설정하며, EKS 노드 그룹이 클러스터에 조인할 수 있도록 허용하는 등의 역할을 담당한다.다만 공식..

Kubernetes 2025.06.19

[GitLab] k8s Helm Chart 설치 시 runner 구성 방법

개요2025.06.04-[Gitlab] runner - PANIC: Failed to register this runner. Perhaps you are having network problems 에서 쿠버네티스 환경에서 Helm으로 설치한 gitlab-runner의 버전 업그레이드를 수행했는데, values.yaml 변경으로 별도로 설정해 두었던 일부 속성이 values.yaml에서 삭제되었다. 예로 들어 chart 0.15.0 버전에서는 runners.pollTimeout이라는 속성을 지원했는데,(https://artifacthub.io/packages/helm/gitlab/gitlab-runner/0.15.0?modal=values&path=runners.pollTimeout)현재는 지원하고 있지 ..

Kubernetes 2025.06.13

[k8s] 중단과 PodDisruptionBudget

개요최근 오랜만에 쿠버네티스 관련 작업을 담당하게 되었는데, pdb라는 리소스를 새로 알게 되었다. 확인해보니 가용성, pod 중단 등과 관련이 있는 개념인 것 같다. 관련해서 알아두는 게 좋을 것 같아 정리해둔다. 중단Pod는 사람 또는 컨트롤러가 파괴하거나 불가피한 하드웨어/시스템 소프트웨어 오류가 발생한 경우가 아니라면 사라지지 않는다. 이 때 사람 또는 컨트롤러가 파괴한 경우를 자발적 중단이라고 하고, 오류로 인한 불가피한 중단을 비자발적 중단이라고 한다.각 중단이 발생할 수 있는 상황의 예시는 다음과 같다.자발적 중단비자발적 중단Deployment 제거물리 머신 하드웨어 오류다른 Pod를 관리하는 컨트롤러 제거클러스터 관리자 실수에 의한 VM 삭제Deployment 템플릿 업데이트클라우드 공..

Kubernetes 2025.05.07

[Helm] Chart와 values.yaml 결합 결과 확인

개요최근 쿠버네티스 환경을 다루면서 Helm으로 설치한 서비스를 재배포하는 등의 작업을 수행하게 됐다. 하지만 재배포 이후에도 수정한 설정값으로 리소스가 생성되지 않은 것 같아서 배포에 사용한 values.yaml과 Chart가 결합된 release 정보를 확인하고 싶다.방법을 알아보자. 릴리즈 정보 확인이미 배포한 릴리즈의 정보는 get manifest 명령어로 확인할 수 있다.매니페스트란 차트에서 생성된 쿠버네티스 리소스를 yaml 형식으로 표현한 것이다. helm get manifest RELEASE_NAME# 예시helm get manifest superset Chart + value.yaml 확인로컬 환경에서 Chart를 렌더링 하고 그 결과를 표시한다. 사용할 values.yaml을 지정하..

Kubernetes 2025.04.28

[Helm] Jenkins - coalesce.go:220: warning: cannot overwrite table with non table for

현상AWS EKS의 NodeGroup LT 업데이트로 인해 노드 재시작이 발생했는데, Jenkins 서비스가 시작하던 중 플러그인 버전 충돌이 발생해 Jenkins 버전 업그레이드를 진행하려고 한다.Jenkins Helm Chart(https://charts.jenkins.io)의 4.6.1 버전에서 5.1.0 버전으로 업그레이드를 진행하려고 했는데…… helm upgrade 중 아래와 같이 오류가 발생하면서 업그레이드가 되지 않았다.원인을 확인하고 문제를 해결해 보자. 원인확인해 보니 Chart Templete과 매핑하고자 하는 values.yaml의 데이터 형식 등이 맞지 않을 때, 매핑되지 않는 값을 전달하거나 list를 전달해야 하는데 dictionmary를 전달하는 등의 상황일 때 발생하는 ..

Kubernetes/삽질 2025.04.24

[Helm] jenkins - 플러그인 버전 충돌 디버깅하기

현상AWS EKS 환경에서 Jenkins를 Helm으로 설치해서 동작시키고 있는데, 서비스가 종료되었다가 재시작하면서 동작을 안 하고 있는 상태이다.대체로 단순 서비스 재시작 시 Jenkins가 정상적으로 올라오지 않는 상황은 Jenkins 버전과 플러그인 버전 충돌이 원인일 수 있다.관련해서 확인하고 해결할 수 있는 부분을 적어둔다. 참고로 구성은 다음과 같다.쿠버네티스 클러스터 / 버전 : AWS EKS / kubernetes 1.27.6Helm Chartrepository : https://charts.jenkins.iochart version : 4.6.1app version : 2.414.1 describe플러그인 버전 충돌이 발생하면 대체로 플러그인 설치가 진행되는 initContainer..

Kubernetes/삽질 2025.04.23

[Helm] superset - Error: failed to create containerd task: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "/bin/sh": stat /bin/sh: no such file or directory: unknown

현상AWS EKS로 구성된 쿠버네티스 클러스터를 운영하고 있는데, 인프라 운영팀으로부터 NodeGroup과 연결된 Launch Templete의 리소스 태그 변경이 필요하다는 연락을 받았다. LT를 업데이트하면 기존에 동작하고 있던 Node가 종료되면서 새로운 버전의 LT로 만들어진 Node가 생성되기 때문에 서비스 확인 등의 작업이 필요한 상황이었다. 1년 정도 유지보수를 하지 않다가 작업한 상황이라 걱정이 되었는데, 아니나 다를까 작업 후 Helm으로 설치한 Superset에서 아래와 같은 오류가 발생했다.원인을 파악하고 문제를 해결해보자. 참고로 현재 환경은 다음과 같다.쿠버네티스 클러스터 / 버전 : AWS EKS / kubernetes 1.27.6Helm Chartrepository : http..

Kubernetes/삽질 2025.04.22

[K8s] 네트워크 유형 - 외부와 Service 간 통신

개요2024.05.22-[K8s] 네트워크 유형 - Pod와 Service 간 통신에서는 Service의 개념과 동작 방식에 대해서 알아보았다. 다만 Service는 기본적으로 ClusterIP 유형으로 생성되어 클러스터 내부에서만 통신이 가능하도록 되어있다. 그렇다면 외부와 통신을 주고받아야 할 때는 어떻게 해야 할까? 쿠버네티스에서는 NodePort 유형의 Service, Load Balancer 유형의 Service 그리고 Ingress를 통해 외부와의 통신을 가능하게 한다.각각에 대해서 정리해 둔다.   NodePortNodePort 유형의 Service는 기본적으로 Cluster IP 유형과 비슷하지만, Node 네트워크의 IP를 통한 접근을 허용하는 등의 몇 가지 기능을 더 갖고 있다. 즉, ..

Kubernetes 2024.06.11

[K8s] 네트워크 유형 - Pod와 Service 간 통신

개요2024.05.18-[K8s] 네트워크 유형 - 컨테이너 간 통신, 2024.05.19-[K8s] 네트워크 유형 - Pod 간 통신에서 쿠버네티스의 4가지 통신 유형 중 2가지 유형을 살펴보았다. 이번 글에서는 Service의 개념과 Pod과 Service 간 통신에 대해 적어두려고 한다.  ServicePod는 각각의 고유한 주소를 가지기 때문에 어떤 애플리케이션의 엔드포인트로 설정할 수도 있다. 하지만 쿠버네티스에서 Pod는 쉽게 대체되기 때문에 새로 생성된 Pod의 주소가 기존 Pod와 동일함을 보장하지 않는다.이러한 문제를 해결하기 위해 애플리케이션 앞에 서버의 목록을 관리하며 서비스 중인 서버에게 트래픽을 전달하는 reverse-proxy나 load balancer를 구성할 수 있다. 이러한..

Kubernetes 2024.06.10