베하! 안녕하세요~
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 할 것입니다.
주요 포인트는 다음과 같습니다.
- VM을 통해 AKS 내부의 Node에 접속해 WEB과 WAS의 Pod관리
- WEB, WAS는 Docker를 통해 이미지 생성 후 ACR에 업로드한 이미지 사용
- Pod Autoscaling
- 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에 업로드까지 해보겠습니다.
다음에 또 만나요 👋
'CSP (Cloud Service Provider) > Azure' 카테고리의 다른 글
[Azure] 가용성 영역 VS 가용성 집합 (0) | 2023.08.02 |
---|---|
[Azure] AKS (Azure Kubernetes Service) - (2) Web, Was 컨테이너 생성 및 연동 (0) | 2023.07.28 |
[Azure] Release Pipelines (0) | 2023.07.19 |
[Azure] Azure Build Pipelines (0) | 2023.07.06 |
[Azure] Azure Devops - Repos (0) | 2023.06.22 |
댓글