2024.07.03 Azure SA 업무환경 설정 및 Terraform 기초 가이드 최신 버전
작년 자료기준으로 현재 버전에 실행이 불가하거나 오류가 발생하는 부분들이 있어 해당 부분들을 수정 및 최신화 하여 업데이트 하였습니다
Azure VM 생성 - Windows 11
*Test 및 연습을 위해서 Azure에서 진행하며 연습이 끝난 후에 개인 PC에 세팅한다
Create를 누르고 Azure Virtual Machine을 눌러 VM 생성으로 진입
(Vnet과 Subnet은 설정하지 않는다면 VM 생성시 임의 자동 생성)
개인 구독 설정 후 Resource group을 설정 해준다 → Resource Group을 통해 쉽고 간편하게 VM들을 컨트롤 할 수 있다. 추가설명
설치 및 세팅
사전 작업
Windows Features에서 Hyper-V와 Virtual Machine Platform을 선택하여 설치한다.
WSL 설치
Terminal 또는 Windows PowerShell을 관리자 권한으로 실행 하고 아래 명령어를 입력한다
# 온라인 스토어를 통해 다운로드할 수 있는 사용 가능한 Linux 배포판 목록을 확인
wsl -l -o
# 지정 배포판 설치 : wsl --install -d <Distribution Name>
# Ubuntu-24.04 설치해도 무방하다
wsl --install --distribution Ubuntu-22.04
#설치된 Ubuntu 버전 확인
wsl -l -v
설치가 완료되고 난 이후 시스템을 재부팅 한다.
재부팅 후 자동으로 터미널이 팝업되며 Username과 Password 입력하면 설치 및 설정이 완료 된다
Docker Desktop for Windows 설치
Docker Desktop for Windows를 다운로드 및 기본으로 설치 후 Close and restart을 클릭하여 재부팅 실행
재부팅이 완료되고 Docker Desktop이 실행되면 설정으로 들어가 Resoures → WSL Integration에서 Ubuntu-22.04를 활성화 후 Apply & restart를 진행한다
Terminal을 실행하고 상태 점검 및 버전을 확인 해본다
# Docker 상태 점검 (on Windows)
docker ps
# wsl 환경으로 전환
wsl
# Docker 상태 점검 및 버전 확인 (on Linux)
docker ps
docker version
Git Bash 설치
Git Bash로 이동하여 최신 버전을 기본값으로 설치한다. 2024-06-10일 현재 최신 버전은 2.45.2이다.
(별다른 옵션 수정 없이, 쭉 설치를 진행한다.)
Linux(WSL)과의 연동을 위해 최신버전으로 업데이트를 진행 해준다 → *이미 설치가 되어 있지만 구 버전으로 업데이트를 진행하여 버전을 맞춰 주어야 한다
신버전 업데이트 방법대로 따라가면 된다
#최신버전 설치를 위해서 레포지토리를 추가해주어야 한다
sudo add-apt-repository ppa:git-core/ppa
#업데이트 및 설치를 진행한다
sudo apt-get update && sudo apt-get -y install git
Git 구성 파일 설정
bash (Ubuntu-20.04)터미널에서 다음 명령을 수행하여 사용자 이름 및 이메일 정보를 설정한다.
Terraform 설치
Terraform 최신버전을 다운로드 받는다
다운로드 후 C:\ 드라이브 밑에 Terraform이라는 디렉토리를 생성하고 다운로드한 Terraform 압축파일을 해당 디렉토리 내에 압축해제하여 위치시킨다
윈도우즈키와 R키를 누르고 “sysdm.cpl ,3”를 입력하여 실행한다.
환경변수 → Path → C:\Terraform 생성 후 확인을 선택한다
새로운 Windows Terminal 창을 띄우고 Terraform 버전을 확인한다
For Linux(WSL)
Linux 환경에서 설치를 진행하고 결과를 검증한다
AZ CLI설치
64bit CLI를 다운받고 기본으로 설치를 진행 한다
For Linux(WSL)
리눅스 환경에서도 설치를 진행 후 버전을 확인 한다
Azure Az PowerShell 모듈 설치
공식 가이드 문서를 참고하여 설치를 진행 한다
이 모듈을 설치하면 일반적으로 사용 가능한 Az PowerShell 모듈이 다운로드되고, cmdlet을 사용할 수 있게 된다.
(해당 실습은 PowerShell 갤러리를 기준으로 진행 한다)
해당 방법으로 진행하면 연동이 안됨 *Config값 오류로 인한 문제로 추정 됨
참고 Solution 여기
정상 작동이 된다면 Azure Portal 로그인 화면이 나오게 되고 로그인 해서 연동하면 된다
로그인 이후 구독을 설정하라는 란에 선택하여 입력하면 된다
Kuberctl 설치
Kuberctl 최신버전을 다운로드 받고 C:\에 “kuberctl” 디렉토리를 생성 후 설치 파일을 위치시킨 다음 설치를 진행한다.
이후 Terraform과 동일한 방식으로 환경변수 Path에 등록한다.
For Linx(WSL)
Terminal에서 설치를 진행하고 결과를 검증한다
VS Code 설치
최신버전 다운로드에서 System Installer 64bit로 설치한다
설정 과정에서 추가 작업 선택 화면에서 해당 옵션들을 체크하고 진행한다.
Visual Studio 설치 (옵션)
Visual Studio 최신버전 설치 하기기
Azure Container 및 쿠버 실습 해보기
Azure PowerShell을 이용하여 리소스 그룹 만드는 방법
새로운 솔루션을 시작할 때 수행할 첫 번째 작업
Azure cmdlet을 가져온다
Azure 구독에 연결한다
리소스 그룹을 만든다
생성이 완료되었는지 확인한다
단계의 개요
연결하기
Terminal 창을 새로 띄우고 Connect-AzAccount를 실행하여 연동을 먼저 한다
만들기
어떤 구독을 가지고 있는지 목록 확인을 위해서 list를 가져온다
구독 정보를 확인 후 대상 구독을 선택한다
모든 리소스 그룹 목록 가져오기
활성 구독에서 모든 리소스 그룹 목록을 검색하여 확인한다
리소스 그룹 만들기
이름 및 위치를 지정하여 리소스 그룹을 만들 수 있다
리소스 확인
리소스그룹이 정상적으로 생성 되었는지 확인한다
리소스 삭제
리소스 그룹을 삭제하는 명령어 이다
Azure CLI 사용
CLI를 사용하면 모든 Azure 리소스의 모든 측면을 제어 할 수 있으며, Resource Group, Storage, VM, Microsoft Entra ID, Container, Machine Learning 등 사용할 수 있다
Storage Blob
클라우드를 위한 개체 스토리지 솔루션이다. 대량의 비정형 데이터를 저장하는데 최적화 되어 있다.
예를 들면 스토리지 Blob을 관리하는 데 도움이 되는 명령을 찾으려면 find 명령을 사용한다.
Azure CLI를 사용하여 리소스 그룹을 만드는 방법
새로운 Azure 리소스를 만드는 3단계는 일반적으로 Azure 구독에 연결, 리소스 생성, 리소스 결과 확인이다.
연결하기
Azure CLI login 명령을 사용하여 Azure 명령을 실행하기 전 인증을 해야 한다
gio로 시작되는 url을 Ctrl키를 누른 상태로 클릭하여 접속하면 Login창이 나오고 로그인을 하면 된다
특정 구독 선택하기
az account show 명령을 사용하여 현재 선택된 구독을 확인한다
이후 변경하고 싶은 구독으로 선택하여 변경한다
모든 리소스 그룹 목록 가져오기
활성 구독에서 모든 리소스 그룹 목록을 검색할 수 있습니다
리소스 그룹 만들기
az group create 명령을 사용해서 리소스 그룹을 만들 수 있다. 이때 이름 및 위치를 지정해야 하며 구독 내에 고유해야 한다
Container 실습
실습을 위해 개발자의 환경 조성
Install OpenJDK
설치가 된 이후에 환경변수 세팅을 한다
최종적으로 설치가 마무리 되었다면 Maven과 Java 버전을 모두 확인하여 정상 설치가 되었는지 확인한다
설치가 마무리 되었다면 실습에 필요한 코드를 복제한다
이후 별도의 Bash 창에서 mvn clean package 명령으로 컴파일을 수행한다.
생성 확인이 완료되면 해당 디렉토리로 이동하여 gs-spring-boot-docker-0.1.0.jar 파일 생성을 확인한다.
이후 java -jar 명령을 통해서 Local에서 샘플 소스의 유효성을 검증한다
별도의 Windows 터미널 탭을 띄어서 다음 명령을 실행다
결과 확인 후 Ctrl+C를 눌러 실행된 자바 프로세스 종료 후 gs-spring-boot-aks 디렉토리로 이동한다
컨테이너 노출 포트 변경 : 8080 → 80
VS Code 및 VI를 이용하여 src - main - resources 이하에 application.yml 파일을 열어 port를 80으로 변경하고 저장한다.
변경 이후 Ctrl+s로 저장한다
저장 이후 App 빌드를 다시 수행해본다
Docker Build
gs-spring-boot-aks 디렉토리로 이동하여 샘플 소스 내 준비된 Dockerfile을 열고 EXPOSE 포트 정보를 80으로 변경하고 저장한다.
이후 Docker Desktop을 실행 하고 새로운 Terminal를 열어 결과를 검증한다
이후 별도의 Windows 터미널 탭을 띄어서 확인해본다
이미지 ACR로 푸시하기
로컬 환경에서 컨테이너에 대한 검증을 완료하였음으로 이를 Azure Container Registry에 올리는 실습
포털에서도 정상적으로 생성 된 것을 확인해볼 수 있다
Docker Tag
docker tag, push 명령을 수행하여 생성한 ACR에 images를 Push한다
혹시 인증/인가 에러가 발생하면. az acr login 명령을 수행하여 인증을 득하고 다시 명령을 수행한다.
사전 작업
ACR로 이동하여 Settings > Access keys로 이동하여 Admin user 체크 박스를 선택하여 Admin user 사용을 활성화 한다.
서비스 배포하기
Container Instances
Container instances를 검색하여 생성 시작
image source에서 Azure Container Registry로 설정하고 이전에 태그 및 푸시했던 이미지의 정보(Registry, Image 및 tag)를 선택한다.
Networking 탭에서 DNS name label에 필요한 값을 입력 후 Review + create를 선택한다.
생성이 완료된 후 Overview로 이동하여 FQDN 정보를 복사한다
컨테이너라이징한 앱을 아주 간단한 조작으로 배포하여 사용할 수 있음을 확인할 수 있다.
소유한 도메인으로 커스텀, 보다 유연한 배포 기능 등을 활용하고자 할 경우에는 적합하지 않다.
Web App for Containers
App Services 검색하여 Web App으로 Create한다
해당 옵션으로 설정을 해준다
Quickstart로 설정이 되어 있으면 Azure Container Registry로 변경 후 옵션 값을 설정 해준다
생성 완료 이후에 Overview로 이동하여 Default domain 정보를 복사하여 웹 브라우저에 결과를 검증한다
Custom Domain 적용 예시
Web App의 경우 Domain 변경이 가능하다.
*본인이 도메인을 가지고 있다면 실습이 가능하다
DNS 도메인에서 설정이 마무리되면 Validate를 선택하여 유효성을 검증한다
초록색 체크표시가 뜨면 Add를 눌려 추가해준다
Add 하여 IP기반 TLS/SSL를 구성한다
Container Apps
container apps를 검색하여 생성한다
구독, 리소스 그룹, 이름, 지역을 설정 해준다
Container로 이동하여 Use Quickstart image 옵션을 해제하고 Azure Container Registry를 선택하고 옵션값들을 맞춰 줍니다
Ingress탭으로 이동하여 Ingress를 활성화 시켜주고 아래 옵션 값으로 변경 해준다
이후 Create로 생성한다
생성이 완료된 후 URL을 통해서 접속이 가능한지 확인 해본다
Azure Kubernetes Service
Kubernetes Service를 검색하여 생성을 시작한다
Kubernetes Cluster를 선택하여 생성한다
Subscription과 Resource Group을 설정 해주고 Cluster name 설정을 한다
Integration으로 이동하여 Container registry에 Containdemo2024를 선택해준다
설정이 완료되면 Create로 생성하면 되는데 Product Standard로 진행하면 Node Pools에서 문제로 진행이 불가하다. 따라서 Cluster Details를 Dev/Test로 변경하여 진행한다
리소스 생성이 끝난 후 Kubernetes resources에서 Configuration에 Create → Apply a YAML를 선택한다
본인이 지정한 Container 이름과 이미지 정보, 포트번호 80 수정 해준 뒤 Add를 진행한다
이후 Services and ingresses에 접속하여 zero-aks-app에 External IP를 이용하여 정상 작동 하는지 확인 해본다