클라우드/AWS-Terraform 6

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]: ..

terraform 배포 전략

회사 프로젝트에서 terraform을 도입 하여 인프라스트럭처를 코드로 관리 하고 있습니다 terraform으로 서로 다른 배포환경(dev,test,prod)의 인프라를 관리 하는 방법에 대해 서술 합니다 Project 단위 분리 프로젝트 분리를 통한 배포환경 분리 방법 terraform 으로 서로 다른 배포환경의 인프라를 관리 하는 가장 단순한 방법은 프로젝트를 환경별로 분리 하는 방법 입니다 ┬terraform_dev ├── main │ ├── main.tf │ └── provider.tf └modules ┬terraform_prod ├── main │ ├── main.tf │ └── provider.tf └modules 서로 다른 프로젝트이기 때문에 credentials, backend 등의 con..

반응형