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..
PyCharm(IntelliJ라도 상관없음)에서 YAML(yet another markup language or YAML ain't markup language) 파일을 열어보면 다음과 같이 syntax highlighting이 잘 적용되어 있습니다. 아마도 대부분의 사람들은 "IDE에서 syntax highlighting은 당연한 기능 아냐?"라고 하실 수도 있는데요. 맞습니다. 확장자에 따라서 기본 설정이 적용되어 있기 때문입니다. 최근에 테라폼(Terraform)으로 코드를 개발하면서 YAML 파일을 템플릿 형식으로 작성할 일이 꽤 많았는데요. 확장자는 tftpl 였습니다. 테라폼에서 templatefile 함수를 통해 읽는 파일의 확장자는 tftpl로 권장됩니다. *.tftpl is the rec..
에.. 이 자격증은 정말 생각이 없었는데 갑자기 필요해서 응시하게 됐습니다. 좀 얼토당토 한 이유기는 하지만 다음 주에 라스베가스에서 열리는 AWS Re:Invent 행사에 참가하게 됐는데요, 어렴풋한 기억에 작년에는 HashiCorp 부스에서 자격증이 있는 사람들한테 스페셜한 굿즈를 나눠줬다는 게 생각이 나서요. 잘못된 기억일 수도 있습니다. 리인벤트 행사가 아니라 다른 행사였을 수도 있고요. 아무튼, 회사 업무 때문에 Terraform을 한참 사용하고 있고 제가 클라우드 발표를 할 때도 여러 차례 테라폼 코드를 언급해주고 있는데 자격증 하나 있으면 나쁘지 않겠다는 생각이 들었습니다. 참고로 저는 하시코드 엠베서더이기도 합니다. 이 글조차 엠베서더 활동일지도(...) 🙃 # 시험 준비 각설하고 이번에 ..
테라폼 코드를 로컬에서 개발&운영하다가 테라폼 클라우드(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..
이번에 한빛미디어에서 아주 재밌는 책이 발간됐습니다. 테라폼의 기본부터 실무까지 두루 훑고 있는 테라폼으로 시작하는 IaC 입니다. 이 책이 매력적인 이유를 하나씩 이야기해 보도록 하겠습니다. 💫 먼저 이 책인 기본에 아주 충실한 책입니다. IaC(Infrastructure as Code) 가 필요했던 이유부터 시작합니다. 프로그래밍 언어를 다룰 때 좋은 코드와 구조, 나아가 우리(코드를 읽고 쓰는 사람)가 코드를 읽는데 더 많은 시간을 사용하는 점을 들며 테라폼의 등장을 소개합니다. 그리고 기본적인 콘셉트, 그러니까 테라폼 코어와 프로바이더가 통신하고 실제 인프라 API와 통신하는 구조를 설명합니다. 그다음으로 테라폼의 기본 문법부터 모듈까지 다룹니다. 그렇기 때문에 입문자도 어렵지 않게 모든 예제를 ..
HashiCorp를 제대로 알게 된 건 2021년 초쯤 되려나? 회사의 인프라를 Terraform으로 관리해 보겠다는 생각에 나름 깊이 있게 공부를 시작한 후부터다. 아는 만큼 보인다고 키워드를 알기 시작하니 주변에 IaC니 뭐니 많은 것들이 보이기 시작했다. 마침 그때 당시에 한빛미디어에서 Terraform 관련된 책도 여러 권 나왔던 걸로 기억한다. 운 좋게 서평 리뷰까지 했으니까. 지금 생각해 보니 모든 것이 타이밍이 잘 맞았던 것 같다. 21년에는 개발하던 (거의) 모든 인프라를 테라폼으로 구현했는데 지금 보면 정말 날코딩 느낌이다(웃음) 뭔가 반년 전에 내가 짠 코드 보는 느낌이랄까? 시간이 흘러 22년에 하반기부터 새로운 제품 개발에 착수 됐는데 그때 정말 혼신의 힘을 다 해 테라폼을 다룬 듯..
클라우드 인프라를 구축하는 방법은 0) 프로바이더가 제공하는 웹 대시보드에서 생성 1) 애드 훅 스크립트(bash, shell script) 사용 2) 구성 관리 도구(Chef, Puppet, Ansible, Saltstack) 3) 서버 템플릿 도구(Docker, Packer, Vagrant) 4) 서버 프로비전 도구(Terraform, CloudFormation, Openstack Heat) 이렇게나 다양합니다. 오늘은 테라폼을 통해 GCP 인프라를 구축하기 위해 그 뼈대가 되는 모듈 구조에 관해 이야기해봅니다. 본문에서 사용하는 코드는 GitHub으로 제공되니 전체 코드가 궁금하신 분은 링크를 참고하시면 되겠습니다. 이 글은 GCP 기준으로 작성했지만, AWS, Azure 등 어떤 provider를..
redis를 사용하면서 필요에 의해 CONFIG SET을 통해 설정을 변경하는 경우가 있습니다. 아마 처음 config set을 검색했을 때 목적은 notify-keyspace-events 변경을 통해 key expire에 대한 이벤트를 받기 위해서가 많을 듯합니다. notify-keyspace-events 변경은 아래 페이지에 자세히 설명되어 있습니다. https://redis.io/topics/notifications Redis Keyspace Notifications – Redis *Redis Keyspace Notifications IMPORTANT Keyspace notifications is a feature available since 2.8.0 *Feature overview Keyspac..
본문을 읽기 전에 Zombie, Orphan 프로세스란 무엇인지 알고 있을 필요가 있다. 관련된 내용은 다음 글에 매우 잘 정리가 되어 있으니 참고하기 바란다. - Zombie process reaping 에 대하여, Container에서 고려할 부분들 컨테이너를 생성할 때 한 개의 일만 처리하게 설계하면 좋겠지만 그렇지 못한 경우도 분명 생길 수 있다. 간혹 자식(child process)을 만들어서 일을 시켜야 하는 경우가 있는데 새로운 컨테이너를 생성하거나 API 통신으로 동작시키는 것보다 나은 상황이 있기 때문이다. 아무튼, 이렇게 자식 프로세스를 만들어서 일을 시켜보면 의도치 않게 자식이 고아가 되는 경우가 발생한다. 자식의 자식의 자식 이라던가... 뭐 물론 좋은 설계는 아니지만. 이런 경우가..
인프라가 복잡하고 특히 development, staging, production 환경을 분리해서 사용하는 회사라면 IaC 도입이 필수입니다. 테라폼은 hashicorp에서 개발된 인프라 스트럭처를 효율적으로 구축, 변경, 관리하기 위한 도구(IaC)입니다. hashicorp은 한국에서 하시코프로 많이 통용됩니다. 앞에 hash를 보고 해시콥 이라고 읽어도 적당히 대화는 되지요도입 이후 기대되는 내용은 다음과 같습니다. # pros 인프라 변화 과정, 히스토리를 사용 중인 버전 관리 시스템(VCS)을 통해 형상관리할 수 있게 됩니다 인프라를 코드로 관리하면 애플리케이션을 형상관리 했을 때와 완벽하게 동일한 이점을 갖게 됩니다 누가, 언제, 왜 인프라를 변경 했는지 확인할 수 있고, 애플리케이션 코드를 리..
AWS, Google Cloud Platform, Azure 등 퍼블릭 클라우드가 서비스로 흘러들면서 효율적인 인프라 관리를 위한 방법이 화두가 되었습니다. 서버 운영, 관리에 조예가 깊은 개발자라면 잘 알겠지만 애드 훅 스크립트를 통한 서버 관리는 대안이 없던 그 시절 매우 효율적인 것처럼 보였습니다. 요즘은 애드 훅 스크립트를 넘어 다양한 도구들이 쏟아지고 있는데 그 중심에 Terraform(테라폼)이 있다고 해도 과언이 아닐 겁니다. 테라폼은 대표적인 코드형 인프라(Infrastructure as Code: 이하 IaC)로 서버 프로비전 도구입니다. 이 책에서는 서버 관리를 위한 다양한 도구를 설명하고 테라폼과 비교합니다. 그리고 테라폼의 기본적인 철학과 사용법, 나아가 고도화 전략을 다룹니다. 책..
- Total
- Today
- Yesterday