[이전 게시글]에서 작성한 코드가 버전 때문인지 제대로 작성되지 않았고,eks-workshop으로 eks를 배포하려다가 eks module을 사용하여 배포해보고 싶어 배포하게 되었습니다. Blue Print를 사용하지 않고, standard하게 구성하되, karpenter를 추가했습니다.karpenter를 설명하고 이를 테스트해 보겠습니다.파일 트리는 아래와 같으며, 전체 코드는 GitHub에 올려놓았습니다. (https://github.com/ssungz789/eks-self) KarpenterKarpenter의 기본 동작 구조는 아래와 같습니다.운영 부담 절감신속한 Node 추가와 제거자동 Node 롤링 (TTL)다양한 인스턴스 타임을 쉽게 적용빠른 버전 업데이트AWS 의존성을 제거함Auto scal..
전체 글
Symbolic Link는 Linux 서버 운영 시 유용하게 사용됩니다.여러 어플리케이션에서 로컬 패스처럼 사용할 수도 있고, 사용 범위가 넓습니다. link가 더 이상 필요하지 않아 삭제해야할 때 까딱 잘못하면 원본 데이터가 지워지는 불상사가 생길 수 있습니다.안전하게 symbolic link를 제거하는 방법을 설명합니다. Case1. NAS가 /data/test에 마운트되어 있고, /data를 삭제해야하는 경우NAS 마운트 여부 확인NAS 마운트 해제mount를 해제하지 않고, /data를 지우는 경우 NAS 내부 데이터도 모두 삭제되므로 반드시 umount Case2. NAS는 별도 경로에 mount 되어있으나, 삭제 대상에 symbolic link가 걸려있는 경우NAS가 연결된 링크 포인트 확인u..
EKS 생성 방법AWS Console GUI 환경에서 생성IaC를 통해 생성 (Cloud Formation, AWS CDK, RANCHER)전용 명령 tool (eksctl)AWS Console GUI장점 : GUI에서 클릭클릭으로 생성하므로 매우 쉽다단점 : 별도 로그, 코드를 남기기 않기 때문에 이력 확인이 어렵다. (콘솔 상의 설정 값으로 유추해야함)EKSCTL 사용장점 : Conosle과 마찬가지로 배포가 쉽다. 코드로 이력을 남길 수 있어 관리가 수월하다.단점 : EKS에만 타겟된 도구이므로 AWS 자원 전체를 관리하기에는 불편하다.IaC 사용Terraform : 전체적인 사용 빈도가 가장 많고 대중화되어 있으며, EKS 생성이 간편하도록 별도 모듈도 제공한다.CDK : Terraform은 자체..
테스트 환경은 Oracle 11.2.0.4 버전이나, 타 버전의 경우에도 큰 차이는 없습니다. 업그레이드를 하지 않을 경우 AWS에서 예정한 일정에 맞춰 엔진 업그레이드가 진행됩니다.자동 업그레이드가 될 경우 특이사항 발생 시 즉시 대응이 어려우므로 수동 진행하는 것을 권장합니다. 업그레이드 진행 시 서비스 단절(테스트 시 40분 가량 단절)이 발생합니다. 물론 소요 시간은 RDS 상태에 따라 차이가 있을 수 있습니다.업그레이드 이후 Desupport 항목으로 인해 서비스 장애가 발생할 수 있기 때문에 인스턴스 복제를 통해 사전에 충분히 검증 후 진행하는 것을 권고하고 있습니다. (AWS Docs 내용) Testing an UpgradeBefore you perform a major version up..
23.11.28 – Rocky Linux는 현재 지원하지 않습니다. 1. Cloud Log Analytics 신청 (콘솔)2. Management 탭에서 대상 서버 수집 설정 3. 수집 필요한 로그 지정 > 적용 선택 Template의 Apache, Tomcat, mysql은 yum install 기본 경로로 별도 경로에 설치한 경우 custom log로 추가합니다. b. 날짜별로 rotate 되는 로그의 경우 날짜 앞에 *(asterisk)로 수집 가능 예) /usr/local/tomcat/logs/* 4. 아래 페이지 가이드와 같이 서버 내 Agent 설치 - Log 수집 설정이 변경되면 Agent를 다시 설치해야함 (yml 파일 설정 반영) 5. 설치 과정에서 오류가 없는지 =====Fi..
CI/CD 툴인 Atlantis를 통해 Custom workflow를 통해 인프라를 구성합니다. Atlantis?Atlantis는 pull request를 통해 Terraform을 자동화하는 오픈소스입니다.Terraform 코드를 pull request 하고, comment에 atlantis plan, atlantis apply를 통해 테라폼 코드를 배포할 수 있습니다. Atlantis의 기본 동작은 아래와 같습니다.github 또는 gitlab, bitbucket을 통해 PR(pull request)를 보냅니다.git repo에 설정해노흔 webhook을 통해 atlantis에서 comment에 입력된 명령어를 전달받아 terraform을 수행합니다. Atlantis 구축해보기repo는 github을 ..
최근 미팅에 참석하니, 환경상 인프라 3대 이상 사용은 어렵고,인스턴스 이중화가 아니더라도 Tomcat이라도 무중단이 되었으면 좋겠다고 하였다.(마치 blue green 처럼...) 생각한 구성은 이랬다. Instance : WEB-WAS(1ea), DB(1ea)SW : nginx, tomcat, redis, mysql Tomcat 1,2 을 두고 톰캣에 auto deploy 설정을 해놓고,배포가 필요할 때 꺼져있는 톰캣에 war 파일을 업로드해주면 가능할 것 같았다.Session 저장은 redis에 할 것이기 때문에 크게 신경쓰지 않았다. Tomcat 2대에 auto deploy 설정해준다. nginx.conf 설정을 해준다. 실제 배포를 해보니 넘어가는 순간 WAS 커넥션이 유실되어 5..
어느덧 절반을 했다.terraform이 생소해서 아직 손에 익지 않았지만 천천히 익숙해질 때까지 해보겠다. Provider1. Terraform의 동작 원리 테라폼은 코드를 읽어 코드가 실행이 가능한지 분석하고, 가능하다면 API를 통해 대상에 속성이 반영되도록 호출합니다. core 컴포넌트는 사용자의 코드에 대해 순서를 작성하고, 플러그인에게 RPC 통해 코드 실행을 요청한다.플러그인은 go 바이너리를 통해 대상에게 api로 실행을 요청한다.terraform 코드에서도 required_providers를 선언하므로 어떤 프로바이더를 사용할지를 명시한다. terraform init명령어를 수행하면 플러그인 (프로바이더) 모듈을 다운로드 받는다.init이 완료되면, .terraform 디렉토리가 생성되는데..
for_expression을 활용하여, AWS 인스턴스 배포 - vpc.tfprovider "aws" { region = "ap-northeast-2"}resource "aws_vpc" "ssungz-vpc" { cidr_block = "10.100.0.0/16" tags = { Name = "ssungz-vpc" }}resource "aws_subnet" "ssungz-subnet" { for_each = var.subnets vpc_id = aws_vpc.ssungz-vpc.id cidr_block = each.value.cidr_block availability_zone = each.value.az map_public_ip_on_launch = each.value.public ..
- data를 통해 az 조회 및 조회 데이터로 리소스 생성 - available 상태의 zones 조회data "aws_availability_zones" "az_list" { state = "available"}output "aws_availability_zones" { value = data.aws_availability_zones.az_list} - ap-northeast-2a, ap-northeast-2c 두개 존에 ec2 배포 기본 서브넷 문제로 서브넷은 변수로 할당provider "aws" { region = "ap-northeast-2"}data "aws_availability_zones" "az_list" { state = "available"}data "aws_ami" "ec2-..