Devops

Devops

Terraform을 GitOps 방식으로 사용하기 위한 도구 선택하기(With TACOS)

Terraform은 IaC(Infrastucture as Code)를 위한 인프라 관리 도구입니다. 현재 Terraform은 Plumi, ARM 등 많은 IaC 관련 도구들을 제치고 가장 많은 사용자와 Reference를 가지고 있으며, 따라서 가장 대중화된 도구가 되었습니다. 이제는 단순히 Terraform을 Local에서 사용하는 것을 넘어서, 다수의 이용자와 협업하기 위해 GItOps 방식의 Workflow를 도입하는 경우도 많아지고 있는데요. 이는 Github, Gitlab 등의 Git 제품들이 제공하는 CI 도구와 Terraform을 결합해서 코드 커밋에서 시작해 인프라 배포까지 이어지는 하나의 단일한 Workflow를 이용하는 것을 말합니다. 이 같은 방식을 사용하면 Git 코드를 기반으로 단..

Devops

Kubernetes 환경에서 발생하는 DNS Query Failed 이슈와 NodeLocal DNSCache를 이용한 해결

Kubernetes 환경에서 서비스를 운영하다보면 예상치 못한 이슈를 종종 발견하게 됩니다. 특히 대규모의 트래픽을 부담해야 하거나 구동 중인 애플리케이션이 많은 경우처럼 Cluster의 크기가 거대해질수록 다양한 이슈를 만나게 되는데요. 이 경우 단순히 리소스의 부족 문제 뿐만이 아니라 여러 방면에서의 문제를 해결해야 하는 상황이 오기도 합니다. 이번 포스팅에서는 클러스터를 운영하면서 DNS Query Failed 이슈를 해결했던 사례를 공유하고자 합니다. 1. Issue 해당 이슈를 발견하게 된 계기는, 트래픽이 몰리던 시간대에 평소와 다른 Error Log가 확인됐던 것이었습니다. "io.netty.resolver.dns.DnsResolveContext$SearchDomainUnknownHostEx..

Devops

EKS Kubernetes의 롤링 업데이트 시 일시적인 500 에러의 원인과 해결

EKS(Elastic Kubernetes Service)는 AWS에서 제공하는 Managed Kubernetes 서비스입니다. EKS는 "aws-loadbalancer-controller"를 제공해 AWS ALB(Application Load Balancer)를 Ingress로 사용할 수 있게끔 하고 있는데요. ALB 기반의 Ingress로 Deployment를 배포할시 AWS와 통합된 환경을 활용해 서비스를 노출시킬 수 있다는 장점이 존재합니다. 하지만 위와 같은 환경에서 롤링 업데이트 시 일시적으로 500 에러가 발생하는 현상을 종종 발견할 수 있는데요. 이번 포스팅에서는 이 500에러의 원인이 무엇인지, 해결 방법에는 무엇이 있는지 알아보도록 하겠습니다. 1. 증상 이슈가 되는 에러를 재구현해 어..

Devops

Kubecost로 Kubernetes 환경의 FinOps를 구현해보자

IT 부서에서 비용 관리는 매우 중요한 부분을 차지하고 있습니다. IT 리소스는 보통 공유되는 자원이고, 부서 비용에 큰 부분을 차지하며, 비즈니스 우선순위에 영향을 미치기 때문이죠. 그래서 이 IT 리소스 비용을 효율적으로 관리하는 것이 IT 리소스를 잘 사용하는 것 만큼이나 중요합니다. 그렇다면 Kubernetes 환경에서의 비용 관리는 어떻게 할 수 있을까요? 이번 포스팅에서는 IT 환경에서 비용을 관리하는 방법에서 시작해 Kubernetes의 비용 관리 도구인 Kubecost를 사용하는 방법까지 알아보도록 하겠습니다. 1. IT 비용을 어떻게 관리할 수 있을까? 1-1. Chargeback, Showback FinOps 관점에서 IT 리소스 비용을 관리하는 방법은 크게 2가지로 구분할 수 있습니다..

Devops

Clean Code를 구현하기 위해 Sonarqube로 정적 코드 분석을 해보자

Sonarqube는 Clean Code를 구현하기 위한 정적 코드 분석 도구입니다. Clean Code란 안전하고, 유지보수가 용이하며, 믿을 수 있는 코드를 뜻하는 Sonarqube에서 정의한 용어입니다. 즉 Sonarqube를 통해서 모범적인 소프트웨어를 만들기 위한 높은 수준의 코드 품질을 유지할 수 있다는 뜻입니다. 게다가 CI 파이프라인과의 통합으로 자동화된 코드 리뷰를 수행할 수 있으며, 스크립트나 IaC코드 또한 분석이 가능합니다. 이번 포스팅에서는 Sonarqube가 무엇인지, 그리고 Sonarqube의 구축 및 사용 방법을 알아보도록 하겠습니다. 1. 정적 코드 분석 vs 동적 코드 분석 앞서 Sonarqube는 정적 코드 분석을 위한 도구라고 말씀드렸습니다. 정적 코드 분석이란 어떠한 ..

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..

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..

Devops

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

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

Devops

Tekton 사용해보기 (5) Tekton에 Human Approval 기능을 추가해보자

본 포스팅은 "Tekton 사용해보기" 시리즈의 다섯번째 글입니다. 시리즈의 이전 글들은 아래 링크에서 확인할 수 있습니다. Tekton 사용해보기(4) GCP Terraform 인프라를 Validation하는 파이프라인 구축하기 Tekton 사용해보기(3) Tekton Dashboard에 OIDC를 기반으로 RBAC 적용하기 Tekton 사용해보기(2) Tekton으로 인프라를 자동 배포하는 Terraform Pipeline을 만들어보자 Tekton 사용해보기(1) Tekton으로 쿠버네티스에서 CI/CD 파이프라인을 구성해보자 Tekton은 컨테이너를 기반으로 다양한 기능을 추가할 수 있는 강력한 Opensource CI/CD 파이프라인 도구입니다. 본 시리즈의 이전 글들에서 Tekton의 다양한 기..

Seungwoo Lee
'Devops' 카테고리의 글 목록