Share via


Azure Arc 지원 Kubernetes 클러스터 확장 배포 및 관리

Arc 지원 Kubernetes 클러스터에서 확장 인스턴스를 만들고 업데이트 및 구성과 관련된 옵션을 포함하여 필수 및 선택적 매개 변수를 설정할 수 있습니다. 확장 인스턴스를 보고, 나열하고, 업데이트하고, 삭제할 수도 있습니다.

시작하기 전에 Arc 지원 Kubernetes 클러스터 확장의 개념 개요를 읽고 현재 사용 가능한 확장 목록을 검토합니다.

필수 조건

  • 최신 버전의 Azure CLI입니다.

  • connectedk8sk8s-extension Azure CLI 확장의 최신 버전입니다. 다음 명령을 실행하여 이러한 확장을 설치합니다.

    az extension add --name connectedk8s
    az extension add --name k8s-extension
    

    connectedk8sk8s-extension 확장이 이미 설치되어 있는 경우 다음 명령을 사용하여 최신 버전으로 업데이트할 수 있습니다.

    az extension update --name connectedk8s
    az extension update --name k8s-extension
    
  • 운영 체제 및 아키텍처 유형 linux/amd64의 노드가 하나 이상 있는 기존 Azure Arc 지원 Kubernetes 연결된 클러스터입니다. Flux(GitOps)를 배포하는 경우 linux/amd64 노드 없이 ARM64 기반 클러스터를 사용할 수 있습니다.

확장 인스턴스 만들기

필수 매개 변수에 대한 값을 전달하면서 k8s-extension create를 사용하여 새 확장 인스턴스를 만듭니다.

이 예제에서는 Azure Arc 지원 Kubernetes 클러스터에 Azure Monitor Container Insights 확장 인스턴스를 만듭니다.

az k8s-extension create --name azuremonitor-containers  --extension-type Microsoft.AzureMonitor.Containers --scope cluster --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters

출력:

{
  "autoUpgradeMinorVersion": true,
  "configurationProtectedSettings": null,
  "configurationSettings": {
    "logAnalyticsWorkspaceResourceID": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/defaultresourcegroup-eus/providers/microsoft.operationalinsights/workspaces/defaultworkspace-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-eus"
  },
  "creationTime": "2021-04-02T12:13:06.7534628+00:00",
  "errorInfo": {
    "code": null,
    "message": null
  },
  "extensionType": "microsoft.azuremonitor.containers",
  "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/demo/providers/Microsoft.Kubernetes/connectedClusters/demo/providers/Microsoft.KubernetesConfiguration/extensions/azuremonitor-containers",
  "identity": null,
  "installState": "Pending",
  "lastModifiedTime": "2021-04-02T12:13:06.753463+00:00",
  "lastStatusTime": null,
  "name": "azuremonitor-containers",
  "releaseTrain": "Stable",
  "resourceGroup": "demo",
  "scope": {
    "cluster": {
      "releaseNamespace": "azuremonitor-containers"
    },
    "namespace": null
  },
  "statuses": [],
  "systemData": null,
  "type": "Microsoft.KubernetesConfiguration/extensions",
  "version": "2.8.2"
}

참고 항목

서비스는 48시간 넘게 중요한 정보를 유지할 수 없습니다. Azure Arc 지원 Kubernetes 에이전트가 48시간 넘게 네트워크에 연결되어 있지 않고 클러스터에 확장을 만들지 여부를 결정할 수 없는 경우에는 확장이 Failed 상태로 전환됩니다. 그렇게 되면 k8s-extension create를 다시 실행하여 새 확장 Azure 리소스를 만들어야 합니다.

Azure Monitor 컨테이너 인사이트는 단일 확장입니다(클러스터당 하나만 필요함). 확장을 사용하지 않고 Azure Monitor 컨테이너 인사이트의 이전 Helm 차트 설치를 모두 정리한 후에 확장을 통해 동일한 차트를 설치해야 합니다. az k8s-extension create 실행 전에 Helm 차트를 삭제하는 방법에 대한 지침을 따르세요.

필수 매개 변수

az k8s-extension create를 사용하여 확장 인스턴스를 만들 때 다음 매개 변수가 필요합니다.

매개 변수 이름 설명
--name 확장의 이름입니다.
--extension-type 클러스터에 설치하려는 확장의 유형입니다. 예: Microsoft.AzureMonitor.Containers, microsoft.azuredefender.kubernetes
--scope 확장에 대한 설치 범위: cluster 또는 namespace
--cluster-name 확장 인스턴스를 만들어야 하는 Azure Arc 지원 Kubernetes 리소스의 이름입니다.
--resource-group Azure Arc 지원 Kubernetes 리소스를 포함하는 리소스 그룹입니다.
--cluster-type 확장 인스턴스를 만들어야 하는 클러스터 유형입니다. 대부분의 시나리오에서는 Azure Arc 지원 Kubernetes 클러스터에 해당하는 connectedClusters를 사용합니다.

선택적 매개 변수

필요한 매개 변수와 함께 시나리오에 필요에 따라 이러한 선택적 매개 변수 중 하나 이상을 사용합니다.

참고 항목

auto-upgrade-minor-versiontrue로 설정하여 확장 인스턴스를 최신 부 버전 및 패치 버전으로 자동 업그레이드하도록 선택하거나 --version 매개 변수를 사용하여 확장 인스턴스의 버전을 수동으로 설정할 수 있습니다. 항상 최신 보안 패치 및 기능을 사용할 수 있도록 부 버전 및 패치 버전에 대해 자동 업그레이드를 사용하도록 설정하는 것이 좋습니다.

주 버전 업그레이드에는 호환성이 손상되는 변경 내용이 포함될 수 있으므로 확장 인스턴스의 새 주 버전에 대한 자동 업그레이드는 지원되지 않습니다. 새 주 버전으로 확장 인스턴스 수동으로 업그레이드할 시기를 선택할 수 있습니다.

매개 변수 이름 설명
--auto-upgrade-minor-version 확장 부 버전이 자동으로 업그레이드되는지 여부를 결정하는 부울 속성입니다. 기본 설정은 true입니다. 이 매개 변수를 true로 설정하면 버전이 동적으로 업데이트되므로 version 매개 변수를 설정할 수 없습니다. false로 설정된 경우 확장은 패치 버전에 대해서도 자동으로 업그레이드되지 않습니다.
--version 설치할 확장의 버전(확장 인스턴스를 고정할 특정 버전)입니다. auto-upgrade-minor-versiontrue로 설정된 경우 제공하지 않아야 합니다.
--configuration-settings 기능을 제어하기 위해 확장에 전달할 수 있는 설정입니다. 매개 변수 이름 뒤에 공백으로 구분된 key=value 쌍으로 전달됩니다. 이 매개 변수를 명령에 사용하는 경우에는 동일한 명령에서 --configuration-settings-file를 사용할 수 없습니다.
--configuration-settings-file 구성 설정을 확장에 전달하는 데 사용되는 key=value 쌍이 포함된 JSON 파일의 경로입니다. 이 매개 변수를 명령에 사용하는 경우에는 동일한 명령에서 --configuration-settings를 사용할 수 없습니다.
--configuration-protected-settings GET API 호출 또는 az k8s-extension show 명령을 사용하여 검색할 수 없는 설정입니다. 일반적으로 중요한 설정을 전달하는 데 사용됩니다. 매개 변수 이름 뒤에 공백으로 구분된 key=value 쌍으로 전달됩니다. 이 매개 변수를 명령에 사용하는 경우에는 동일한 명령에서 --configuration-protected-settings-file를 사용할 수 없습니다.
--configuration-protected-settings-file 중요한 설정을 확장에 전달하는 데 사용되는 key=value 쌍이 포함된 JSON 파일의 경로입니다. 이 매개 변수를 명령에 사용하는 경우에는 동일한 명령에서 --configuration-protected-settings를 사용할 수 없습니다.
--release-namespace 이 매개 변수는 릴리스가 생성되는 네임스페이스를 나타냅니다. scopecluster로 설정된 경우에만 관련이 있습니다.
--release-train 확장 작성자는 Stable, Preview 등의 다양한 릴리스 학습으로 버전을 게시할 수 있습니다. 이 매개 변수를 명시적으로 설정하지 않으면 Stable이 기본값으로 사용됩니다.
--target-namespace 릴리스가 생성되는 네임스페이스를 나타냅니다. 이 확장 인스턴스에 대해 만든 시스템 계정의 사용 권한은 이 네임스페이스로 제한됩니다. scopenamespace로 설정된 경우에만 관련이 있습니다.

확장 세부 정보

필수 매개 변수에 대한 값을 전달하면서 k8s-extension show를 사용하여 현재 설치된 확장 인스턴스를 확인합니다.

az k8s-extension show --name azuremonitor-containers --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters

출력:

{
  "autoUpgradeMinorVersion": true,
  "configurationProtectedSettings": null,
  "configurationSettings": {
    "logAnalyticsWorkspaceResourceID": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/defaultresourcegroup-eus/providers/microsoft.operationalinsights/workspaces/defaultworkspace-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-eus"
  },
  "creationTime": "2021-04-02T12:13:06.7534628+00:00",
  "errorInfo": {
    "code": null,
    "message": null
  },
  "extensionType": "microsoft.azuremonitor.containers",
  "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/demo/providers/Microsoft.Kubernetes/connectedClusters/demo/providers/Microsoft.KubernetesConfiguration/extensions/azuremonitor-containers",
  "identity": null,
  "installState": "Installed",
  "lastModifiedTime": "2021-04-02T12:13:06.753463+00:00",
  "lastStatusTime": "2021-04-02T12:13:49.636+00:00",
  "name": "azuremonitor-containers",
  "releaseTrain": "Stable",
  "resourceGroup": "demo",
  "scope": {
    "cluster": {
      "releaseNamespace": "azuremonitor-containers"
    },
    "namespace": null
  },
  "statuses": [],
  "systemData": null,
  "type": "Microsoft.KubernetesConfiguration/extensions",
  "version": "2.8.2"
}

클러스터에 설치된 모든 확장 나열

필수 매개 변수에 대한 값을 전달하면서 k8s-extension list를 사용하여 클러스터에 설치된 모든 확장을 봅니다.

az k8s-extension list --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters

출력:

[
  {
    "autoUpgradeMinorVersion": true,
    "creationTime": "2020-09-15T02:26:03.5519523+00:00",
    "errorInfo": {
      "code": null,
      "message": null
    },
    "extensionType": "Microsoft.AzureMonitor.Containers",
    "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myRg/providers/Microsoft.Kubernetes/connectedClusters/myCluster/providers/Microsoft.KubernetesConfiguration/extensions/myExtInstanceName",
    "identity": null,
    "installState": "Pending",
    "lastModifiedTime": "2020-09-15T02:48:45.6469664+00:00",
    "lastStatusTime": null,
    "name": "myExtInstanceName",
    "releaseTrain": "Stable",
    "resourceGroup": "myRG",
    "scope": {
      "cluster": {
        "releaseNamespace": "myExtInstanceName1"
      }
    },
    "statuses": [],
    "type": "Microsoft.KubernetesConfiguration/extensions",
    "version": "0.1.0"
  },
  {
    "autoUpgradeMinorVersion": true,
    "creationTime": "2020-09-02T00:41:16.8005159+00:00",
    "errorInfo": {
      "code": null,
      "message": null
    },
    "extensionType": "microsoft.azuredefender.kubernetes",
    "id": "/subscriptions/0e849346-4343-582b-95a3-e40e6a648ae1/resourceGroups/myRg/providers/Microsoft.Kubernetes/connectedClusters/myCluster/providers/Microsoft.KubernetesConfiguration/extensions/defender",
    "identity": null,
    "installState": "Pending",
    "lastModifiedTime": "2020-09-02T00:41:16.8005162+00:00",
    "lastStatusTime": null,
    "name": "microsoft.azuredefender.kubernetes",
    "releaseTrain": "Stable",
    "resourceGroup": "myRg",
    "scope": {
      "cluster": {
        "releaseNamespace": "myExtInstanceName2"
      }
    },
    "type": "Microsoft.KubernetesConfiguration/extensions",
    "version": "0.1.0"
  }
]

확장 인스턴스 업데이트

참고 항목

업데이트할 수 있는 --configuration-settings--configuration-protected-settings의 특정 설정을 이해하려면 특정 확장 유형에 대한 설명서를 참조하세요. --configuration-protected-settings의 경우 하나의 설정만 업데이트되더라도 모든 설정이 제공되어야 합니다. 이러한 설정 중 하나라도 생략되면 해당 설정은 사용되지 않는 것으로 간주되어 삭제됩니다.

기존 확장 인스턴스를 업데이트하려면 k8s-extension update를 사용하여 필수 및 선택적 매개 변수에 대한 값을 전달합니다. 필수 및 선택적 매개 변수는 확장 인스턴스를 만드는 데 사용되는 매개 변수와 약간 다릅니다.

이 예제에서는 Azure Machine Learning 확장 인스턴스의 auto-upgrade-minor-version 설정을 true로 업데이트합니다.

az k8s-extension update --name azureml --extension-type Microsoft.AzureML.Kubernetes --scope cluster --cluster-name <clusterName> --resource-group <resourceGroupName> --auto-upgrade-minor-version true --cluster-type managedClusters

업데이트에 필요한 매개 변수

매개 변수 이름 설명
--name 확장의 이름입니다.
--cluster-name 확장 인스턴스를 만들어야 하는 클러스터의 이름
--resource-group 클러스터를 포함하는 리소스 그룹
--cluster-type 확장 인스턴스를 만들어야 하는 클러스터 유형입니다. Azure Arc 지원 Kubernetes 클러스터의 경우 connectedClusters를 사용합니다. AKS 클러스터의 경우 managedClusters를 사용합니다.

업데이트에 대한 선택적 매개 변수

매개 변수 이름 설명
--auto-upgrade-minor-version 확장 부 버전이 자동으로 업그레이드되는지 여부를 지정하는 부울 속성입니다. 기본 설정은 true입니다. 이 매개 변수를 true로 설정하면 버전이 동적으로 업데이트되므로 version 매개 변수를 설정할 수 없습니다. false로 설정된 경우 확장은 패치 버전에 대해서도 자동으로 업그레이드되지 않습니다.
--version 설치할 확장의 버전(확장 인스턴스를 고정할 특정 버전)입니다. auto-upgrade-minor-version이 true로 설정된 경우에는 제공되지 않아야 합니다.
--configuration-settings 기능을 제어하기 위해 확장에 전달할 수 있는 설정입니다. 매개 변수 이름 뒤에 공백으로 구분된 key=value 쌍으로 전달됩니다. 이 매개 변수를 명령에 사용하는 경우에는 동일한 명령에서 --configuration-settings-file를 사용할 수 없습니다. 업데이트가 필요한 설정만 제공하면 됩니다. 제공된 설정이 지정된 값으로 바뀝니다.
--configuration-settings-file 구성 설정을 확장에 전달하는 데 사용되는 key=value 쌍이 포함된 JSON 파일의 경로입니다. 이 매개 변수를 명령에 사용하는 경우에는 동일한 명령에서 --configuration-settings를 사용할 수 없습니다.
--configuration-protected-settings GET API 호출 또는 az k8s-extension show 명령을 사용하여 검색할 수 없는 설정입니다. 일반적으로 중요한 설정을 전달하는 데 사용됩니다. 매개 변수 이름 뒤에 공백으로 구분된 key=value 쌍으로 전달됩니다. 이 매개 변수를 명령에 사용하는 경우에는 동일한 명령에서 --configuration-protected-settings-file를 사용할 수 없습니다. 보호된 설정을 업데이트하면 보호된 모든 설정이 지정되어야 합니다. 이러한 설정 중 하나라도 생략되면 해당 설정은 사용되지 않는 것으로 간주되어 삭제됩니다.
--configuration-protected-settings-file 중요한 설정을 확장에 전달하는 데 사용할 key=value 쌍이 포함된 JSON 파일의 경로입니다. 이 매개 변수를 명령에 사용하는 경우에는 동일한 명령에서 --configuration-protected-settings를 사용할 수 없습니다.
--scope cluster 또는 namespace 확장에 대한 설치 범위.
--release-train 확장 작성자는 Stable, Preview 등의 다양한 릴리스 학습으로 버전을 게시할 수 있습니다. 이 매개 변수를 명시적으로 설정하지 않으면 Stable이 기본값으로 사용됩니다.

확장 인스턴스 업그레이드

앞에서 설명한 대로 auto-upgrade-minor-version을 true로 설정하면 새 부 버전이 릴리스될 때 확장이 자동으로 업그레이드됩니다. 대부분의 시나리오에서는 자동 업그레이드를 사용하도록 설정하는 것이 좋습니다. auto-upgrade-minor-version을 false로 설정하면 최신 버전을 원하는 경우 확장을 수동으로 업그레이드해야 합니다.

확장의 새 주 인스턴스를 얻으려면 수동 업그레이드도 필요합니다. 주 버전 업그레이드로 인한 예기치 않은 호환성이 손상되는 변경을 방지하기 위해 업그레이드할 시기를 선택할 수 있습니다.

확장 인스턴스를 수동으로 업그레이드하려면 k8s-extension update를 사용하고 version 매개 변수를 설정하여 버전을 지정합니다.

이 예제에서는 Azure Machine Learning 확장 인스턴스를 x.y.z 버전으로 업데이트합니다.

az k8s-extension update --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters --name azureml --version x.y.z

확장 인스턴스 삭제

클러스터에서 확장 인스턴스를 삭제하려면 k8s-extension delete를 사용하여 필수 매개 변수에 대한 값을 전달합니다.

az k8s-extension delete --name azuremonitor-containers --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters

참고 항목

이 확장을 나타내는 Azure 리소스는 즉시 삭제됩니다. 이 확장과 연결된 클러스터의 Helm 릴리스는 Kubernetes 클러스터에서 실행 중인 에이전트가 네트워크에 연결되어 있고 Azure 서비스에 다시 연결하여 원하는 상태를 가져올 수 있는 경우에만 삭제됩니다.

다음 단계