사전 확인 사항릴리즈 노드 및 마이그레이션 가이드 확인작업 전 Application Sync 상태 확인롤백 계획 수립 버전 업그레이드 작업 절차ArgoCD 데이터 백업# backup commandargocd admin export --namespace argocd - > argocd-backup-260424.yamlArgoCD 설치 파일 다운로드 및 설정설치파일 다운로드:Air-Gap 환경인 경우 Air-Gap 환경에서 ArgoCD 설치 정보 참고하여 설치파일 수정 필요wget https://raw.githubusercontent.com/argoproj/argo-cd/v3.3.0/manifests/install.yamlArgoCD Server 서비스 타입 변경(필요시):# NOTE:: 대상 파일: ins..
전체 글
ArgoCD 백업 및 복구 개요백업/복구 도구 종류:도구설명kubectlApplication, AppProject 단위 백업 및 복원ArgoCD CLIArgoCD 전체 설정 백업 및 복원 백업 도구 비교:항목kubectlArgoCD CLIApplicationooAppProjectsooRepositories / ClustersxoArgoCD 설정 (ConfigMap, RBAC)xouid / resourceVersion 제거xo타 클러스터 복원불안정안정적 지원주요 용도단순 백업 / 복원마이그레이션, 재해복구 시나리오 유즈케이스별 권장 도구:유즈케이스권장 도구실수로 삭제한 특정 App/Project 복원kubectl동일 클러스터 내 전체 복원kubectlArgoCD 버전 업그레이드를 위한 백업/복원ArgoCD..
인터넷 접근이 제한되는 네트워크에서 ArgoCD를 설치하기 위한 방법 정리 Step 1. ArgoCD 설치 파일 다운로드인터넷 접근 가능한 환경에서 ArgoCD 설치 파일을 다운로드 받은 후 수정해야 한다.curl -o argocd-install.yaml https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml Step 2. ArgoCD 이미지 수집사설 레지스트리로 이미지 업로드:# docker pull -> tag -> pushghcr.io/dexidp/dex:v2.43.0public.ecr.aws/docker/library/redis:8.2.3-alpinequay.io/argoproj/argocd:v3.3.0직접 ..
EKS란?AWS가 Kubernetes 컨트롤 플레인을 대신 관리해주는 EKS의 구조를 이해하고, Ubuntu 24.04 환경에서 실습 환경을 직접 구성해본다. 배경Kubernetes는 컨테이너 오케스트레이션의 사실상 표준이지만, 컨트롤 플레인을 직접 구성·운영하는 일은 생각보다 손이 많이 간다. API 서버 이중화, etcd 백업, 버전 업그레이드, 가용 영역 분산 배치... 이 작업들을 모두 직접 하려면 운영 부담이 상당하다.Amazon EKS(Elastic Kubernetes Service)는 컨트롤 플레인 운영을 AWS가 대신 맡아주는 완전 관리형 Kubernetes 서비스다. 클러스터를 만들면 API 서버와 etcd는 AWS가 관리하고, 개발자는 워크로드 배포에만 집중할 수 있다. 주요 개념1. ..
업그레이드 전 준비1. 필수 패키지 설치# 필수 빌드 도구 및 라이브러리 설치sudo apt-get updatesudo apt-get install -y \ build-essential \ libpcre3 \ libpcre3-dev \ zlib1g \ zlib1g-dev \ libssl-dev \ libgd-dev \ libgeoip-dev \ libxslt1-dev2. Nginx 컴파일 소스 파일 다운로드# 작업 디렉토리 생성mkdir -p /tmp/nginx_upgradecd /tmp/nginx_upgrade# Nginx 1.28.0 소스 다운로드wget https://nginx.org/download/nginx-1.28.0.tar.gz# 압축 해제tar -xzf nginx-1.28...
Terraform 사용법이 표준화 되면서 다른 사람들이 잘 만든 코드나 사내 공통으로 사용되는 코드를 패키징하고 재사용이 가능한 모듈 단위로 관리하는 것이 가능하다. 다수의 모듈로 Repository Structure를 구성해서 사용하는 것이 일반적이다. Multi Module Repository Structureroot module : 최상위 디렉터리를 의미한다. 아래 예시에서는 `.` 디렉터리가 최상위 디렉터리다.module : module collection으로 단일 모듈 구성도 가능하고 중첩된 다수의 모듈 collection 구성도 가능하다..├── README.md├── main.tf├── variables.tf├── outputs.tf├── ...├── modules/│ ├── nested..
Meta arguments 종류depens_on : Terraform이 자동으로 추론할 수 없는 숨겨진 리소스 또는 모듈 종속성을 처리한다.count : resource block은 1개의 인프라 객체를 구성한다. 1개 이상의 pool을 관리하고 싶을 때 사용한다.for_each : index 요소를 참조해야 할 경우 count 대신 사용한다.특정 요소가 목록 중간에 제거되면 해당 요소 뒤의 모든 인스턴스에서 해당 subnet_id 값이 변경되는 경우가 발생할 수 있는데 for_each를 통해서 해소할 수 있다.provider : 공급자 메타 인수는 리소스 유형 이름을 기반으로 선택하는 Terraform의 기본 동작을 재정의하여 리소스에 사용할 공급자 구성을 지정한다.lifecycle : create_b..
Data sourceVariable, Output을 이용해 데이터를 입력하거나 출력 되는 과정의 데이터를 변수에 담는 방식을 이용할 수 있다. 그 과정에 선언한 VPC, Subnet 생성 코드에는 하드코딩 된 데이터가 일부 있는데 재활용을 높이기 위해서는 이 부분을 최소화 해야 한다. 이 때 하드코딩 된 부분을 모두 변수로 선언해서 재활용을 높일 수도 있으나 Data source를 이용할 수 있다. Data source는 Terraform 외부 환경에 정의된 리소스의 Attribute 정보를 읽어와 코드에 변수 값을 저장하듯이 사용할 수 있다. 1. 서브넷 정보 확인기존 구성된 vpc.tf 파일에서는 서브넷 정보를 아래와 같이 하드코딩 해두었다.# vpc.tfresource "aws_subnet" "pu..
Attributeprovider를 통해 만들어진 리소스는 Attribute을 가지게 되는데, 이 값들은 서로 연관된 다른 리소스를 생성할 때 참조해야 할 때가 있다. 예를 들어, VPC는 vpc.id라는 Attribute을 가지고 있는데, subnet을 만들 때 vpc.id를 필수 값으로 반영해야 하기 때문에 참조할 데이터의 대상이 된다. 1. Attribute 참조 형식# _..aws_vpc.main.id 2. Attribute 적용 예시resource "aws_vpc" "main" { cidr_block = var.vpc_cidr tags = merge( { "Name" = "Main" }, var.default_tags )}resource "aws_subnet" "pu..
Variable & Validation 선언 변수를 사용하면 코드를 더 쉽게 재사용할 수 있고, 다른 구성 간에 코드를 공유할 수 있다. 1. variable 파일 없이 직접 입력하는 방식# vpc.tfresource "aws_vpc" "main" { cidr_block = "10.0.0.0/16" tags = { Name = "main", Environment = "development", CostCenter = "23213" }}2. variable.tf 파일을 이용해 데이터를 입력하는 방식variable은 "vpc_cidr", "default_tags" 두 가지로 구분된다.variable 내부는 type, description, default, validation로 구성되어 있다.# v..
팀 단위로 여러 사람이 동시에 코드를 작업하고 공유하는 경우 Local 백엔드 구성은 적합하지 않다. 오래된 변경 사항이 적용되는 것을 방지하지 위해서 누구나 최신 상태 파일에 액세스해야 한다.상태 파일은 내구성이 뛰어나고 모두가 다같이 사용 가능한 위치에 저장해야 한다.경합 상태를 방지하기 위해 동시 terraform 적용 작업이 발생하지 않도록 방지하는 매커니즘이 필요하다. AWS CLI 이용 S3 Bucket & DynamoDB 생성S3 Bucket 생성$ aws s3 mb s3://terraform-starter-bucket --region ap-northeast-2DynomoDB 생성$ aws dynamodb create-table \ --table-name tf_state_table \ --a..
plan, apply, destroyCommandDescriptionterraform plan • 이미 존재하는 원격 객체(Cloud resoure)의 현재 상태를 읽어 최신 상태인지 확인한다. • 적용하기 위해 구성한 코드를 읽어 현재 원격 객체의 상태과 비교해 차이점을 확인한다. • 차이가 발생한 부분을 출력하고, 변경 조치할 내용을 제안한다.terraform apply• terraform plan 명령으로 제안된 작업을 실행하여 실제로 원격 객체에 상태를 업데이트 한다.terraform destroy • 원격 객체를 삭제하는 명령이다. plan, apply 사용법1. 리소스 생성을 위한 .tf 파일 생성# vpc.tfresource "aws_vpc" "main" { cidr_block = "10...