개발/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에 마이그하는 경우 사용하는 솔루션


클라우드 활용 이점

  • 안정성 및 예측가능성 관점
  1. 신뢰도 : 분산된 설계를 통한 안정적이고 복원력 있는 인프라 지원
  2. 예측 : 성능 및 비용 예측 솔루션 제공 -> 최적의 성능과 비용의 서비스를 위해 컴퓨팅 시스템 자동 조정 기능 제공


  • 보안 및 거버넌스 관점
  1. 소프트웨어 패치 및 업데이트 자동 적용
  2. 요구 보안수준별 클라우드 솔루션 제공


  • 관리효율 관점
  1. 컴퓨팅 리소스 자동 스케일링
  2. 템플릿 기반 리소스 자동 배포
  3. 리소스 모니터링 및 자동 교체
  4. 메트릭 기반 알람 기능


클라우드 서비스 유형




  • Iaas (Infrastructure as a Service)
  1. 클라우드 공급자는 하드웨어, 네트워크 연결 및 물리적 보안을 유지관리할 책임이 있음


  • Paas (Platform as a Service)
  1. 클라우드 공급자는 하드웨어, 네트워크 연결 및 물리적 보안을 유지관리할 책임뿐만 아니라 클라우드 솔루션을 구성하는 운영 체제, 미들웨어, 개발 도구 및 비즈니스 인텔리전스 서비스를 유지 관리할 책임이 있음 -> 운영체제 및 데이터베이스에 대한 라이선스 또는 패치에 대해 걱정할 필요가 없음
  2. 도메인이 세팅된 컴퓨터를 사용하는 것과 같음 -> Paas에서 기본으로 제공하는 소프트웨어를 활용하여 애플리케이션 개발


  • Saas (Software as a Service)
  1. 완전히 개발된 애플리케이션을 임대하거나 사용 -> 유연성이 가장 안좋으나 쉽게 시작 가능


Azure Portal을 사용하여 서비스 관리

  • Azure 관리 옵션
  1. Azure Portal : GUI(그래픽 사용자 인터페이스)를 통해 Azure 조작
  2. Azure PowerShell 및 Azure 명령줄 인터페이스(CLI) : Azure의 명령줄 및 자동화 기반 상호 작용 (PowerShell은 window, CLI는 mac/linux)
  3. Azure Cloud Shell : 웹 기반 명령줄 인터페이스
  4. Azure 모바일 앱 : 모바일 디바이스에서 리소스를 모니터링하고 관리
  5. Azure SDK
  6. Azure REST API

반복적인 작업에는 Azure Portal보다 PowerShell, CLI가 유용할 수 있음


  • Azure CLI 사용방법 (macOS)
  1. 터미널에서 Azure CLI 설치
  2. az login 명령어를 통한 로그인 (Subscription이 있어야 로그인이 되는듯)
  3. vm 생성이 필요하다면 아래 명령어 실행 az vm create --resource-group MyResourceGroup --name TestVm --image Ubuntu2204 --generate-ssh-keys ...


  • Azure Advisor : 배포된 서비스를 분석하고 해당 영역에서 환경을 개선할 수 있는 방법을 제안


  • Azure Portal 대시보드
  1. 다른 구성원과 대시보드를 공유할 수 있음
  2. 대시보드는 JSON 형태로 저장 (다른 사용자와 공유 가능)
  3. 내 대시보드를 다른 사용자가 보게 하려면 "공유" 옵션에서 설정 가능 (리소스 그룹 혹은 대시보드 리소스 그룹 지정)
  4. 보는 것과 별개로 특정 역할에 대한 대시보드를 만들고 해당 대시보드에 접근할 수 있는 사용자를 제어할 수 있음(RBAC, 역할 기반 액세스 제어)


Azure Cloud Shell 소개

  • Azure Cloud Shell : Azure 리소스를 관리하기 위한 CLI환경의 브라우저


  • 장점

  1. 업무용 컴퓨터 외의 다른 컴퓨터에서도 Azure 리소스에 접근 가능
  2. Azure CLI 버전이 자동으로 최신 update
  3. Azure Cloud Shell이 제공하는 스토리지에 SSH키, 스크립트 등과 같은 파일을 저장할 수 있고, 어떤 컴퓨터나 세션에서 Cloud Shell을 통해 접근 가능


  • Cloud Shell에서 활용할 수 있는 도구




  • Cloud Shell을 사용하면 안되는 경우
  1. 장기 실행 스크립트 또는 활동에 대해 세션을 20분 넘게 열어야할 경우 -> 장시간 연결 끊어짐
  2. Sudo 액세스 등과 같은 관리자 권한이 필요할 경우
  3. Cloud Shell에서 지원하지 않는 도구를 활용해야할 경우
  4. 다른 지역의 Cloud Shell 스토리지에 접근해야할 경우
  5. 세션을 동시에 열어야하는 경우


JSON ARM 템플릿을 사용하여 Azure 인프라 배포

  • JSON ARM (Azure Resource Manager) 템플릿을 사용하면 프로젝트의 인프라를 재사용 가능한 방식으로 선언할 수 있음


  • lac (Infrastructure as Code) : 코드를 통해 애플리케이션에 필요한 인프라를 작성

  • lac의 이점

  1. 인프라의 일관된 구성
  2. 인프라의 향상된 확장성
  3. 인프라의 더 빠른 배포


  • ARM 템플릿 : 배포를 위한 인프라 및 구성을 정의하는 JSON (JavaScript Object Notation) 파일
  • ARM 템플릿의 이점
  1. 배포 자동화
  2. lac 코드 활용 가능
  3. 배포가 더 복잡해지면 ARM 템플릿을 더 작고 재사용 가능한 구성 요소로 분할하고 배포 시 함께 연결 가능
  4. ARM 템플릿을 Azure Pipelines와 같은 CI/CD(연속 통합 및 지속적인 배포) 도구에 통합 가능

  • resource manager : 리소스가 올바른 순서로 만들어지도록 리소스 배포를 오케스트레이션


  • ARM 템플릿 파일 구조

  • Azure에 ARM 템플릿 배포 방법
  1. 로컬 템플릿 배포 : 로컬의 템플릿 파일을 Azure CLI 등을 활용하여 배포하는 방식
  2. 연결된 템플릿 배포 : 주 템플릿 파일에 연결된 템플릿이 배포되는 방식
  3. 지속적인 배포 파이프라인에서 배포 : 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 템플릿 유연성 강화를 위한 매개변수 활용
    : 템플릿에 하드코딩이 아닌 매개변수를 활용하는 방법 적용 -> 템플릿의 유연성 강화


  1. ARM 템플릿의 parameters 섹션에서 리소스를 배포할 때 입력할 수 있는 값을 지정 (256개 제한)
  2. 매개변수 권장사항
    • 환경에 따라 달라지는 설정에는 매개 변수를 사용
    • 직접 지정하거나 내부 명명 규칙을 준수하려는 리소스 이름에도 매개 변수를 사용
    • 사용자 이름 및/또는 암호의 기본값을 하드 코딩하거나 제공하지 않음 -> 사용자 이름 및 암호(또는 비밀)에는 항상 매개 변수를 사용
    • 모든 암호 및 비밀에는 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]"
  }
}
반응형