목록DevOps & Infra (153)
오늘도 한 뼘 더

# 배경 최근 쿠버네티스를 사용하게 되었는데 이전에 ElasticBeanstalk에서는 배포 방식을 선택할 수 있는 설정이 있었는데 쿠버네티스에서의 경우 어떤 방식으로 진행되는지 사실 생각해보지 못했다. 관련 질문을 받고 무슨 방식이 있고 현재 회사에서 사용하기에 제일 적절한 게 무엇인지 고민해 볼 필요가 있다고 생각됐다. # 무중단 배포 방식 실제 사용자가 사용하고 있기 때문에 특히 운영에 배포를 하는 데 있어 무중단 배포 방식은 중요하다! 무중단 배포 전략은 크게 3가지 방법이 있다. Rolling Update, Blue-Green, Canary 세 가지 방식에 대해 알아보고 정리해보고자 한다. # Rolling Update Rolling Update는 구 버전의 Pod을 하나씩 내리고 새 버전의 P..

Jenkins job에 대해서 pipeline으로 작성을 할 때 빌드 및 배포에 대한 결과에 따라서 다른 작업을 두 가지 방법으로 진행할 수 있다. # try / catch 사용하기 pipeline { agent any stages { stage('Checkout') { steps { script { try { build job: 'jenkins_job', parameters: [ string(name: 'parameter_name', value: "${parameter_value}")] } catch (e) { catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') { sh "exit 0" echo "error" } echo 'TEST Fail! But..

# Helm uninstall helm chart를 사용하여 설치한 리소스에 대하여 제거할 때 사용한다. helm uninstall RELEASE_NAME [...] [flags] 예시 helm uninstall prometheus prometheus-community/prometheus -n monitoring # Helm upgrade helm chart를 사용해서 설치한 리소스에 대한 값을 변경할 때 사용한다. 값을 업그레이드할 때 두 가지 방법으로 진행할 수 있다. helm upgrade [RELEASE] [CHART] [flags] 1. yaml 파일을 새로 작성해서 값을 업그레이드하기 helm upgrade prometheus -f new-values.yaml -n monitoring 2. '..

# helm 차트 받아오기 helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm repo update # 프로메테우스 관련 git clone git clone https://github.com/prometheus-community/helm-charts.git # values.yaml 변경 helm-charts/charts/prometheus 경로에 있는 values.yaml 파일에 대해서 사용하고자 하는 방식으로 변경한다. nodeSelector nodePort server: name: server nodeSelector: monitor: ok ... service: servicePort: 909..

# Helm 설치하기 Helm 다운로드 및 설치 $ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 $ chmod 700 get_helm.sh $ ./get_helm.sh Helm 버전 확인하기 $ helm version

# Provider 란? Terraform Provider는 Terraform에서 특정 Infrastructure플랫폼 AWS, Azure 등과 상호 작용하기 위한 플러그인이다. Terraform은 여러 프로바이더를 지원하여 다양한 클라우드 서비스 및 인프라 리소스를 코드로 관리할 수 있게 해주는 역할을 한다. 각각의 Terraform Provider는 해당 플랫폼의 API와 통신하여 리소스를 생성, 수정, 삭제 등을 수행하고 이를 통해 Infrastructure를 정의하고 관리할 수 있다. Provider는 Terraform 코드에서 사용되는 리소스 유형을 제공하고, 해당 리소스를 생성하거나 수정할 때 필요한 설정을 정의한다. # AWS Provider 설정 terraform { required_pro..

# helm 이란? Helm은 Kubernetes 애플리케이션을 관리하기 위한 오픈 소스 패키지 관리 도구이다. Helm을 사용하면 복잡한 애플리케이션 배포를 더 쉽게 관리할 수 있다. Helm은 "차트"라고 불리는 패키지 형식을 사용하여 Kubernetes 리소스를 구성하는 방법을 정의한다. # helm chart 란? Helm 차트는 Kubernetes 애플리케이션을 설치, 업그레이드 및 관리하는 데 사용되는 파일과 설정의 집합이다. 각 차트는 템플릿 및 값을 포함하며, 이를 사용하여 Kubernetes 리소스를 정의하고 구성할 수 있다. 차트 내부에는 애플리케이션의 구성 설정, 서비스, 디플로이먼트, 서비스 어카운트 등과 같은 Kubernetes 리소스 정의를 포함한다. # helm 장점 Helm을..

# Label Node, Pod, Deployment 등의 모든 리소스에 할당한다. 리소스를 분류하고 Selector를 사용하여 선택한다. 키-값 쌍으로 적용된다. # Label 할당 한 노드에 test=ok라는 label을 할당한다 kubectl --context=test label node {node name} test=ok # Label 조회 노드에 할당되어 있는 Label 조회하기 kubectl --context=test get nodes --show-lables # Label 삭제 label 이름에 '-'을 붙여주면 된다. kubectl --context=staging label nodes {node name} test-

# 배경 새벽 사이에 pod이 restart 되어 있는 것을 확인했다. 어느 시점에 restart 되어 있는지 확인하기 위해서 이전 로그를 확인하고자 했다. # 방법 kubectl logs 에는 '--previous' 옵션이 있다. pod의 이름이 변경되지 않았다면 --previous 옵션을 사용하여 바로 직전의 로그 내용을 확인할 수 있다. kubectl logs --previous {pod name}

# Terraform 설치 출처: https://developer.hashicorp.com/terraform/downloads Terraform 공식 문서를 통해서 다음과 같이 설치를 진행한다. $ wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg $ echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.lis..