본문 바로가기
CSP (Cloud Service Provider)/Azure

[Azure] AKS (Azure Kubernetes Service) - (1) 3Tier 실습 환경구성

by BTC_SUU 2023. 7. 20.

베하! 안녕하세요~

BTC_수신자표시제한 입니다 😊

오늘은 AKS (Azure Kubernetes Service)를 사용해 간단한 실습을 진행해보겠습니다~!


AKS(Azure Kubernetes Service)컨테이너 기반 애플리케이션 배포 및 관리를 효율적으로 진행할 수 있도록 도와주는 서비스입니다. 

AKS를 사용해서 간단한 3-Tier를 구성해 보도록 하겠습니다~!

 

제가 구축할 아키텍처는 다음과 같습니다.

해당 아키텍처를 간단하게 설명드리겠습니다 :)

VM을 통해 Docker 이미지를 생성한 후 ACR에 Push 합니다. 그리고 AKS의 노드에 접속해 ACR에 올린 이미지를 Pull 해서 Web과 Was의 Pod를 구성합니다. Web1과 Web2는 Ingress를 통해 HTTP 경로기반 라우팅을 할 것이며 각각의 Web, Was Pod들은 HPA를 통해 Autoscaling 할 것입니다.

 

주요 포인트는 다음과 같습니다.

  1. VM을 통해 AKS 내부의 Node에 접속해 WEB과 WAS의 Pod관리
  2. WEB, WAS는 Docker를 통해 이미지 생성 후 ACR에 업로드한 이미지 사용
  3. Pod Autoscaling
  4. Ingress를 사용한 HTTP 경로 라우팅

그럼 오늘은 본격적인 실습에 앞서 환경 구성을 진행하도록 하겠습니다.

 

1. Azure 콘솔로 VM과 MySQL 구성

우선 VM먼저 생성하도록 하겠습니다.

 

[VM 설정]

  • 리소스 그룹 : btc-rg
  • VM 이름 : btc-vm
  • 이미지 : centos
  • 암호 사용
  • 인바운드 포트 : 80, 22
  • 디스크 : 표준 HDD
  • 네트워크 : btc-vnet / vm-subnet 10.0.1.0/24

[ MySQL 설정 ]

  • 유연한 서버
  • 리소스 그룹 : btc-rg
  • DB 이름 : btc-db

우선 이렇게 두 개만 먼저 설정해놓고 진행하겠습니다!

 

2. Azure CLI, Docker, MySQL 설치

[ 초기 설정 ]

저는 편하게 실습을 진행하기 위해 root 권한으로 설정하고 하겠습니다.

sudo -i
passwd root # 계정 비밀번호 변경

# 표준 시간대 변경
rm /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime
date

 

[ Azure CLI 설치 ]

Azure CLI는 Azure 클라우드 플랫폼과 상호 작용하기 위한 명령줄 도구입니다. "az"라는 명령어를 사용하여 Azure 리소스를 관리하고, Azure에 연결하고, 다양한 작업을 수행할 수 있습니다. Linux와 같은 운영 체제에서 Azure CLI를 사용하면 대화형 명령줄 프롬프트나 스크립트를 통해 Azure 리소스를 쉽게 관리할 수 있습니다.

 

1. Microsoft 리포지토리 키를 가져옵니다.

rpm --import https://packages.microsoft.com/keys/microsoft.asc

 

2. azure-cli 리포지토리를 추가합니다.저는 CentOS 7.x 버전을 사용했기 때문에 azure-cli 리포지토리를 추가해야 합니다. 만약 저와 버전이 다르다면 아래의 링크를 통해 각각에 맞는 리포지토리를 추가해주시면 됩니다!
https://learn.microsoft.com/ko-kr/cli/azure/install-azure-cli-linux?pivots=dnf

echo -e "[azure-cli]
name=Azure CLI
baseurl=https://packages.microsoft.com/yumrepos/azure-cli
enabled=1
gpgcheck=1
gpgkey=https://packages.microsoft.com/keys/microsoft.asc" | sudo tee /etc/yum.repos.d/azure-cli.repo

 

3. Azure CLI를 설치합니다.

yum install azure-cli -y

이렇게 까지 하면 이제 az login 이라는 명령어를 통해 Azure에 로그인을 할 수 있습니다!

빨간 네모 박스의 URL에 들어가 코드를 입력하고 계정을 선택하면 됩니다.  

 

[ Docker 설치 ]

1. docker repository 추가

yum install -y yum-utils
yum-config-manager  --add-repo https://download.docker.com/linux/centos/docker-ce.repo

 

2. docker engine 설치

yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

 

3. docker가 잘 설치되었나 확인해보겠습니다~!

# docker version 확인
docker version

# doker start
service docker start

 

[ MySQL 설치 ]

1. 우선 VM에 mysql을 설치합니다.

yum -y install http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

yum -y install mysql-community-client

 

2. 그 다음 콘솔로 설치한 MySQL 서버에 들어가 연결 > 브라우저에서 또는 로컬에서 연결을 눌러 해당 명령을 복사합니다.

mysql -h btc-db.mysql.database.azure.com -u btcuser -p

이렇게 되면 mysql 설치 및 연결까지가 완료된 것입니다!

 

3. kubectl 설치

kubectl 쿠버네티스(Kubernetes) 클러스터를 제어하기 위한 명령줄 도구입니다. 쿠버네티스는 컨테이너화된 애플리케이션을 배포, 스케일링 및 관리하기 위한 오픈소스 플랫폼입니다. kubectl 을 사용하면, 쿠버네티스 클러스터에서 다양한 작업을 수행할 수 있습니다. 예를 들어, 애플리케이션의 배포, 클러스터 리소스의 검사, 로그의 확인 등이 있습니다.

1. 우선 AKS를 만들고 진행하겠습니다.

# 변수생성
export RESOURCE_GROUP=btc-rg
export CLUSTER_NAME=btcaks
export LOCATION=koreacentral
az aks create \
    --resource-group $RESOURCE_GROUP \
    --name $CLUSTER_NAME \
    --node-count 2 \
    --enable-addons http_application_routing \
    --generate-ssh-keys \
    --node-vm-size Standard_B2s \
    --network-plugin azure

 

2. 쿠버네티스의 Yum 리포지토리를 시스템에 추가합니다. 이 리포지토리는 쿠버네티스 패키지를 제공합니다.

cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
enabled=1
gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF

 

3. kubectl 패키지를 설치합니다.kubectl 의 자동 완성 기능을 활성화합니다. 이 기능은 bash 쉘에서 사용할 수 있습니다.

yum install -y kubectl

source <(kubectl completion bash)

echo "source <(kubectl completion bash)" >> ~/.bashrc

 

4. kubectl 의 자동 완성 기능을 활성화하고, 이 설정을 사용자의 .bashrc 파일에 추가하여, 새로운 터미널 창에서도 자동 완성 기능이 활성화되도록 합니다.

source <(kubectl completion bash) ; echo "source <(kubectl completion bash)" >> ~/.bashrc

 

5. 그 다음 생성한 AKS 클러스터의 자격 증명을 가져와서, kubectl이 해당 클러스터에 연결할 수 있도록 설정합니다.

az aks get-credentials --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP

 

이제  kubectl get node 명령어를 통해 올바르게 연결되었는지 확인해보겠습니다!

만약 kubectl 이 올바르게 연결되었다면, 노드들의 정보가 출력될 것입니다.

따란~


여기까지 실습을 위한 환경구성이였습니다~!

도움이 되셨으면 좋겠습니다.😊

 

다음번엔 Docker를 통해 이미지 생성 후 ACR에 업로드까지 해보겠습니다.
다음에 또 만나요 👋

댓글