Menyebarkan dan mengelola ekstensi kluster Kube dengan dukungan Azure Arc

Anda dapat membuat instans ekstensi di kluster Kubernetes dengan dukungan Arc, mengatur parameter yang diperlukan dan opsional termasuk opsi yang terkait dengan pembaruan dan konfigurasi. Anda juga dapat melihat, mencantumkan, memperbarui, dan menghapus instans ekstensi.

Sebelum memulai, baca gambaran umum konseptual ekstensi kluster Kubernetes yang diaktifkan Arc dan tinjau daftar ekstensi yang saat ini tersedia.

Prasyarat

  • Versi terbaru Azure CLI.

  • Versi connectedk8s terbaru ekstensi Azure CLI dan k8s-extension . Instal ekstensi ini dengan menjalankan perintah berikut:

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

    connectedk8s Jika ekstensi dan k8s-extension sudah diinstal, pastikan ekstensi tersebut diperbarui ke versi terbaru menggunakan perintah berikut:

    az extension update --name connectedk8s
    az extension update --name k8s-extension
    
  • Kluster yang terhubung dengan Kubernetes dengan dukungan Azure Arc yang ada, dengan setidaknya satu node sistem operasi dan jenis linux/amd64arsitektur . Jika menyebarkan Flux (GitOps), Anda dapat menggunakan kluster berbasis ARM64 tanpa simpul linux/amd64 .

Membuat instans ekstensi

Untuk membuat instans ekstensi baru, gunakan k8s-extension create, meneruskan nilai untuk parameter yang diperlukan.

Contoh ini membuat instans ekstensi Azure Monitor Container Insights pada kluster Kubernetes dengan dukungan Azure Arc:

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

Output:

{
  "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"
}

Catatan

Layanan ini tidak dapat mempertahankan informasi sensitif selama lebih dari 48 jam. Jika agen Kubernetes dengan dukungan Azure Arc tidak memiliki konektivitas jaringan selama lebih dari 48 jam dan tidak dapat menentukan apakah akan membuat ekstensi pada kluster, ekstensi akan beralih ke Failed status. Setelah itu terjadi, Anda harus menjalankan k8s-extension create lagi untuk membuat sumber daya Azure ekstensi baru.

Azure Monitor Container Insights adalah ekstensi singleton (hanya satu yang diperlukan per kluster). Anda harus membersihkan penginstalan bagan Helm sebelumnya dari Azure Monitor Container Insights (tanpa ekstensi) sebelum menginstal hal yang sama melalui ekstensi. Ikuti instruksi untuk menghapus bagan Helm sebelum menjalankan az k8s-extension create.

Parameter yang diperlukan

Parameter berikut diperlukan saat menggunakan az k8s-extension create untuk membuat instans ekstensi.

Nama Parameter Deskripsi
--name Nama instans ekstensi
--extension-type Jenis ekstensi yang ingin Anda instal pada kluster. Misalnya: Microsoft.AzureMonitor.Kontainer, microsoft.azuredefender.kube
--scope Cakupan penginstalan untuk ekstensi: cluster atau namespace
--cluster-name Nama sumber daya Kube dengan dukungan Azure Arc tempat instans ekstensi harus dibuat
--resource-group Grup sumber daya yang berisi sumber daya Kube dengan dukungan Azure Arc
--cluster-type Jenis kluster tempat instans ekstensi harus dibuat. Untuk sebagian besar skenario, gunakan connectedClusters, yang sesuai dengan kluster Kubernetes dengan dukungan Azure Arc.

Parameter opsional

Gunakan satu atau beberapa parameter opsional ini sesuai kebutuhan untuk skenario Anda, bersama dengan parameter yang diperlukan.

Catatan

Anda dapat memilih untuk secara otomatis meningkatkan instans ekstensi Anda ke versi minor dan patch terbaru dengan mengatur auto-upgrade-minor-version ke true, atau Anda dapat mengatur versi instans ekstensi secara manual menggunakan --version parameter . Sebaiknya aktifkan peningkatan otomatis untuk versi minor dan patch sehingga Anda selalu memiliki patch dan kemampuan keamanan terbaru.

Karena peningkatan versi utama dapat mencakup perubahan yang melanggar, peningkatan otomatis untuk versi utama baru instans ekstensi tidak didukung. Anda dapat memilih kapan harus meningkatkan instans ekstensi secara manual ke versi utama baru.

Nama Parameter Deskripsi
--auto-upgrade-minor-version Properti Boolean yang menentukan apakah versi minor ekstensi ditingkatkan secara otomatis. Pengaturan default-nya true. Jika parameter ini diatur ke true, Anda tidak dapat mengatur version parameter, karena versi akan diperbarui secara dinamis. Jika diatur ke false, ekstensi tidak akan ditingkatkan secara otomatis, bahkan untuk versi patch.
--version Versi ekstensi yang akan diinstal (versi tertentu tempat akan disematkannya instans esktensi). Tidak boleh disediakan jika auto-upgrade-minor-version diatur ke true.
--configuration-settings Pengaturan yang dapat diteruskan ke ekstensi untuk mengontrol fungsionalitasnya. Ini diteruskan sebagai pasangan yang dipisahkan key=value spasi setelah nama parameter. Jika parameter ini digunakan dalam perintah, --configuration-settings-file tidak dapat digunakan dalam perintah yang sama.
--configuration-settings-file Jalur ke file JSON dengan key=value pasangan yang akan digunakan untuk meneruskan pengaturan konfigurasi ke ekstensi. Jika parameter ini digunakan dalam perintah, --configuration-settings tidak dapat digunakan dalam perintah yang sama.
--configuration-protected-settings Pengaturan yang tidak dapat diambil menggunakan GET Panggilan atau az k8s-extension show perintah API. Biasanya digunakan untuk meneruskan pengaturan sensitif. Ini diteruskan sebagai pasangan yang dipisahkan key=value spasi setelah nama parameter. Jika parameter ini digunakan dalam perintah, --configuration-protected-settings-file tidak dapat digunakan dalam perintah yang sama.
--configuration-protected-settings-file Jalur ke file JSON dengan key=value pasangan yang akan digunakan untuk meneruskan pengaturan sensitif ke ekstensi. Jika parameter ini digunakan dalam perintah, --configuration-protected-settings tidak dapat digunakan dalam perintah yang sama.
--release-namespace Parameter ini menunjukkan namespace tempat rilis akan dibuat. Hanya relevan jika scope diatur ke cluster.
--release-train Penulis ekstensi dapat menerbitkan versi di kereta rilis yang berbeda seperti Stable, , Previewdll. Jika parameter ini tidak diatur secara eksplisit, Stable digunakan sebagai default.
--target-namespace Menunjukkan namespace tempat rilis akan dibuat. Izin akun sistem yang dibuat untuk instansi ekstensi ini akan dibatasi untuk namespace ini. Hanya relevan jika scope diatur ke namespace.

Perlihatkan detail ekstensi

Untuk melihat detail instans ekstensi yang saat ini diinstal, gunakan k8s-extension show, meneruskan nilai untuk parameter wajib.

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

Output:

{
  "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"
}

Daftar semua ekstensi yang terinstal pada kluster

Untuk melihat daftar semua ekstensi yang diinstal pada kluster, gunakan k8s-extension list, meneruskan nilai untuk parameter wajib.

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

Output:

[
  {
    "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"
  }
]

Perbarui instans ekstensi

Catatan

Lihat dokumentasi untuk jenis ekstensi tertentu untuk memahami pengaturan tertentu dan --configuration-protected-settings yang dapat diperbarui--configuration-settings. Untuk --configuration-protected-settings, semua pengaturan diharapkan disediakan, meskipun hanya satu pengaturan yang sedang diperbarui. Jika salah satu pengaturan ini dihilangkan, pengaturan tersebut akan dianggap usang dan dihapus.

Untuk memperbarui instans ekstensi yang ada, gunakan k8s-extension update, meneruskan nilai untuk parameter wajib dan opsional. Parameter wajib dan opsional sedikit berbeda dari yang digunakan untuk membuat instans ekstensi.

Contoh ini memperbarui auto-upgrade-minor-version pengaturan untuk instans ekstensi Azure Pembelajaran Mesin ke 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

Parameter yang diperlukan untuk pembaruan

Nama Parameter Deskripsi
--name Nama instans ekstensi
--cluster-name Nama kluster tempat instans ekstensi harus dibuat
--resource-group Grup sumber daya yang berisi kluster
--cluster-type Jenis kluster tempat instans ekstensi harus dibuat. Untuk kluster Kubernetes dengan dukungan Azure Arc, gunakan connectedClusters. Untuk kluster AKS, gunakan managedClusters.

Parameter opsional untuk pembaruan

Nama Parameter Deskripsi
--auto-upgrade-minor-version Properti Boolean yang menentukan apakah versi minor ekstensi ditingkatkan secara otomatis. Pengaturan default-nya true. Jika parameter ini diatur ke true, Anda tidak dapat mengatur version parameter, karena versi akan diperbarui secara dinamis. Jika diatur ke false, ekstensi tidak akan ditingkatkan secara otomatis, bahkan untuk versi patch.
--version Versi ekstensi yang akan diinstal (versi tertentu tempat akan disematkannya instans esktensi). Tidak boleh diberikan jika versi minor peningkatan otomatis diatur ke true.
--configuration-settings Pengaturan yang dapat diteruskan ke ekstensi untuk mengontrol fungsionalitasnya. Ini diteruskan sebagai pasangan yang dipisahkan key=value spasi setelah nama parameter. Jika parameter ini digunakan dalam perintah, --configuration-settings-file tidak dapat digunakan dalam perintah yang sama. Hanya pengaturan yang memerlukan pembaruan yang perlu disediakan. Pengaturan yang disediakan akan diganti dengan nilai yang ditentukan.
--configuration-settings-file Jalur ke file JSON dengan key=value pasangan yang akan digunakan untuk meneruskan pengaturan konfigurasi ke ekstensi. Jika parameter ini digunakan dalam perintah, --configuration-settings tidak dapat digunakan dalam perintah yang sama.
--configuration-protected-settings Pengaturan yang tidak dapat diambil menggunakan GET Panggilan atau az k8s-extension show perintah API. Biasanya digunakan untuk meneruskan pengaturan sensitif. Ini diteruskan sebagai pasangan yang dipisahkan key=value spasi setelah nama parameter. Jika parameter ini digunakan dalam perintah, --configuration-protected-settings-file tidak dapat digunakan dalam perintah yang sama. Saat Anda memperbarui pengaturan yang dilindungi, semua pengaturan yang dilindungi diharapkan ditentukan. Jika salah satu pengaturan ini dihilangkan, pengaturan tersebut akan dianggap usang dan dihapus.
--configuration-protected-settings-file Jalur ke file JSON dengan key=value pasangan yang akan digunakan untuk meneruskan pengaturan sensitif ke ekstensi. Jika parameter ini digunakan dalam perintah, --configuration-protected-settings tidak dapat digunakan dalam perintah yang sama.
--scope Cakupan penginstalan untuk ekstensi - cluster atau namespace.
--release-train Penulis ekstensi dapat menerbitkan versi di kereta rilis yang berbeda seperti Stable, , Previewdll. Jika parameter ini tidak diatur secara eksplisit, Stable digunakan sebagai default.

Meningkatkan instans ekstensi

Seperti disebutkan sebelumnya, jika Anda mengatur auto-upgrade-minor-version ke true, ekstensi akan secara otomatis ditingkatkan saat versi minor baru dirilis. Untuk sebagian besar skenario, sebaiknya aktifkan peningkatan otomatis. Jika Anda mengatur auto-upgrade-minor-version ke false, Anda harus meningkatkan ekstensi secara manual jika Anda menginginkan versi yang lebih baru.

Peningkatan manual juga diperlukan untuk mendapatkan instans utama ekstensi baru. Anda dapat memilih kapan harus meningkatkan untuk menghindari perubahan melanggar yang tidak terduga dengan peningkatan versi utama.

Untuk meningkatkan instans ekstensi secara manual, gunakan k8s-extension update dan atur version parameter untuk menentukan versi.

Contoh ini memperbarui instans ekstensi Azure Pembelajaran Mesin ke versi x.y.z:

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

Hapus instans ekstensi

Untuk menghapus instans ekstensi pada kluster, gunakan k8s-extension delete, meneruskan nilai untuk parameter wajib:

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

Catatan

Sumber daya Azure yang mewakili ekstensi ini akan segera dihapus. Rilis Helm pada kluster yang terkait dengan ekstensi ini hanya dihapus ketika agen yang berjalan pada kluster Kube memiliki konektivitas jaringan dan dapat menjangkau layanan Azure lagi untuk mengambil status yang diinginkan.

Langkah berikutnya