최근 입사한 회사에서 조직마다 클러스터를 따로 쓰고 있다보니 관리에 애로사항이 꽃필 것 같아서 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를 감싸주는 형태가 되었음