HashiCorp Vault는 비밀 관리 도구로, 민감한 데이터를 안전하게 저장하고 관리할 수 있게 해 줍니다. 이번 글에서는 EKS에 HashiCorp Vault를 테라폼으로 생성하고 설치하고 접속해 보도록 하겠습니다. 정말 간단하니까 눈으로만 따라오셔도 충분합니다.EKS에 HashiCorp Vault를 테라폼으로 아래와 같이 코드를 작성해서 설치할 수 있습니다. resource "helm_release" "vault" { name = "vault" repository = "https://helm.releases.hashicorp.com" chart = "vault" namespace = "vault" create_nam..
테라폼으로 배포하는 도중에 아래와 같은 오류가 발생하는 경우가 있습니다. 일반적으로 발생하는 상황은 아니고, Cached 파일이 없을 때 오류가 발생하는 건데요. 보통 개발 환경을 마이그레이션 하는 도중에 발생됩니다. 예를 들어, 맥북을 새로 구매해서 데이터를 옮기는 것처럼 말이죠. │ Error: could not download chart: no cached repo found. \(try 'helm repo update'): open /Users/jybaek/Library/Caches/helm/repository/datadog-index.yaml: \no such file or directory 이 오류를 해결하기 위해서는 간단히 helm repo update 명령어를 실행하면 됩니다. 이 명령어는..
테라폼으로 AWS CloudFront 를 생성할 때 ACM(AWS Certificate Manager) 인증서를 쓰려면 아래와 같이 코드가 개발됩니다. resource "aws_cloudfront_distribution" "s3_distribution" { ... viewer_certificate { cloudfront_default_certificate = false acm_certificate_arn = "..." minimum_protocol_version = "..." ssl_support_method = "..." } } cloudfront_default_certificate를 false로 설정하고 ACM 인증서의 ARN을 넣어주면 됩니다. 그런데 이 상태로 코드를 배포하면 아래와 같은 오류가 ..
CloudFront에서 Distribution을 생성할 때 Origin domain으로 S3 버킷을 지정하는 경우 아래와 같은 화면이 나옵니다. bucket endpoint를 쓰지 말고 website endpoint를 사용하라는 건데요. Origin domain 목록에 website endpoint는 노출되지 않기 때문에 "Use website endpoint" 버튼을 클릭해 줘야 s3 가 s3-website로 변경됩니다. 버튼을 클릭하는 경우 상세 설정의 종류가 변경되기 때문에 무시할 수 없습니다. 더욱이 S3 website endpoint를 추천한다는데 써야겠죠 (...) 테라폼으로 배포할 때 위에 버튼을 클릭하지 못하니 어떻게 처리해야 하나 한참을 끙끙댔습니다. 일단 S3 website endpoi..
테라폼 코드를 로컬에서 개발&운영하다가 테라폼 클라우드(Terraform Cloud)를 처음 이용하려고 할 때 발생하는 문제입니다. 이건... 블로그에 기록하기도 민망할 정도로 짧은 해답을 내릴 수 있는데요. 테라폼 클라우드와 연결된 GitHub이나 Bitbucket과 같은 VCS(Version Control System)에 tfstate 파일이 존재하는 경우입니다. 이때는 VCS에서 state 파일을 삭제해 주고 다시 plan을 실행해 보세요. 오류가 해결되는 걸 확인하실 수 있을 겁니다. 소소하지만 테라폼 클라우드를 처음 이용하려는 누군가에게는 도움이 되셨기를 바랍니다. :) 인터넷에 많은 트러블슈팅 글이 그러하듯이 이 에러의 원인이 하나만은 아닐 수도 있습니다. 만약 state 파일이 존재하지 않는..
Lambda(람다) 배포 방식에는 네 가지가 존재합니다. (1) 소스코드를 에디터에서 직접 개발 (2) ZIP 압축 파일을 업로드해서 배포 (3) S3 경로에 압축파일을 두고 배포 (4) 컨테이너 이미지를 통해 배포가 있습니다. 이번 글에서는 컨테이너 이미지를 통해 배포하는 방법을 알아볼 텐데요. 특이한 조건이 하나 붙일 겁니다. 테라폼 코드를 통해 Lambda와 ECR을 최초 배포할 때 컨테이너 이미지를 어떻게 처리해야 하는가입니다. 정확하게는 AWS 인프라를 테라폼으로 초기 구축하는 상황인 겁니다. 이런 상황에서 무엇이 문제가 되는지 살펴보려면 생성해야 하는 리소스를 알아야 합니다. 먼저 ECR(Elastic Container Registry)를 생성해줘야 합니다. 소스코드는 대충 아래와 같은 모양입..
테라폼으로 EKS를 생성할 때 만나는 에러입니다. 문제 상황은 aws_eks_cluster 를 통해 클러스터를 생성하고 나서 kubernetes_config_map 으로 aws-auth를 ConfigMap에 등록하려고 할 때 발생합니다. terraform apply 를 통해 두 개의 리소스가 함께 배포되는 상황입니다. 대략 아래와 같은 코드를 실행하는 상황이라고 볼 수 있습니다. 불필요한 부분은 말줄임표로 생략했습니다. resource "aws_eks_cluster" "this" { name = var.cluster_name ... } resource "kubernetes_config_map" "this" { metadata { name = "aws-auth" namespace = "kube-syste..
providers, resource, data, module 등을 묶어서 뭐라고 표현해야 할지 잘 모르겠습니다. 예약어, 키워드 등으로 볼 수 있을 텐데 여기서는 키워드라고 통칭하도록 합니다. 이번 글에서는 테라폼에서 통용되는 키워드를 하나씩 살펴보도록 합니다. # providers 테라폼은 docker, AWS, GCP 등 2021년 02월 기준으로 700개가 넘는 다양한 프로바이더를 제공합니다. 그중 핵심이 되는 것은 아래처럼 퍼블릭 클라우드와 쿠버네티스입니다. 이런 프로바이더를 providers 블록을 통해 선언하고 사용할 수 있습니다. 더 많은 정보는 다음 링크를 참고하세요. https://registry.terraform.io/browse/providers # resource resource는 ..
이번 글에서는 테라폼에서 통용되는 주요 키워드를 통해 테라폼을 이해하도록 합니다. 테라폼은 크게 configure, plan, apply 세 가지의 단계가 있습니다. 풀어서 보자면 설정(configure)하고 실행 계획(plan)을 살펴본 후에 배포(apply)하는 구조입니다. 실행 계획이라고 하면 SQL에서 explain을 생각하면 되고 apply는 배포에서 일반적으로 사용되는 deploy 키워드를 생각하면 됩니다. 여러 팀원이 인프라를 같이 만지더라도 VCS에 의해 인프라가 관리되기 때문에 충돌을 피해 갈 수 있습니다. 이로 인해 서비스 가용성을 보장받을 수 있습니다. 사실 여러 사람이 동시에 같은 인프라를 만지는 상황 자체가 정상은 아니지만 말입니다. configure 설정은 HLC(Hashicor..
인프라가 복잡하고 특히 development, staging, production 환경을 분리해서 사용하는 회사라면 IaC 도입이 필수입니다. 테라폼은 hashicorp에서 개발된 인프라 스트럭처를 효율적으로 구축, 변경, 관리하기 위한 도구(IaC)입니다. hashicorp은 한국에서 하시코프로 많이 통용됩니다. 앞에 hash를 보고 해시콥 이라고 읽어도 적당히 대화는 되지요도입 이후 기대되는 내용은 다음과 같습니다. # pros 인프라 변화 과정, 히스토리를 사용 중인 버전 관리 시스템(VCS)을 통해 형상관리할 수 있게 됩니다 인프라를 코드로 관리하면 애플리케이션을 형상관리 했을 때와 완벽하게 동일한 이점을 갖게 됩니다 누가, 언제, 왜 인프라를 변경 했는지 확인할 수 있고, 애플리케이션 코드를 리..
- Total
- Today
- Yesterday