이전 내용
[Cloud] 도커로 DB 연결하기
이전 내용 [Cloud] 컨테이너 이미지 경량화 시키기이전 내용 [Cloud] 도커 허브에서 컨테이너 이미지 다운로드 & 업로드하기이전 내용 [Cloud] 컨테이너 이미지, 컨테이너 생성 및 실행 (feat. 도커)이
puppy-foot-it.tistory.com
AWS의 EKS와 ECR 개념
Amazon EKS(Amazon Elastic Kubernetes Service)와 Amazon ECR(Amazon Elastic Container Registry)는 AWS(Amazon Web Services)의 핵심 서비스를 위한 두 가지 중요한 구성 요소이다.
- EKS는 Kubernetes 클러스터를 관리하는 서비스로, 고가용성과 편리한 관리 기능을 제공한다.
- ECR은 Docker 이미지를 저장하고 관리하는 서비스로, 쉽게 이미지를 배포하고 관리하는 데 도움이 된다.
이 두 서비스를 함께 사용하면, AWS 환경에서 Kubernetes 애플리케이션을 쉽게 배포하고 관리할 수 있다.
※ 쿠버네티스 클러스터: Kubernetes의 핵심 구성 요소로, 애플리케이션 컨테이너를 배포하고 관리하는 데 필요한 여러 요소로 구성
1. Amazon EKS (Elastic Kubernetes Service)
Amazon EKS는 완전 관리형 Kubernetes 서비스를 제공한다. 사용자가 Kubernetes 클러스터를 쉽게 배포하고 관리할 수 있도록 AWS가 설정과 유지 관리의 복잡성을 줄여준다.
[주요 기능]
- 관리형 클러스터: 클러스터의 프로비저닝, 구성, 유지 관리를 AWS가 처리하여 사용자는 Kubernetes의 API와 도구를 사용하여 작업할 수 있다.
- 고가용성: EKS는 AWS의 여러 가용 영역에 걸쳐 클러스터를 제공하여 높은 가용성을 보장한다.
- 자동화된 업데이트: Kubernetes 버전 업데이트는 자동으로 처리할 수 있으며, 새로운 기능과 보안 패치가 포함된 최신 버전으로 쉽게 업그레이드할 수 있다.
- AWS 통합: EKS는 AWS의 다른 서비스와 긴밀하게 통합되어, IAM(Identity and Access Management), CloudWatch 등과 함께 사용할 수 있는 편리한 환경을 제공한다.
- 보안: EKS는 AWS IAM을 통해 보안 및 권한 관리를 할 수 있으며, 컨테이너 네트워크 보안도 지원한다.
2. Amazon ECR (Elastic Container Registry)
Amazon ECR은 Docker 이미지를 저장하고 관리할 수 있는 완전 관리형 컨테이너 레지스트리 서비스다. ECR을 사용하면 애플리케이션을 위한 이미지를 저장하고 배포하는 과정이 간편해진다.
[주요 기능]
- 손쉬운 이미지 관리: ECR은 이미지의 저장소를 제공하며, 중앙에서 이미지를 쉽게 관리하고 검색할 수 있게 한다.
- 고가용성: AWS 인프라 스트럭처를 기반으로 하여 ECR은 높은 가용성으로 이미지를 제공한다.
- 보안: IAM을 통해 ECR에 대한 접근 권한을 관리하며, Amazon VPC와의 통합을 통해 추가적인 보안을 적용할 수 있다.
- CI/CD 통합: ECR은 AWS CodePipeline, CodeBuild 등과 통합되어, 지속적인 통합 및 배포(CI/CD) 환경에서 쉽게 사용할 수 있다.
- 자동 스캔 기능: ECR은 주기적으로 이미지를 스캔하여 보안 취약점을 식별하고 이를 사용자에게 알리는 기능을 제공한다.
★ 중요 ★
eksctl 명령을 이용해서 AWS ECR 이미지를 생성하기 전 요구되는 선행 작업
※ 기본적으로 VPC, 퍼블릭 서브넷, 프라이빗 서브넷, IGW, NAT GW 등은 생성되어 있다고 가정
1. ubuntu 서버 필요: AWS EC2 인스턴스 생성 (필자의 경우 인스턴스명: aws-managed-server)
2. ubuntu 서버에 AWS CLI 설치
3. ubuntu 서버에 eksctl 설치
4. ubuntu 서버에 kubectl 설치
5. XShell (또는 WSL)에서 ubuntu 서버 연결
6. XShell 에서 aws 관리 위한 CLI 로그인 (aws configure) - aws 액세스 키, 시크릿 키 필요
aws에서 ECR 사용하기
aws console에 접속해서 eks를 검색하면 Elastic Kubernetes Service가 검색된다, 이를 클릭
EKS에 들어가면 좌측 메뉴에 ECR 이 있는데, 이를 클릭
ECR에 들어온 다음 [리포지토리 생성] 클릭
프라이빗 리포지토리 생성에서
리포지토리 이름은 추후 Xshell에서 만들(물론 미리 만들어도 된다) 폴더명과 동일하게 만드는 게 좋다.
이렇게 프라이빗 리포지토리가 생겼는데, 안에 내용물(이미지)은 아직 없다.
여기서 [푸시 명령 보기] 버튼을 클릭해보면
Xshell에서 어떤 명령어를 사용하면 되는지에 대한 명령어가 나온다. (리눅스 환경이므로 리눅스 탭 확인)
★ aws cli 설치
sudo apt-get install -y unzip curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" unzip awscliv2.zip sudo ./aws/install
★ ubuntu Linux EC2 에 EKS설치/운영 툴인 eksctl 설치
curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp sudo mv /tmp/eksctl /usr/local/bin eksctl version
★ ubuntu Linux EC2 에 k8s 관리툴인 kubectl 설치
curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.21.2/2021-07-05/bin/linux/amd64/kubectl chmod +x ./kubectl mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$PATH:$HOME/bin echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc kubectl version --short --client
★ ubuntu Linux EC2 에서 aws 관리 할수 있도록 CLI 통한 로그인 하기
aws configure AWS Access Key ID [None]: 본인 Access Key AWS Secret Access Key [None]: 본인 Secret Access Key Default region name [None]: ap-northeast-2 (서울 리전) Default output format [None]: json # 아래 명령어 썼을 때 profile이 뜨면 로그인 성공 aws configure list
이제 Xshell 로 돌아와서 앞서 만든 우분투 세션으로 연결한 다음
[Cloud] aws: ubuntu(우분투) Xshell 8 연결하기
이전 내용 [aws] 데이터베이스: RDS 생성하기이전 내용 [aws] default.conf 란?이전 내용 [aws] 3-Tier의 첫걸음: 도메인 톰캣 화면으로 바꾸기이전 내용 [aws] 프라이빗 서브넷 생성하기(feat. NAT 게이트웨
puppy-foot-it.tistory.com
도커 빌드(2번 명령어) → aws ECR 로그인 (1번 명령어) → tag (3번 명령어) → push (4번 명령어) 순으로 도커를 빌드하고 ECR에 로그인 해서 tag로 이미지를 명시하고 push로 업로드를 해주면 된다.
그리고나서 ECR 레포지토리에 들어가보면 좀전에 업로드한 이미지가 표시되는 것을 확인할 수 있다.
우분투 서버에
도커 설치 + 도커파일 실행해보기
앞서 nginx와 톰캣 서버에 도커를 설치하고 도커파일을 실행해본 것처럼 우분투 서버에도 동일한 작업을 진행해 본다.
먼저 Xshell에서 우분투 서버에 루트 경로에 있다는 가정 하에 사용자 계정으로 이동한다.
왜냐하면 루트 서버에서는 파일을 전송할 수 있는 XFTP가 보안상 불가하기 때문이다.
사용자 계정으로 이동 후, 도커 설치 파일(install-docker.sh)을 루트 경로로 이동 시켜야 한다. 그리고 루트 계정으로 접속한 뒤, 해당 파일에 실행 권한을 부여한 뒤 설치하면 도커를 설치할 수 있다. 이를 명령어로 풀어보면
# 사용자 계정으로 이동
exit
# install-docker.sh 파일 루트 경로로 이동
sudo mv ./install-docker.sh /root
# 루트 계정 접속
sudo -i
# 파일 옮겨졌는지 확인
ls
# 도커 설치 파일에 실행 권한 부여
chmod u+x install-docker.sh
# 유저 확인 (unbuntu로 되어 있는지)
vi install-docker.sh
# 파일 실행
install-docker.sh
이 과정을 거치면 도커 설치 파일(정확히는 스크립트)이 실행되며, 해당 파일 내에 있는 스크립트가 작동하며 설치가 진행된다.
※ install-docker.sh 파일을 vi 에디터로 켜서 DOCKER_USER가 ubuntu 로 되어 있는지 확인 (다르게 되어 있다면 ubuntu로 수정)
[sh 파일이란?]
sh 파일은 Bash 쉘 스크립트 파일로 Unix 셸에서 실행할 컴퓨터 프로그램이 포함된 스크립팅 언어 명령 파일이다.
즉, install-docker.sh 파일에는 도커를 설치하기 위한 스크립트가 쓰여 있다.
sh 파일은 Dockerfile 과 비슷한 개념이나,
- sh 파일: 리눅스나 유닉스 환경에서 실행되는 명령어들을 포함한 텍스트 파일
- Dockerfile: Docker 임지ㅣ를 만들기 위한 설정 파일
도커가 설치된 후, 설치가 제대로 됐는지 아래의 코드 (중 하나 또는 둘 다)를 입력해 본다.
# 도커 설치 됐는지 확인
docker version
systemctl status docker
그리고나서 루트 계정에 nginx 폴더를 만들고 해당 폴더로 이동한 뒤, index.html 파일과 dockerfile을 만들고 ubuntu(인스턴스 이름: aws-managed-server) 서버의 공인 IP를 인터넷에 복사 붙여넣기 하면 index.html가 반영되어 출력된다.
이를 명령어로 나열하면
# nginx 폴더 생성
mkdir nginx
# nginx로 경로 이동
cd niginx/
# (vi 에디터) index.html 생성
vi index.html
# (vi 에디터) dockerfile 생성
vi dockerfile
# 도커 빌드 (nginx 버전 1.0)
docker build -t nginx:v1.0 .
다음 내용
[Cloud] 쿠버네티스(Kubernetes) 란?
이전 내용 쿠버네티스(Kubernetes) 쿠버네티스(Kubernetes)는 여러 개의 도커(Docker) 컨테이너를 효과적으로 관리하기 위한 오픈 소스 플랫폼이다. [쿠버네티스의 주요 기능]컨테이너 배포 및 관리:
puppy-foot-it.tistory.com
'프로그래밍 및 기타 > Cloud : AWS' 카테고리의 다른 글
[Cloud] aws : aws cli 로 쿠버네티스 클러스터 만들기 (0) | 2025.03.01 |
---|---|
[Cloud] 쿠버네티스(Kubernetes) 란? (0) | 2025.03.01 |
[Cloud] 도커로 DB 연결하기 (0) | 2025.02.27 |
[Cloud] 컨테이너 이미지 경량화 시키기 (0) | 2025.02.27 |
[Cloud] 도커 허브에서 컨테이너 이미지 다운로드 & 업로드하기 (0) | 2025.02.27 |