개발/Azure
[Azure] Azure 관리자 필수 조건
웅이의 개발이야기
2025. 3. 30. 23:23
728x90
반응형
본 글은 아래 링크의 학습자료를 학습한 후에 정리한 글입니다.
https://learn.microsoft.com/ko-kr/training/paths/az-104-administrator-prerequisites/
Azure Basic (AZ-900 내용)
- Azure Arc : 클라우드 환경 관리를 지원하는 기술
- Azure VMware : 프라이빗 환경에서 VMware를 사용하다가 Azure에 마이그하는 경우 사용하는 솔루션
클라우드 활용 이점
- 안정성 및 예측가능성 관점
- 신뢰도 : 분산된 설계를 통한 안정적이고 복원력 있는 인프라 지원
- 예측 : 성능 및 비용 예측 솔루션 제공 -> 최적의 성능과 비용의 서비스를 위해 컴퓨팅 시스템 자동 조정 기능 제공
- 보안 및 거버넌스 관점
- 소프트웨어 패치 및 업데이트 자동 적용
- 요구 보안수준별 클라우드 솔루션 제공
- 관리효율 관점
- 컴퓨팅 리소스 자동 스케일링
- 템플릿 기반 리소스 자동 배포
- 리소스 모니터링 및 자동 교체
- 메트릭 기반 알람 기능
클라우드 서비스 유형
- Iaas (Infrastructure as a Service)
- 클라우드 공급자는 하드웨어, 네트워크 연결 및 물리적 보안을 유지관리할 책임이 있음
- Paas (Platform as a Service)
- 클라우드 공급자는 하드웨어, 네트워크 연결 및 물리적 보안을 유지관리할 책임뿐만 아니라 클라우드 솔루션을 구성하는 운영 체제, 미들웨어, 개발 도구 및 비즈니스 인텔리전스 서비스를 유지 관리할 책임이 있음 -> 운영체제 및 데이터베이스에 대한 라이선스 또는 패치에 대해 걱정할 필요가 없음
- 도메인이 세팅된 컴퓨터를 사용하는 것과 같음 -> Paas에서 기본으로 제공하는 소프트웨어를 활용하여 애플리케이션 개발
- Saas (Software as a Service)
- 완전히 개발된 애플리케이션을 임대하거나 사용 -> 유연성이 가장 안좋으나 쉽게 시작 가능
Azure Portal을 사용하여 서비스 관리
- Azure 관리 옵션
- Azure Portal : GUI(그래픽 사용자 인터페이스)를 통해 Azure 조작
- Azure PowerShell 및 Azure 명령줄 인터페이스(CLI) : Azure의 명령줄 및 자동화 기반 상호 작용 (PowerShell은 window, CLI는 mac/linux)
- Azure Cloud Shell : 웹 기반 명령줄 인터페이스
- Azure 모바일 앱 : 모바일 디바이스에서 리소스를 모니터링하고 관리
- Azure SDK
- Azure REST API
반복적인 작업에는 Azure Portal보다 PowerShell, CLI가 유용할 수 있음
- Azure CLI 사용방법 (macOS)
- 터미널에서 Azure CLI 설치
az login
명령어를 통한 로그인 (Subscription이 있어야 로그인이 되는듯)- vm 생성이 필요하다면 아래 명령어 실행
az vm create --resource-group MyResourceGroup --name TestVm --image Ubuntu2204 --generate-ssh-keys ...
- Azure Advisor : 배포된 서비스를 분석하고 해당 영역에서 환경을 개선할 수 있는 방법을 제안
- Azure Portal 대시보드
- 다른 구성원과 대시보드를 공유할 수 있음
- 대시보드는 JSON 형태로 저장 (다른 사용자와 공유 가능)
- 내 대시보드를 다른 사용자가 보게 하려면 "공유" 옵션에서 설정 가능 (리소스 그룹 혹은 대시보드 리소스 그룹 지정)
- 보는 것과 별개로 특정 역할에 대한 대시보드를 만들고 해당 대시보드에 접근할 수 있는 사용자를 제어할 수 있음(RBAC, 역할 기반 액세스 제어)
Azure Cloud Shell 소개
Azure Cloud Shell : Azure 리소스를 관리하기 위한 CLI환경의 브라우저
장점
- 업무용 컴퓨터 외의 다른 컴퓨터에서도 Azure 리소스에 접근 가능
- Azure CLI 버전이 자동으로 최신 update
- Azure Cloud Shell이 제공하는 스토리지에 SSH키, 스크립트 등과 같은 파일을 저장할 수 있고, 어떤 컴퓨터나 세션에서 Cloud Shell을 통해 접근 가능
- Cloud Shell에서 활용할 수 있는 도구
- Cloud Shell을 사용하면 안되는 경우
- 장기 실행 스크립트 또는 활동에 대해 세션을 20분 넘게 열어야할 경우 -> 장시간 연결 끊어짐
- Sudo 액세스 등과 같은 관리자 권한이 필요할 경우
- Cloud Shell에서 지원하지 않는 도구를 활용해야할 경우
- 다른 지역의 Cloud Shell 스토리지에 접근해야할 경우
- 세션을 동시에 열어야하는 경우
JSON ARM 템플릿을 사용하여 Azure 인프라 배포
JSON ARM (Azure Resource Manager) 템플릿을 사용하면 프로젝트의 인프라를 재사용 가능한 방식으로 선언할 수 있음
lac (Infrastructure as Code) : 코드를 통해 애플리케이션에 필요한 인프라를 작성
lac의 이점
- 인프라의 일관된 구성
- 인프라의 향상된 확장성
- 인프라의 더 빠른 배포
- ARM 템플릿 : 배포를 위한 인프라 및 구성을 정의하는 JSON (JavaScript Object Notation) 파일
- ARM 템플릿의 이점
- 배포 자동화
- lac 코드 활용 가능
- 배포가 더 복잡해지면 ARM 템플릿을 더 작고 재사용 가능한 구성 요소로 분할하고 배포 시 함께 연결 가능
- ARM 템플릿을 Azure Pipelines와 같은 CI/CD(연속 통합 및 지속적인 배포) 도구에 통합 가능
resource manager : 리소스가 올바른 순서로 만들어지도록 리소스 배포를 오케스트레이션
ARM 템플릿 파일 구조
- Azure에 ARM 템플릿 배포 방법
- 로컬 템플릿 배포 : 로컬의 템플릿 파일을 Azure CLI 등을 활용하여 배포하는 방식
- 연결된 템플릿 배포 : 주 템플릿 파일에 연결된 템플릿이 배포되는 방식
- 지속적인 배포 파이프라인에서 배포 : CI/CD 파이프라인을 통한 배포 방식
ARM 템플릿에 리소스 추가 (리소스 공급자 및 해당 리소스 종류 확인 필요)
ARM 템플릿 예제
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.1",
"apiProfile": "",
"parameters": {},
"variables": {},
"functions": [],
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2023-05-01",
"name": "learntemplatestorage123",
"location": "westus",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2",
"properties": {
"supportsHttpsTrafficOnly": true
}
}
],
"outputs": {}
}
- ARM 템플릿 유연성 강화를 위한 매개변수 활용
: 템플릿에 하드코딩이 아닌 매개변수를 활용하는 방법 적용 -> 템플릿의 유연성 강화
- ARM 템플릿의 parameters 섹션에서 리소스를 배포할 때 입력할 수 있는 값을 지정 (256개 제한)
- 매개변수 권장사항
- 환경에 따라 달라지는 설정에는 매개 변수를 사용
- 직접 지정하거나 내부 명명 규칙을 준수하려는 리소스 이름에도 매개 변수를 사용
- 사용자 이름 및/또는 암호의 기본값을 하드 코딩하거나 제공하지 않음 -> 사용자 이름 및 암호(또는 비밀)에는 항상 매개 변수를 사용
- 모든 암호 및 비밀에는 secureString을 사용
- 중요한 데이터를 전달하는 경우 secureObject 유형을 사용
- secureString 또는 secureObject 형식을 사용하는 템플릿 매개 변수는 리소스를 배포한 후 읽거나 수집할 수 없음
- 예시
"parameters": {
"storageAccountType": {
"type": "string",
"defaultValue": "Standard_LRS",
"allowedValues": [
"Standard_LRS",
"Standard_GRS",
"Standard_ZRS",
"Premium_LRS"
],
"metadata": {
"description": "Storage Account type"
}
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2023-05-01",
"name": "learntemplatestorage123",
"location": "[resourceGroup().location]",
"sku": {
"name": "[parameters('storageAccountType')]"
},
"kind": "StorageV2",
"properties": {
"supportsHttpsTrafficOnly": true
}
}
]
- 매개변수 활용 예시 (allowedValues에 해당하는 값이 입력되지 않으면 배포되지 않음)
templateFile="azuredeploy.json"
az deployment group create --name testdeployment1 --template-file $templateFile --parameters storageAccountType=Standard_LRS
- ARM 템플릿의 outputs 섹션에서 배포에 성공한 후 반환될 값을 지정
"outputs": {
"<output-name>": {
"condition": "<boolean-value-whether-to-output-value>",
"type": "<type-of-output-value>",
"value": "<output-value-expression>",
"copy": {
"count": <number-of-iterations>,
"input": <values-for-the-variable>
}
}
}
- 출력 예시
"outputs": {
"storageEndpoint": {
"type": "object",
"value": "[reference('learntemplatestorage123').primaryEndpoints]"
}
}
반응형