전체 글

IT 엔지니어링에 대해 알고 싶은 분 모두 환영합니다.
Devops

GCP에서 Terraform을 사용하기 위한 Best Practice

본 포스팅에서는 GCP에서 Terraform을 사용하는 다양한 Best Practice에 대해서 알아보겠습니다. Terraform을 잘 사용하는 방법은 Naming convention같은 vendor specific하지 않은 분야도 있지만 서비스 어카운트의 위임이나 모듈 생성 부분같이 Google Cloud에서만 통용되는 분야도 존재하기 때문에 GCP에서 어떻게 Terraform을 사용해야 하는지 아는 것은 중요합니다. 그 외에 Google Cloud에서는 Cloud foundation 등 다양한 Terraform example 코드도 제공하고 있기 때문에, Terraform 이용자로써 Google Cloud에서 이용할 수 있는 것에는 무엇이 있는지 최대한 아는 것이 좋을 것입니다. 그러한 요지에서 이..

Devops

CKA(Certified Kubernetes Administrator) 자격증 시험 및 합격 후기

2022년 8월 12일 CKA 자격증 취득을 위한 Exam을 봤으며 다음날인 13일 합격 소식을 받았습니다. 본 포스팅에서는 제가 자격증 취득을 위해 어떤 준비를 했는지, 시험 과정에서는 어떤 점을 주의해야 하는지 자격증 준비에 도움될만한 글을 남기려고 합니다. 개인적으로 지금까지 봤던 자격증 시험 중에 가장 이질적이었던 유형의 시험이었기 때문에 당황스러운 일도 많았지만, 운이 좋게도 87점의 점수로 합격 컷을 넘을 수 있었습니다. 저는 약 두 달간 하루 한 시간씩 CKA 시험을 준비했으며, 시험 준비에 더 시간을 쏟으시는 분들은 이른 시간에 자격증을 취득하실 수 있을 것입니다. 이 글을 보시기 전에 글쓴이인 저는 약 1년의 Kubernetes 실무 경험이 있으며, 기본적인 Linux 및 명령어에 대한 ..

GCP

GKE에서 Autoscaling을 더 잘 사용할 수 있는 5가지 방법(HPA, VPA, MPA, CA, NAP)

Kubernetes의 장점 중 하나는 리소스의 유연하고 자동화된 Scaling이 가능하다는 것 입니다. 복잡한 MSA 아키텍쳐에서 리소스를 자동으로 Scaling해주는 기능이 있기 때문에 우리는 리소스 관리 및 사용 측면에서 Cluster를 매우 편리하게 사용할 수 있습니다 Kubernetes에서는 리소스를 Scaling할 수 있는 방법 중에서도 자동화된 방법, 즉 Autoscaling 기능을 제공하고 있는데요, Pod 단위에서는 HPA(Horizontal Pod Autoscaling), VPA(Vertical Pod Autocaling), Cluster 단위에서는 CA(Cluster Autoscaling)의 3가지 기능이 있습니다. 하지만 Google의 관리형 Kuberentes 서비스인 Google ..

Devops

Kubernetes에 존재하는 Metrics Server란 무엇일까? 그리고 어떻게 해야 잘 사용할 수 있을까?

Kubernetes는 HPA(Horizontal Pod Autoscaling), VPA(Vertical Pod Autoscaling)이라는 Pod 자동 확장 기능을 제공해 필요에 따라 Pod의 수를, 혹은 리소스 자체를 자동으로 확장할 수 있는 기능을 제공하고 있습니다. 이 기능들의 특징은 자동확장을 메트릭, 즉 CPU 사용률과 같은 수치를 기준으로 사용한다는 것인데요. 그렇다면 자동확장 기능이 올바르게 작동하기 위해서는 메트릭을 실시간으로, 그리고 안정적으로 확보하는 것이 중요할 것입니다. Kubernetes에서 이 역할을 하는 것이 바로 Metric-server입니다. Metric-server는 Kubernetes 내에 존재하는 Pod의 메트릭을 실시간으로 수집해 kube-api 서버에 안정적으로 전..

Devops

Apache Kafka란? Apache Kafka를 Kubernetes에서 구성해보자

Apache Kafka는 Apache 재단의 오픈소스 Event Streaming Platform 입니다. Kafka를 사용하면 기존의 end-to-end로 묶여있던 복잡한 아키텍쳐를 단순한 이벤트 버스 중심의 아키텍쳐로 탈바꿈할 수 있다는 장점이 있습니다. 그렇다면 어떻게 Kafka가 이런 일을 할 수 있을까요? Apache Kafka의 공식 홈페이지에 따르면 Kafka는 Event Streaming을 위한 Platform이라고 말합니다. 그리고 Event Streaming이란 인간으로 따지면 바로 중추신경계에 해당하는 디지털 요소라고 정의하고 있습니다. 왜냐하면 Event streaming Platform이 DB, IoT, App 등 다양한 곳에서 오는 Event들을 real-time으로 모아서 그 ..

Devops

Mysql Operator로 Kubernetes 환경에서 Mysql DB 운영하기

Kubernetes 플랫폼이 대중화되면서 점점 다양한 워크로드들이 Kubernetes 위에서 실행되고 있습니다. 하지만 DB는 어떨까요? 어쩌면 유연하고 임시적인 Kubernetes 환경에서 내구성과 견고함이 중요한 DB는 언뜻 보기에 적절한 만남이 아닌 것 같아 보입니다. Statefulset라는 상태 저장을 목적으로 하는 오브젝트를 지원함에도 여전히 DB를 Kubernetes 환경에서 운영하는 것은 비효율적이고 견고해 보이지 않기 때문에 지금도 DB를 Kubernetes 환경에서 운영하는 것에 거부감을 가진 사람들이 많습니다. 하지만 이런 의심의 눈초리와 관계없이 기술은 점점 발전해서 결국은 Operator를 사용해 DB를 운영하는 패턴이 등장해 Kubernetes 환경에서도 DB를 안정적으로 운영할..

Devops

오픈소스 컨테이너 레지스트리 Harbor로 컨테이너 레지스트리 간 복제 수행하기

컨테이너 기술이 등장하면서 많은 사람들이 컨테이너 이미지를 기반으로 서비스를 제공하기 시작했습니다. 이에 더해 현재는 도커, 도커스웜, 쿠버네티스.. 등의 플랫폼들로 컨테이너 이미지 기반의 워크로드를 수행하고 있습니다. 하지만 이 컨테이너 이미지를 로컬 저장소에 저장해서 사용하면, 외부에서 해당 이미지를 사용하기 어렵기 때문에 이미지를 쉽게 가져올 수 있는 방법이 필요했습니다. 이에 따라 등장한 것이 바로 컨테이너 레지스트리(Container Registry)입니다. 컨테이너 레지스트리는 소스 코드를 담는 Source repository(ex: github) 나 War,Jar 등의 바이너리 파일을 담는 Artifact registry(ex: Nexus) 와 같이 컨테이너를 담는 컨테이너 전용 저장소입니다..

Network

Minikube로 로컬 환경에서 쿠버네티스 클러스터 구성하기(MacOS, Windows 환경)

쿠버네티스 환경이 대중화되면서 다양한 플랫폼을 기반으로 쿠버네티스를 구동할 수 있게 되었습니다. 하지만 쿠버네티스를 프로덕션 환경에 올리기 전에 기술에 익숙해지거나 버전 테스트를 해야 할 수도 있는데요. 이러한 경우에 비용이 청구되는 관리형(Managed) 쿠버네티스나 IaaS VM 기반 쿠버네티스 클러스터에서 이러한 테스트를 하기에는 부담스러운 경우가 많습니다. 그래서 로컬 환경에서 쿠버네티스 클러스터를 쉽게 구성할 수 있는 Minikube나, k3s같은 로컬 쿠버네티스 도구들이 등장했습니다. 본 포스팅에서는 그 중 Minikube를 사용해 쿠버네티스 클러스터를 구성해보는 방법을 알아보겠습니다. 1. 도커 설치 쿠버네티스는 컨테이너 가상화 기술을 기반으로 동작하기 때문에 컨테이너 엔진, 혹은 버추얼 머..

GCP

Secret Manager에 저장된 중요 데이터를 Kubernetes Secret과 연동해보자(with GCP)

Kubernetes는 컨테이너 오케스트레이션을 수행하기 위해 각자의 목적을 가진 오브젝트들을 관리합니다. 대표적으로 Pod의 집합을 관리해주는 Deployment, 설정 파일을 관리해주는 Configmap, 인증을 위한 ServiceAccount 같은 것들이 존재하죠. 모든 오브젝트들이 각자의 목적을 가지고 있지만, 특히 프로덕션 수준에서 Kubernetes를 운영하기 위해서는 보안과 관련된 오브젝트도 있어야 합니다. 그래서 Kubernetes에서는 키,암호,토큰과 같은 중요한 데이터를 노출시키지 않고도 Pod에 포함시킬 수 있는 Seceret이라는 오브젝트를 제공하고 있습니다. 이번 포스팅에서는 이 Secret을 어떻게 사용할 수 있는지, Kubernetes에서는 Secret을 어떻게 해야 잘 활용할 ..

Observability

Prometheus Operator를 사용해 Kubernetes 환경에서 Prometheus 구성하기

Prometheus는 CNCF의 몇 안되는 graduate 프로젝트 중 하나인 시계열 모니터링 시스템입니다. 이런 Prometheus는 일반적인 VM 환경에서도 사용할 수 있지만 Kuberenetes에서 사용하는 MSA 구성에도 사용할 수 있다는 장점 이 있는데요. 하지만 Kubernetes 환경은 비영구적이고 임시적인 Pod를 기반으로 이루어져 있기 때문에 Prometheus를 구성하는 요소와 Prometheus의 메트릭 수집 대상들을 관리하기가 힘들다는 특징이 있습니다. 게다가 Prometheus는 시스템 내부의 yaml Config 파일을 기준으로 설정을 유지하는데, 이는 컨테이너 내부의 파일을 변경하기가 번거로운 Kubernetes 환경에서 Prometheus 관리를 더 힘들게 하는 원인이었습니다..

Seungwoo Lee
Seungwoo Lee와 About IT 엔지니어링