Azure IoT 작업을 배포하려면 Azure Arc 지원 Kubernetes 클러스터가 필수입니다. 이 문서에서는 Azure IoT 작업을 배포하기 전에 클러스터를 준비하는 방법을 설명합니다. 이 문서에는 Ubuntu, Windows, Azure Local 및 TKG(Tanzu Kubernetes Grid)에 대한 지침이 포함되어 있습니다.
이 문서의 단계를 따라가면 보안 설정 배포를 위한 클러스터를 준비할 수 있습니다. 이는 시간이 더 오래 걸리지만 프로덕션에 바로 적용 가능한 프로세스입니다. Azure IoT 작업을 빠르게 배포하고 테스트 설정만으로 샘플 워크로드를 실행하려면 대신 빠른 시작: K3s를 사용하여 GitHub Codespaces에서 Azure IoT 작업 실행을 참조하세요. 테스트 설정 및 보안 설정에 대한 자세한 내용은 배포 세부 정보 >기능 선택을 참조하세요.
필수 구성 요소
Microsoft는 Windows 배포를 위한 AKS(Azure Kubernetes Service) Edge Essentials, Ubuntu에서의 배포를 위한 K3s, Azure Local의 AKS 배포 및 TKG의 Tanzu Kubernetes 릴리스(TKr)를 지원합니다. Azure IoT 작업을 다중 노드 솔루션에 배포하려면 Ubuntu에서 K3s를 사용합니다.
Azure Arc 지원 Kubernetes 클러스터를 준비하려면 다음이 필요합니다.
소유자 역할 또는 기여자 및 사용자 액세스 관리자 역할의 조합이 있는 Azure 구독입니다. 구독으로 이동하고, Azure Portal의 왼쪽에서 액세스 제어(IAM)를 선택한 다음, 내 액세스 보기를 선택하여 액세스 수준을 확인할 수 있습니다. Azure 구독이 아직 없는 경우 시작하기 전에 무료 구독을 만듭니다.
Azure 리소스 그룹. 리소스 그룹당 하나의 Azure IoT 작업 인스턴스만 지원됩니다. 새 리소스 그룹을 만들려면 az group create 명령을 사용합니다. 현재 지원되는 Azure 지역 목록은 지원되는 지역을 참조하세요.
az group create --location <REGION> --resource-group <RESOURCE_GROUP> --subscription <SUBSCRIPTION_ID>
클러스터 머신에 설치된 Azure CLI 버전 2.62.0 이상
az --version
을 사용하여 버전을 확인하고 필요한 경우az upgrade
를 사용하여 업데이트합니다. 자세한 내용은 Azure CLI 설치 방법을 참조하세요.Azure CLI용 connectedk8s 확장의 최신 버전입니다.
az extension add --upgrade --name connectedk8s
시스템 요구 사항을 충족하는 하드웨어:
내결함성이 사용하도록 설정된 다중 노드 클러스터에 Azure IoT 작업을 배포하려는 경우 Edge 볼륨을 위한 Linux 준비에서 하드웨어 및 스토리지 요구 사항을 검토합니다.
클러스터 만들기 및 Arc 사용
이 섹션에서는 Linux 및 Windows에서 유효성 검사된 환경에서 클러스터를 만드는 단계를 제공합니다.
Ubuntu에서 K3s Kubernetes 클러스터를 준비하려면 다음을 수행합니다.
단일 노드 또는 다중 노드 K3s 클러스터를 만듭니다. 예를 들어, K3s 빠른 시작 가이드 또는 K3s 관련 프로젝트를 참조하세요.
kubectl이 K3s의 일부로 설치되었는지 확인합니다. 그렇지 않은 경우 Linux에 kubectl 설치 지침을 따릅니다.
kubectl version --client
Helm 설치 지침을 따릅니다.
.kube/config
에서 K3s 구성 yaml 파일 생성:mkdir ~/.kube sudo KUBECONFIG=~/.kube/config:/etc/rancher/k3s/k3s.yaml kubectl config view --flatten > ~/.kube/merged mv ~/.kube/merged ~/.kube/config chmod 0600 ~/.kube/config export KUBECONFIG=~/.kube/config #switch to k3s context kubectl config use-context default sudo chmod 644 /etc/rancher/k3s/k3s.yaml
다음 명령을 실행하여 사용자 조사식/인스턴스 제한을 늘립니다.
echo fs.inotify.max_user_instances=8192 | sudo tee -a /etc/sysctl.conf echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf sudo sysctl -p
성능을 향상시키려면 파일 설명자 제한을 늘입니다.
echo fs.file-max = 100000 | sudo tee -a /etc/sysctl.conf sudo sysctl -p
Arc에서 클러스터를 사용하도록 설정
원격으로 관리할 수 있도록 클러스터를 Azure Arc에 연결합니다.
클러스터에 대한 액세스 권한이 있는
kubectl
컴퓨터에서 Azure 구독에 필요한 역할이 있는 Microsoft Entra 사용자 계정으로 Azure CLI에 로그인합니다.az login
언제든지 리소스에 액세스하려면 디바이스를 관리해야 함 오류가 발생하면
az login
을 다시 실행하고 브라우저를 사용하여 대화형으로 로그인합니다.로그인하면 Azure CLI에서 모든 구독이 표시되고 기본 구독은 별표
*
로 표시됩니다. 기본 구독을 계속하려면Enter
를 선택합니다. 그렇지 않은 경우 사용하려는 Azure 구독 번호를 입력합니다.필요한 리소스 공급자를 구독에 등록합니다.
참고
이 단계는 구독당 한 번만 실행하면 됩니다. 리소스 공급자를 등록하려면 구독 기여자 및 소유자 역할에 포함된
/register/action
작업을 수행할 수 있는 권한이 필요합니다. 자세한 내용은 Azure 리소스 공급자 및 형식을 참조하세요.az provider register -n "Microsoft.ExtendedLocation" az provider register -n "Microsoft.Kubernetes" az provider register -n "Microsoft.KubernetesConfiguration" az provider register -n "Microsoft.IoTOperations" az provider register -n "Microsoft.DeviceRegistry" az provider register -n "Microsoft.SecretSyncController"
az connectedk8s connect 명령을 사용하여 Kubernetes 클러스터를 Arc로 사용하도록 설정하고 Azure 리소스 그룹의 일부로 관리합니다.
az connectedk8s connect --name <CLUSTER_NAME> -l <REGION> --resource-group <RESOURCE_GROUP> --subscription <SUBSCRIPTION_ID> --enable-oidc-issuer --enable-workload-identity --disable-auto-upgrade
Azure IoT 작업에서 종속성으로 사용하는 Azure Arc 및 시스템 Arc 확장에 대한 계획되지 않은 업데이트를 방지하기 위해 이 명령은 자동 업그레이드를 사용하지 않도록 설정합니다. 대신, 필요에 따라 에이전트를 수동으로 업그레이드합니다.
중요합니다
환경에서 프록시 서버나 Azure Arc Gateway를 사용하는 경우 프록시 정보로
az connectedk8s connect
명령을 수정합니다.- 아웃바운드 프록시 서버를 사용하여 연결 또는 Azure Arc Gateway를 사용하여 Kubernetes 클러스터를 Azure Arc에 온보딩의 지침을 따릅니다.
-
169.254.169.254
명령의--proxy-skip-range
매개 변수에az connectedk8s connect
를 추가합니다. Azure Device Registry는 이 로컬 엔드포인트를 사용하여 권한 부여를 위한 액세스 토큰을 가져옵니다.
Azure IoT 작업은 신뢰할 수 있는 인증서가 필요한 프록시 서버를 지원하지 않습니다.
클러스터의 발급자 URL을 가져옵니다.
az connectedk8s show --resource-group <RESOURCE_GROUP> --name <CLUSTER_NAME> --query oidcIssuerProfile.issuerUrl --output tsv
다음 단계에서 사용할 수 있도록 이 명령의 출력을 저장합니다.
k3s 구성 파일을 만듭니다.
sudo nano /etc/rancher/k3s/config.yaml
config.yaml
파일에 다음 콘텐츠를 추가하고<SERVICE_ACCOUNT_ISSUER>
자리 표시자를 클러스터의 발급자 URL로 바꿉니다.kube-apiserver-arg: - service-account-issuer=<SERVICE_ACCOUNT_ISSUER> - service-account-max-token-expiration=24h
파일을 저장하고 나노 편집기를 종료합니다.
사용자 지정 위치 개체 ID를 가져와 환경 변수 OBJECT_ID로 저장하여 Arc 클러스터에서 Azure Arc 서비스(사용자 지정 위치)를 사용하도록 설정할 준비를 합니다. 명령을 성공적으로 실행하려면 서비스 주체가 아닌 Microsoft Entra 사용자 계정으로 Azure CLI에 로그인해야 합니다. GUID 값을 변경하지 않고 다음 명령을 정확히 작성된 대로 실행합니다.
export OBJECT_ID=$(az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv)
참고
"custom-locations 앱의 OID를 가져올 수 없습니다."라는 오류가 발생하는 경우 이 기능을 사용하지 않고 계속 진행합니다. 작업을 완료할 수 있는 권한이 부족합니다." 그러면 서비스 주체가 사용자 지정 위치의 개체 ID를 검색하는 데 필요한 권한이 부족할 수 있습니다. 필수 구성 요소를 충족하는 Microsoft Entra 사용자 계정으로 Azure CLI에 로그인합니다. 자세한 내용은 사용자 지정 위치 만들기 및 관리를 참조하세요.
az connectedk8s enable-features 명령을 사용하여 Arc 클러스터에서 사용자 지정 위치 기능을 사용하도록 설정합니다. 이 명령은 이전 단계에서 저장된 OBJECT_ID 환경 변수를 사용하여 custom-locations-oid 매개 변수의 값을 설정합니다. Kubernetes 클러스터를 배포한 컴퓨터에서 이 명령을 실행합니다.
az connectedk8s enable-features -n <CLUSTER_NAME> -g <RESOURCE_GROUP> --custom-locations-oid $OBJECT_ID --features cluster-connect custom-locations
K3s를 다시 시작합니다.
systemctl restart k3s
Azure 컨테이너 스토리지에 대한 다중 노드 클러스터 구성
노드가 3개 이상인 다중 노드 Ubuntu 클러스터에서는 Azure IoT Operations를 배포할 때 Azure Arc에서 사용하도록 설정된 Azure Container Storage 를 사용하여 스토리지에 내결함성을 사용하도록 설정하는 옵션이 있습니다.
배포 중에 내결함성을 사용하도록 설정하려면 다중 노드 Ubuntu 클러스터를 사용하여 Edge 볼륨을 위한 Linux 준비의 단계에 따라 클러스터를 구성합니다.
k3가 아닌 Kubernetes 배포판에서 클러스터를 실행하는 경우 지침을 검토하여 다른 플랫폼으로 Linux를 준비합니다.
고급 구성
이 시점에서 Azure Arc 지원 Kubernetes 클러스터가 있지만 Azure IoT 작업을 배포하기 전에 고급 시나리오에 맞게 클러스터를 구성하는 것이 좋습니다.
- 클러스터에서 가시성 기능을 사용하도록 설정하려면 가시성 리소스 배포 및 로그 설정의 단계를 따릅니다.
- 클러스터에서 자체 인증서 발급자를 구성하려면 인증서 관리 >자체 발급자 사용의 단계를 따릅니다.
다음 단계
이제 Azure Arc 사용 Kubernetes 클러스터가 준비되었으며, Azure IoT 작업을 배포할 수 있습니다.