전체 글

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

SealedSecret & Reloader를 활용한 Gitops 방식의 Kubernetes Secret 관리 및 배포

Kubernetes의 Secret은 Container의 구동에 필요한 민감 정보를 저장하기 위한 오브젝트입니다. 그래서 Secret 오브젝트는 DB Password 등의 민감 정보를 담고 있지만 데이터를 base64로 인코딩하기 때문에 정보가 누출될 수 있다는 위험이 존재합니다. 이 때문에 Kubernetes Secret은 Gitops 기반의 배포 방식을 사용할 경우에도 Secret manager 등 별개의 저장소에 따로 저장해서 사용해야 하는 불편점이 있었습니다. AWS ASM, Hashicorp Vault 등의 Secret manager 서비스를 사용하지 못하는 환경이라면 Kubernetes Secret을 관리할 수 있는 선택지가 더 좁아지는 셈입니다. 그래서 Kubernetes Secret을 Sec..

AWS

S3 + Cloudfront를 이용해 www redirect를 구현한 Static Website 호스팅하기

유저들이 웹 사이트에 접속할때 주소를 입력하는 방법은 여러가지가 존재합니다. Google에 접속하고자 할때 누군가는 www.google.com으로 접속할 수도 있지만, 누군가는 그저 google.com 으로 접속하고는 합니다. 혹은 심지어 https://www.google.com 을 입력해서 접속하는 유저도 존재합니다. 이렇게 유저들이 다양한 방법으로 웹 사이트에 접속하지만, 웹 사이트를 운영하는 입장에서는 결국 하나의 엔드포인트로 접속을 유도해야 합니다. 유저들의 다양한 접속 주소에 모두 대응하는 것은 현실적으로 어렵기 때문입니다. 이 경우 모든 유저들의 접속 경로를 단일화하기 위해서 사용할 수 있는 방법이 페이지 리다이렉션입니다. 페이지 리다이렉션을 통해서 여러 유저들의 최종 접속 경로를 단일 엔드포..

AWS

AWS EKS의 IP 주소 관리: 쿠버네티스 클러스터의 네트워킹 고려사항

EKS(Elastic Kubernetes Service)는 AWS에서 제공하는 관리형 쿠버네티스 서비스입니다. EKS는 다양한 방면에서 리소스를 관리해주기 때문에 쿠버네티스 클러스터를 편리하게 운영할 수 있는데요. 그 중 AWS VPC CNI는 overlay network를 간편하게 구성해주는 장점을 제공합니다. 본 포스팅에서는 AWS VPC CNI의 특징과 AWS VPC CNI Plugin을 설치한 EKS 클러스터의 운영 시 IP Address management 고려 사항에 대해서 기술하겠습니다. 1. AWS VPC CNI란? AWS VPC CNI는 AWS의 ENI(Elastic Network Interface)를 활용한 Pod networking plugin입니다. EKS 클러스터는 해당 CNI를 ..

행사 및 세미나 활동

Google Kubernetes Engine 입문 강의 준비 후기

2023년 7월 중순 경 Googke Kubernetes Engine을 주제로 입문자용 강의를 촬영해달라는 요청이 왔다. 강의 촬영은 받을때마다 부담을 떨치기가 쉽지 않은 요청이다. 언제든 수정할 수 있는 아티클과 달리, 강의는 한 번 촬영하면 번복할 기회 없이 영원히 남기 때문이다. 하지만 이번 강의는 실시간으로 진행되는 라이브 강의가 아니라는 점(굉장히 부담스럽다..), 그리고 약 150분 가량의 비교적 짧은 강의라는 점 덕분에 부담이 적게 느껴져 수락하게 되었다. 그래서 약 2주간의 시간을 가지고 Google Kubernetes Engine 강의를 준비하게 되었다. 강의를 준비하기 위해 가장 처음 했던 일은 리소스를 찾아보는 것이다. 다른 강의에서는 어떤 주제를 다뤘는지, GKE를 다뤄봤던 사람들이..

Dev

Go로 커맨드를 실행할 수 있는 CLI를 구현해보자 (With Cobra)

CLI(Command Line Interface)란 터미널을 통해 사용자와 컴퓨터가 상호작용하는 인터페이스를 말합니다. CLI는 그래픽을 통해 직관적으로 사용할 수 있는 GUI(Graphic User Interface)와 달리 명령줄로만 입력을 전달할 수 있다는 점이 불편할 수 있으나, 빠르고 가볍다는 장점으로 인해 현재에도 널리 사용되고 있습니다. 이런 CLI 환경에서 애플리케이션을 구동하기 위해 바이너리를 실행하는 것은 다소 불편할 수 있습니다. 왜냐하면 바이너리를 다른 설정으로 실행하고자 할시, 그 설정을 가진 버전으로 다시 빌드하고 실행해야 했기 때문인데요. 이 같은 문제를 해결하기 위해 "Command"라는 개념을 도입해 바이너리의 특정 로직을 실행하거나 구성 설정을 변경할 할 수 있습니다. ..

Linux

Linux에서 프로세스가 실행될때 커널에선 어떤 일이 일어날까?

Linux는 리누스 토르발즈가 만들어 오픈소스로 배포한 UNIX 계열 운영체제입니다. 현재 수 대부분의 프로그램이 Linux 환경에서 실행되고 있다고 할 수 있을 정도로 Linux는 현대 IT 생태계에서 중요한 위치를 차지하고 있는데요. 하지만 정작 Linux의 동작 원리에 대해서는 모르고 사용하는 경우가 많은 것 같습니다. Linux를 잘 사용하고 다루기 위해서는 Linux의 핵심인 커널에 대해서 파악하고 있어야 합니다. 특히 네트워크 인프라를 다뤄야 하는 엔지니어는 Linux 커널을 모르고서는 트러블슈팅이나 디버깅에 큰 제약이 있을 수 밖에 없을 것 입니다. 그렇다면 Linux 커널의 동작은 어떻게 파악할 수 있을까요? 그 시작은 Linux 프로세스가 실행될때 커널에서 어떤 일이 일어나는지 확인하는 ..

Devops

Argo 사용해보기 (2) Standalone DEX로 Argo Workflow에서 SSO 구현하기

본래 Argo Workflow는 Oauth2.0 인증을 수행하기 위해 Argo CD에 내장되어 있는 DEX를 사용하게끔 되어 있습니다. (이하 Argo CD DEX) 하지만 Argo CD DEX를 사용하지 않고 Argo Workflow에서 자체적으로 DEX를 사용해 Oauth2.0 인증을 수행해야 하는 상황이 존재합니다. 예를 들면 Argo CD와 별개의 Identity Service를 운용하고자 하며, Argo Workflow 자체 OIDC 인증이 지원하지 않는 기능을 사용해야 할 때(EX. Google Groups), Argo Workflow만의 DEX를 구축해야 합니다. 이번 글에서는 Argo Workflow의 자체 DEX를 사용해 인증을 수행하는 방법에 대해 알아보겠습니다. 1. Overview ..

Devops

Argo 사용해보기 (1) Argo Project로 CI/CD Pipeline을 구성해보자

Argo project는 Git-Ops 및 CI/CD Pipeline 구성을 위한 Kubernetes-native 도구입니다. Argo project는 현재 CNCF(Cloud Native Computing Foundation)에서 Graduate 등급의 Maturity를 가지고 있으며, Argo Workflows / Argo CD / Argo Rollout / Argo Events 등의 프로젝트들로 이루어져 있습니다. 각 프로젝트들의 목적과 활용성은 다음과 같습니다. Argo Workflows : 직렬 및 병렬로 구성된 Job을 처리할 수 있는 Workflow Engine입니다. Kubernetes 환경에서 Workflow를 실행하는데 특화되어 있습니다. Argo CD : Git-Ops 기반의 CD(C..

잡담

지난 1년을 돌아보며 - 2022년 회고

2021년 회고 이후 두 번째 회고록이다. 지난 2022년을 돌아보며 내가 어떤 것을 성취했는지, 어떤 점이 아쉬웠는지 회고해보는 시간을 가져보고자 한다. 작년 한해는 새 회사로 이직했던 해이기도 해서 시간이 어떻게 흘렀는지 몰랐을 정도로 바쁜 해였다. 하지만 이렇게 바쁠 떄일수록 내가 정리하는 회고록이 과거의 경험을 견고하게 해주기 때문에 더욱 빛을 발할 것이라 생각한다. 내가 2022년에 세웠던 목표는 다음과 같다. 1. 기본에 충실하기 2. 다양한 지식을 경험해보기 이 두 가지 목표를 기반으로 2022년을 지내보고자 노력했다. 내가 이 목표들을 잘 지켜왔는지는 잘 모르겠지만, 지키려고 노력하고자 하는 그 과정에서도 얻을 수 있는 것들이 많다고 생각한다. 다음은 내가 목표를 달성하고자 하는 과정에서 ..

Devops

컨테이너 빌드 도구 선택을 위한 특성 및 성능 비교 (Kaniko, Buildah, Buildkit)

하이퍼바이저를 이용한 VM(Virtual Machine) 대신 호스트 OS를 cgorup과 namespace 기반으로 리소스와 파일시스템을 격리한 컨테이너 기술을 사용해 자원을 사용하는 시대가 왔습니다. 컨테이너 기술이 등장하면서 상태 저장을 위해 VHD 등을 사용하던 VM과 달리 컨테이너 이미지라는 새로운 이미지 유형을 이용해 OS 상태를 정의할 수 있게 되었는데요. 시간이 지나 컨테이너 기술을 표준화하는 OCI(Open Container Initiative)가 등장하고, 컨테이너들을 조율해주는 오케스트레이션 툴인 Kubernetes에 Dockershim 컨테이너 런타임이 제외되면서 다양한 컨테이너 빌드 도구가 등장하게 되었습니다. 이번 포스팅에서는 이렇게 등장한 컨테이너 빌드 도구들이 각각 어떤 특성..

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