새소식

기술/Application

Terraform Provider

  • -
Terraform

최근 입사한 회사에서 조직마다 클러스터를 따로 쓰고 있다보니 관리에 애로사항이 꽃필 것 같아서 IaC를 하기 위해 조금씩 스터디해서 저장해놓는 글


AWS Provider 사용 시

provider "aws" {
  region     = "ap-northeast-2" #사용 리전
  profile    = "dev" #aws profile
  shared_config_files = [ "~/.aws/config" ] #aws configure 후 저장된 config file 사용을 선언
  shared_credentials_files = [ "~/.aws/credentials" ] #aws configure 후 저장된 credentials file 사용을 선언
}

Access Key를 하드 코딩하면 보안 상 좋지도 않고 EKS 쓰려면 aws configure는 필수라서 저장된 인증 정보 파일을 불러오도록 설정함

Kubernetes Provider 사용 시

variable "cluster_name" {
  default = "dev-devops-cluster"
  description = "cluster의 이름 지정"
}

variable "aws_region" {
  default = "ap-northeast-2"
  description = "리전 설정"
}

variable "aws_profile" {
  default = "dev"
  description = "aws profile 지정"
}

provider "kubernetes" {
  config_path    = "~/.kube/config"
  
  exec {
      api_version = "client.authentication.k8s.io/v1beta1"
      args        = ["eks", "get-token", "--region",var.aws_region, "--profile", var.aws_profile, "--cluster-name", var.cluster_name]
      command     = "aws"
    }
}

variable을 이용하여 클러스터 이름, 리전, aws profile 등을 변수 처리해뒀음

Helm Provider 사용 시

provider "helm" {
  kubernetes {
    config_path    = "~/.kube/config"
    
    exec {
      api_version = "client.authentication.k8s.io/v1beta1"
      args        = ["eks", "get-token", "--region",var.aws_region, "--profile", var.aws_profile, "--cluster-name", var.cluster_name]
      command     = "aws"
    }
  }
}

Helm은 결국 Kubernetes 안에서 동작하기 때문에 Kubernetes Provider를 감싸주는 형태가 되었음

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.