[k8s] RBAC Manager 개발

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

[k8s] GKE Ephemeral Storage 분석

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

[Docker] k8s Image digest값 사용

쿠버네티스를 구축하면서 GCP 관계자분들에게 배울 수 있는 Deep-Dive 라는 일주일 교육(?)을 들을 수 있었다. 교육이라지만 단순히 이론이 아닌 실제 App들을 준비해서 이를 k8s에 올려보고 시행착오를 풀어나가는 과정을 같이 수행하는 것이다. 이 교육 중 한가지를 이제 적용해보고자 한다. Kubernetes docker의 보안 현재 Container Image Registry로 GCP의 Artifact Registry를 사용중이고, App:30 과 같은 Image 태그에 빌드 번호를 … Read more

[k8s] 2024 당근 테크밋업 후기 – 2 (CI/CD, 비용)

1편에 이어서 2편을 작성한다. CI/CD 현재 당근은 자사 CI/CD 서비스를 만들어 운영중에 있다. 다만 이 내용을 조금 더 여쭤보니 Back단에서 Argo Workflow를 위한 manifest파일들을 만들어준다고 한다. 어떤 분은 왜 굳이 CI/CD 서비스를 만들었냐고 물으시던데, 그 이유에 대한 건 당근의 성향인 것 같다. 자신들이 원하는 방향으로 만들면서 필요한 부분들을 채우기 위해 자사 서비스를 만든 것이 아닐까 … Read more

[k8s] 2024 당근 테크밋업 후기 – 1 (k8s, Kafka, Alert, Monitoring)

지인이 당근 테크밋업이라는 세미나를 알려줘서 세션들을 확인해보니 D플랫폼에 흥미가 많이 가게 됐다. D플랫폼의 세션들을 보자면 1~2개 세션 말고는 전부 흥미가 가는 세션들로만 이루어진 D플랫폼을 신청~2개 세션 말고는 전부 흥미가 가는 세션들로만 이루어진 D플랫폼을 신청하고 운 좋게 참석했다. 주변 지인 중 떨어진 분들도 있긴 했지만, DevOps와 유사한 D플랫폼은 생각보다 경쟁률이 낮은 것 같았다. 세션에 대한 내용은 … Read more

[k8s] CKAD 자격증 연습문제 – 1

위 게시글에 있는 Git에 있는 연습문제들을 간단하게 풀어보면서 어려운 문제들이나 헷갈리는 문제들은 나만의 이해법으로 작성하면서 공부해보겠다. 연습문제 위의 문제들이 실제 CKAD 문제들이랑 유사할지는 모르겠으나, 대부분 kubectl 명령어로 진행되는 시험인 만큼 충분한 도움이 될 것이라고 판단했다. 각 챕터별로 나오는 연습문제들을 풀어보고 이에 대한 나만의 이해법을 작성하면서 계속 공부해야겠다.

[Vault] Vault helm으로 설치하기

Vault를 helm으로 설치하는 것 자체는 그리 어렵지 않았다. 다만 설정을 해주는 부분들과 values.yaml을 파악하는 부분이 조금 어색했다. 일단 내가 설치한 방식대로 기록했다. Vault 설치하기 먼저 hashicorp의 repo를 추가해준다. values.yaml을 다운받고 수정해주면 되는데, 여타 helm들이 그렇듯 values를 어떻게 요리하냐에 따라 활용성이 크게 달라진다. 먼저 vault는 다른 Worker Node에 기동되길 원해서 tolerations를 설정했다. Kubernetes에 올리는 만큼 HA를 … Read more