[k8s] RBAC Manager 개발

GCP의 매니지드 Kubernetes인 GKE를 사용하면서 1개의 보안 취약점이 있었다. 바로 kubectl 명령어를 치는 사용자에 대한 권한제어가 없던 것이다. 예를 들자면 사용자가 GKE로 연결하기만하면 모든 kubectl 명령어가 가능했다. (물론 GKE의 연결할 수 있는 IP를 제어하고 있는 상태지만 1차 보안만 한 느낌이다.) GKE에서 권한관리를 하려면 IAM과 RBAC의 차이점을 알고 있어야한다. GCP의 IAM은 Kubernetes 내부가 아닌 GKE 자체를 … Read more

[AI] MCP..? Model Context Protocol이 뭔데..?

제목 앞 [AI]가 붙은건 Claude를 통해 만든 게시글로 지정해야겠다. 학습을 시키면서 글을 조금씩 잘쓰게끔 하려고 하는데 생각보다 쉽지가 않다. 특히 이미지 첨부부분이 잘 안되는데 분석을 좀 해봐야할 것 같다. 이제는 Python MCP 서버를 구축해보려고 한다. 그전에 MCP에 대한 개념을 잡아보고자 Claude한테 글을 맡겼다… Claude를 사용하면서 항상 아쉬웠던 점이 하나 있었다. “Claude야, 내 Google Drive에서 파일 … Read more

[Linux] 부팅과정

개인적으로든, 업무적으로든 많이 사용하는 OS인 Linux… 내가 과연 많이 알고 있는건가? 라는 의구심이 들었다. 오픈소스이면서 안정성, 보안성, 유연성을 가지고 있는 OS이며 광범위하게 사용되고 있다. 특히나 Linux의 핵심 부분은 커널이며, 하드웨어를 제어하고 프로그램과 상호 작용을 관리해주는 역할을 한다. 그렇다면 Linux에서 커널이 동작하는 시점은 언제이고, 맨 처음부터 커널들이 올라와서 일을 하는 것인지… 여러가지 궁금한 점들이 생겼었다. 그래서 … Read more

[k8s] GKE Ephemeral Storage 분석

Kubernetes에는 데이터를 보관하기 위한 볼륨으로 다양한 방안들이 있지만 이 중 Pod와 생명주기가 동일한 경우 즉, Pod가 죽을때 데이터가 휘발돼도 문제없는 경우 ehemeral-storage(임시 볼륨)를 많이 쓴다. 기본적으로 pod는 볼륨 마운트 설정이 없으면 모든 파일은 임시 볼륨을 사용한다. 볼륨 마운트 설정이 없는 pod에 들어가서 파일들을 만든다면 해당 pod의 워커노드에 용량을 쓴다는 얘기이다. 서비스의 성격에 따라 다르지만, 서비스에서 … Read more

[Golang] 늘 헷갈리는 포인터

학부생 시절, C++을 배우면서 시험 중 제일 힘들었던 항목이 포인터가 아니였을까 싶다. ‘*’ 이 표시가 어찌나 나를 헷갈리게 하던지… 지금와서야 포인터의 중요성을 깨닫고 있다. 일단 포인터를 배우기 전에 구조체, 일반 함수, 메서드의 개념을 정리해봤다. 위의 일반함수와 메서드의 쓰임새는 GPT님께서 정리해주셨다. 사용 기준 메서드 (func (h Human) methodName()) 일반 함수 (func functionName()) 구조체의 필드를 다루는가? ✅ … Read more

[Golang] 1부터 배우는 Golang

어느정도 Python은 다룰 수 있으니 k8s와 Docker의 기반이 Golang인 만큼 Golang을 통해 k8s의 Controller를 개발하고 싶은 마음이 굴뚝같았다. 생각만해서는 아무것도 못 이루기에 다짜고짜 Golang을 기초부터 배워보고자 한다. http://golang.site/ 주로 위의 사이트를 통해 기초 및 예제들을 보면서 공부하고 있다. 여기서 독특했던점은 go에서 변수를 설정하는 부분이였다. 위와 같은 규칙이 있었고, Java를 몰라서 이게 일반적인 부분인지는 모르겠다. 변수와 … Read more

[k6] k6-operator 설치

Kubernetes에서 서비스를 운영하기 전에는 필수적으로 거쳐야 할 단계가 성능테스트, 부하테스트라고 생각한다. 다만 성능테스트랑 부하테스트 이 둘을 제대로 해본 적이 없는 나에게는 큰 난제로 다가왔다. 일단은! 테스트 Tool을 정하는 과정에서 전통적인 JMeter는 호기심이 없었고, Python 기반인 Locust나 JS기반인 k6가 좀 끌렸다. Locust랑 k6는 둘다 GitHub에 별도 많은 인기있는 Tool들이지만 Grafana랑 뗄레야 뗄 수 없는 관계인 나에게는 … Read more

[Docker] Private Registry 구축하기 in k8s

Private Registry를 구축하게 된 이유는 딱 하나였다. 개발을 하면서 Docker의 Base Image들을 Docker hub에서 당겨오는데 이게 limit에 걸린 것 같다. 6시간내에 100번 당겨오면 정책에 걸리는 것 같은데 IP 기반으로 제한되기에, 장비 하나에서 많은 서비스들을 빌드하다보니 이렇게 된 것이다. 그렇다고 계속 IP를 바꾸기도 뭐하고, 6시간동안 가만히 있자니 뭐하고 해서 차라리 Private Registry를 구축해서 Docker Image를 넣어놓고 … Read more

[ArgoCD] 계정 생성 및 권한 설정

현재 나는 argocd를 argo/argo-cd v6.7.8 helm을 통해 설치한 상태이다. 확실히 helm을 통해서 설치하는게 편한 것 같긴 하지만 방대한 양의 values.yaml을 해석하고 컨트롤 하는 것은 쉽지 않다.. 기존에는 argocd에서 admin 계정을 통해서 사용하고 있었다. admin 계정 설정에 대한 건 다른 분들이 설명해주신게 많아서 수월하게 설정했다. 다만 admin말고도 개발자들이 접근해서 볼 수 있는 view권한만 가진 계정이 필요했기에 … Read more