minikube 를 사용해 쿠버네티스 어플리케이션을 배포하는 작업을 진행해보겠습니다. 우선 배포를 진행하기 전 간략하게 쿠버네티스에 대해 정리하는 시간을 가져보도록 하겠습니다. 쿠버네티스 클러스터는 아래와 같이 구성되어 있습니다. Deployment 안에 Master 가 포함 되어있는 구조로, Master는 Deployment에 포함된 어플리케이션 인스턴스가 클러스터의 개별 노드에서 실행되도록 스케줄을 합니다. 즉 Deployment는 쿠버네티스에게 어플리케이션 인스턴스에 대한 생성 및 업데이트를 지시하는 역할을 수행한다고 볼 수 있습니다. 배포를 담당하는 리소스입니다 쿠버네티스에서 deployment가 제일 중요하다고 볼 수 있겠죠? 1. 어플리케이션 배포 (새 유저 권한으로 진행) 쿠버네티스 공식 사..
kubectl이란? 쿠버네티스 클러스터에 명령을 내리는 CLI로 오브젝트 생성 수정 혹은 삭제와 관련한 동작을 수행 할 수 있도록 쿠버네티스 API 호출해 관련 동작을 수행 하는 역할을 합니다. 1. Kubectl 설치하기 (기본권한 = root 권한으로 진행) 아래의 명령어를 이용해 kubectl 설치를 진행해주세요 sudo snap install kubectl --classic 2. Node 조회 및 minikube 확인 (새 유저 권한으로 진행) 일반 유저(newuser) 로 로그인 후 kubectl 명령어를 통해 minikube 를 조회해보도록 하겠습니다. sudo su newuser kubectl get nodes ㅎ... 실행 했는데 아래의 오류가 갑자기 발생하더라고요...;; 이전에 몇개의 ..
드디어 드디어..... MiniKube 설치 전에 필요한 작업들이 종료 되었고 Ubuntu에 Minikube를 설치해보도록 하겠습니다. 1. 도커 설치하기 (기본권한 = root 권한으로 진행) aws에서 제공해주는 cloud9은 기본적으로 docker가 설치되어있으므로 생략 가능한 과정입니다. 설치가 안되어있다면 아래 명령어를 통해 설치를 진행해주세요~ sudo apt install docker.io -y 2. 도커 권한 수정 하기 (기본권한 = root 권한으로 진행) 아래 명령어를 통해 docker 권한 수정 작업을 진행 합니다. 생성한 user명이 newuser가 아니라면 해당 부분을 user명으로 수정해주세요. sudo usermod -aG docker newuser && newgrp docke..
이제 본격적으로 MiniKbue 에 대해 진행해보도록 하겠습니다. 간혹 기본 인스턴스 권한으로 실행시 Minikube 수행이 안되는 버그가 발생하기 때문에 이를 방지하고자 Minikube를 수행 할때 사용 할 새로운 유저를 생성해보도록 하겠습니다. MiniKube 설치를 진행 할때는 기본 권한인 root로 진행하고, 수행 할 때는 새로운 유저를 이용해 수행해보도록 하겠습니다~! 아래의 명령어를 이용하여 새로운 유저를 생성합니다. sudo adduser newuser 만약 'newuser is not in the sudoers file. This incident will be reported.' 의 오류가 발생 한다면 아래 명령어를 실행해주세요. sudo usermod -aG sudo newuser 아래의..
ECR 이미지 사용을 위해 IAM Role 생성하는 작업을 선 진행하도록 하겠습니다. 먼저 ECR에 대해서 알아보도록 하겠습니다. ECR이란? Elastic Container Registry의 약자로, Docker 컨테이너 이미지를 손쉽게 저장, 관리, 및 배포할 수 있게 해주는 완전 관리형 Docker 컨테이너 레지스트리 서비스라고 생각하시면 됩니다. ECR을 이용하게 되면 사용자 또는 Amazon EC2 인스턴스가 컨테이너 리포지토리 및 이미지에 액세스 할 수 있습니다. 아래의 과정과 같이 ECR을 이용해 이미지에 액세스하기 위해서는 권한 설정이 부여되어야 합니다. 이러한 권한을 설정해서 부여해주는 것이 IAM(Identity and Access Management) 입니다. 1. IAM 역할 생성 ..
AWS 진행을 위해 필요한 인프라도 구축 했으니 cloud9 인스턴스를 생성해보도록 하겠습니다. https://devnoong.tistory.com/34 [MiniKube 실습] AWS 인프라 구성하기 MiniKbue를 이용해서 aws 환경에 좀 더 친숙해져보는 시간을 가져보려고 합니다 :) MiniKube란? 단순한 개발 테스트를 위해 개인이 쿠버네티스 환경을 구축 할 수 있도록 도와주는 플랫폼이라고 할 수 devnoong.tistory.com 1. Cloud9 구성 AWS 콘솔 홈의 상단바에서 cloud9을 검색하여 새로운 환경 및 인스턴스를 만들도록 하겠습니다. 간단한 팁이지만 저 별표 모양을 선택하면 즐겨찾기 표시로 등록이 되어 AWS 콘솔 상단 바에 추가 되어 나중에 쉽게 접속 할 수 있기에 등..
MiniKbue를 이용해서 aws 환경에 좀 더 친숙해져보는 시간을 가져보려고 합니다 :) MiniKube란? 단순한 개발 테스트를 위해 개인이 쿠버네티스 환경을 구축 할 수 있도록 도와주는 플랫폼이라고 할 수 있습니다. 쿠버네티스는 마스터노드(Master Node)와 여러개의 워커노드(Worker Node)로 구성되어 있습니다. 이러한 기능들 중 필요한 일부 기능만 제공함으로써 마스터 노드의 일부 기능과 하나의 단일 워커로 구성되어있는 플랫폼이라고 생각하시면 됩니다 또한 일정시간 이상 사용하지 않을 경우 MiniKube가 감지해 인스턴스를 종료시켜주니 비용 절감 측면에서 큰 장점을 보이고 있습니다. 필요한 기능과 비용 절감의 장점을 가지고 있기때문에 개인이 개발 테스트를 위해 많이 사용하는 추세인것 같..
CI/CD for EKS cluster란? Github 에 위치한 application 소스와 k8s manifests 의 변경 사항이 발생될 때 마다 자동으로 Github Action 을 통해서 빌드/통합(Continous Integration) 하고, 통합된 배포 대상을 ArgoCD 를 통해 k8s 클러스터에 배포(Continous Deployment) 하는 일종의 gitops 파이프라인을 만드는 과정을 안내 합니다. 이 때 k8s manifests를 통합/패키징 하는 도구로 Kustomize를 사용 합니다. manifest 정적 분석을 위해 Checkov와 Trivy 를 함께 사용 합니다. 이를 통해 클러스터의 보안을 향상 할 수 있습니다. CI/CD 파이프라인의 동작 흐름은 다음과 같습니다. CI..
Cluster Autoscaler란? 이전 글에서 파드에 오토 스케일링을 적용해봤습니다. https://devnoong.tistory.com/28 [EKS 웹 애플리케이션 구축] HPA 적용하기 쿠버네티스 오토 스케일링이란? 오토 스케일링 서비스는 사용자가 정의한 주기 및 이벤트에 따라 서버를 자동으로 생성하거나 삭제하는 기능을 의미합니다. 오토 스케일링을 사용함으로써 애 devnoong.tistory.com 하지만 트래픽에 따라 파드가 올라가는 워커 노드 자원이 모자라게 되는 경우도 발생하게 됩니다. 즉, 워커 노드가 가득 차서 파드가 스케줄될 수 없는 상태가 되기때문에 Cluster Autoscaler(CA) 사용합니다. 1. ASG(Auto Scaling Group) 값 확인 현재 클러스터의 워커노..
쿠버네티스 오토 스케일링이란? 오토 스케일링 서비스는 사용자가 정의한 주기 및 이벤트에 따라 서버를 자동으로 생성하거나 삭제하는 기능을 의미합니다. 오토 스케일링을 사용함으로써 애플리케이션은 트래픽에 따라 탄력적으로 대응할 수 있습니다. 쿠버네티스에는 크게 두 가지의 오토 스케일링 기능이 있습니다. HPA(Horizontal Pod AutoScaler) Cluster Autoscaler HPA는 CPU 사용량 또는 사용자 정의 메트릭을 관찰하여 파드 개수를 자동으로 스케일합니다. 그러나 해당 파드가 올라가는 EKS 클러스터 자체 자원이 모자라게 되는 경우, Cluster Autoscaler를 고려해야 합니다. 먼저 HPA를 사용하여 파드 스케일링 적용해보도록 하겠습니다. HPA(Horizontal Pod..