전체 글 34

terraform 명령어 랩핑 스크립트

terraform에서 전역변수를 사용할 때 보통은 terraform.tfvars 를 사용한다 terraform.tfvars 를 사용하게 되면 apply시에 자동으로 파일을 읽어 들여 전역변수를 정의하게 된다. 만약 tfvars 파일이 terraform.tfvars 가 아니라 global.tfvars 일 경우 읽어들이지 못한다 그럼 방법이 없는가?아니다 global.auto.tfvars 를 사용하면 된다 허나 이 역시 문제는 있다 apply 하는 디렉토리 위치에 존재해야만 읽어들일 수 있다 그럼 global.tfvars가 외부 디렉토리에 있다면 어떻게 해야 할까 apply 명령어 뒤에 -var-file="../global.tfvars" 를 통해 상대경로 혹은 절대경로의 global.tfvars 파일 경로를..

aks 생성시 helm 과 yaml 배포

aks 생성할 떄 helm 과 yaml 파일을 배포 하도록 provisioning 코드를 구성했다  provisoning 코드의 디렉토리 구조 main├── common│ ├── manifests│ │ ├── config_map│ │ ├── helm│ │ ├── kube_list│ │ └── kube_yaml│ ├── user_templates│ └── wrapper└── provision ├── RS1 ( 실제 프로비저닝 위치) └── RS2 리소스 그룹 목록RS1├── aks_cluster.tf├── aks_configure│   ├── config_map.tf│   ├── helm.tf│   ├── manifests.tf│   ├── namespa..

k8s 관련 modules 구성

지난번엔 azure modules 를 구성하고 aks_cluster를 프로비저닝 해 봤다 이번엔 aks-cluster에 helm 과 yaml 배포 namespace 등등 각종 초기세팅에 필요한것을 구성해봤다  기존 모듈에 새로운 모듈을 추가 구성했다 모듈의 디렉토리 구조 modules ├── base │   └── resource_group ├── ETC │   ├── helm │   ├── kube │   ├── kube_tpl │   └── output_file ├── kubernetes │   └── core │   ├── configmap │   └── namespace └── network ├── publ..

Azure terraform provisioning 구현

간단하게 aks를 생성하는 provisioning 코드를 구성RS 그룹에 한 서비스를 통으로 넣어서 관리할 수 있도록 디렉토리 구조를 구성했다  provisoning 코드의 디렉토리 구조 main├── common│   ├── manifests│   │   ├── config_map│   │   ├── helm│   │   ├── kube_list│   │   └── kube_yaml│   ├── user_templates│   └── wrapper└── provision ├── RS1 ( 실제 프로비저닝 위치)    └── RS2 리소스 그룹 목록RS1├── aks_cluster.tf├── network.tf├── output.tf├── provider.tf├── resource_group.tf..

Azure terraform modules 구성

Azure Terraform 을 공부하면서 간단하게 모듈을 구성 모듈의 디렉토리 구조 modules ├── base │   └── resource_group ├── container │   ├── kubernetes_cluster │   ├── kubernetes_node_pool │   ├── registry │   └── registry_scope_map ├── kubernetes │   └── core │   ├── configmap │   └── namespace └── network ├── publicIP ├── subnets └── virtual_networkresource_gr..

ETC 모듈 구현

ETC 모듈 기능 terraform 으로 인프라 자동화를 구축 할 때 eks 클러스터안에 설정 & 설치 할 리소스들을 위해 만든 모듈 입니다 클러스터구성(alb,external_dns 등..)을 자동화 하기 위해 terraform 외부에서 스크립트를 사용하지 않고 terraform apply 시 자동설치가 되게 하려는 목적입니다 ETC 모듈 helm 이 모듈은 eks 클러스터 내의 helm 배포 기능을 위한 모듈입니다 외부에서 helm 명령어를 사용 하지 않고 terraform에 chart value.yaml 혹은install시 --set 의 key 와 value 값을 map 타입변수에 넣어 사용 합니다 helm install --set 모듈 resource "helm_release" "values_se..

network 모듈 구현

network 모듈 기능 aws 에 로드밸런서를 구현하고 호스트에 라우팅 하기 위한 기능입니다 nlb alb 를 사용하기 위해 구성 하였습니다 각각의 기능을 분리 한 이유는 gitlab 인스턴스의 네트워크 구조 때문입니다 ssh clone 기능을 사용 하기 위해 새로운 ssh용 호스트를 구성하는 대신 하나의 호스트로 로드 밸런서를 통해 ssh 와 alb 를 나눠 사용 하기 위함 입니다 alb의 단일 구성이나 각각의 기능을 구성하고 연결 할 수 있도록 만들었습니다 network 모듈 alb 이 모듈은 간편하게 alb를 구성하기 위한 모듈 입니다 alb 모듈 안에서 로드밸런서 타겟그룹 리스너 를 전부 생성하여 간편하게 사용 가능합니다 alb 모듈 resource "aws_alb" "alb" { name = ..

iam 모듈 구현

IAM 모듈 기능 AWS 의 iam 을 구성하기 위해 만든 기능입니다 policy oidc role 을 생성 하고 role과 policy를 attach 하고 인스턴스에서 사용이 가능하도록 arn을 제공하는 역할을 합니다. iam 같은 경우는 role 생성 policy 생성 role 과 policy 의 attach 기능이 전부 따로 동작 해야 할 필요성이 있어서 각각의 기능들을 분리 시켰습니다 IAM 모듈 iam policy 모듈 iam Policy AWS에서 객체에 대한 액세스 권한을 정의합니다. JSON 형식으로 작성되어 특정 AWS 서비스나 리소스에 대해 어떤 작업을 수행할 수 있는지, 그리고 이러한 작업이 언제 수행될 수 있는지를 지정합니다. resource "aws_iam_policy" "rout..

compute 모듈 구현

compute 모듈 기능 AWS 의 컴퓨팅 기능을 사용하기 위한 모듈 입니다 vpc , ec2 , eks 정도를 모듈로 구현 하고 이를 사용하여 인프라를 구축할 수 있도록 하였습니다 vpc : 보안그룹 서브넷 ec2 : 인스턴스와 ebs eks : 쿠버네티스 클러스터와 노드그룹 vpc 모듈 VPC AWS에서 제공하는 가상 네트워크 서비스입니다. VPC를 사용하면 사용자가 정의한 IP 주소 범위를 갖는 가상 네트워크를 생성하고, 이 네트워크 내에서 인스턴스 및 다른 AWS 리소스를 실행할 수 있습니다 vpc resource "aws_vpc" "vpc" { cidr_block = var.vpc_cidr_bloak instance_tenancy = "default" //테넌시 - 기본값 enable_dns_h..

terraform 설치

선행 조건 terraform cli 가 설치 되어 있어야 합니다 aws cli가 설치되고 aws configure 로 엑세스 키 시크릿키가 등록 되어 있어야 합니다 AWS CLI 설치 https://awscli.amazonaws.com/AWSCLIV2.msi 링크를 클릭하여 AWS CLI를 설치 합니다 AWS configure 설정 vscode 터미널에서 aws configure 를 입력 합니다 PS C:\Users\user> aws configure AWS Access Key ID [None]: # IAM에서 생성한 Access Key 입력 AWS Secret Access Key [None]: # IAM에서 생성한 Secret Access Key 입력 Default region name [None]: ..

반응형