Bagikan melalui


Mereferensikan aplikasi Kubernetes di aplikasi Azure menggunakan sampel aplikasi terkelola

Artikel ini memberikan sumber daya teknis dan rekomendasi untuk membantu Anda mereferensikan aplikasi Kubernetes di aplikasi Azure menggunakan sampel aplikasi terkelola.

Batasan

Penawaran aplikasi terkelola tidak akan berfungsi terhadap kluster yang ada. Penawaran perlu membuat kluster baru dan menginstal aplikasi pada kluster, jika tidak, penawaran akan gagal disebarkan.

Prasyarat

Anda perlu menyiapkan penawaran Kubernetes di Marketplace Azure yang ingin Anda referensikan dalam penawaran aplikasi terkelola Anda. Anda dapat merujuk ke panduan Memulai untuk membuat penawaran Kubernetes.

Definisi UI dan templat ARM Anda dalam penawaran ini bisa sangat sederhana, karena Anda akan memperluasnya dalam penawaran aplikasi terkelola Anda.

Dalam contoh ini, kita mulai dari folder k8s-offer-azure-vote untuk membuat bundel CNAB untuk penawaran Kubernetes dasar.

Setelah penawaran Anda diterbitkan dan tersedia di Marketplace Azure dalam tahap pratinjau, Anda dapat mulai membuat penawaran aplikasi terkelola.

Cuplikan layar tampilan tautan pratinjau untuk menampilkan penawaran aplikasi terkelola.

Penawaran aplikasi terkelola

Mulailah dengan file mainTemplate dan createUIDefinition di folder ini.

Pertama, perbarui bagian variabel:

"variables": {
    "plan-name": "DONOTMODIFY",
    "plan-publisher": "DONOTMODIFY",
    "plan-offerID": "DONOTMODIFY",
    "releaseTrain": "DONOTMODIFY",
    "clusterExtensionTypeName": "DONOTMODIFY"
},

Untuk mengambil nilai langsung dari penawaran Kubernetes, ikuti panduan: Sebarkan aplikasi Azure Kubernetes dengan menggunakan templat ARM.

Menyiapkan mainTemplate.json

Dalam contoh mainTemplate ini, kami telah menambahkan komponen tambahan untuk menunjukkan cara menambahkan lebih banyak komponen ke penawaran aplikasi terkelola.

Identitas yang ditetapkan pengguna:

{
    "type": "Microsoft.ManagedIdentity/userAssignedIdentities",
    "name": "[concat(parameters('clusterResourceName'), '-identity')]",
    "apiVersion": "2023-01-31",
    "location": "[resourceGroup().location]"
},
  • Keyvault, kebijakan akses, dan rahasia:
{
    "name": "[uniqueString(resourceGroup().id, resourceGroup().location, 'keyvault')]",
    "type": "Microsoft.KeyVault/vaults",
    "apiVersion": "2019-09-01",
    "location": "[resourceGroup().location]",
    "tags": {
        "displayName": "keyVault1"
    },
    "properties": {
        "enabledForDeployment": true,
        "enabledForTemplateDeployment": true,
        "enabledForDiskEncryption": true,
        "tenantId": "[subscription().tenantId]",
        "accessPolicies": [
            {
                "tenantId": "[subscription().tenantId]",
                "objectId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', concat(parameters('clusterResourceName'), '-identity')), '2023-01-31').principalId]",
                "permissions": {
                    "keys": [
                        "Get"
                    ],
                    "secrets": [
                        "List",
                        "Get",
                        "Set"
                    ]
                }
            }
        ],
        "sku": {
            "name": "standard",
            "family": "A"
        }
    },
    "resources": [
        {
            "type": "secrets",
            "name": "secretExample1",
            "apiVersion": "2016-10-01",
            "dependsOn": [
                "[resourceId('Microsoft.KeyVault/vaults', uniqueString(resourceGroup().id, resourceGroup().location, 'keyvault'))]"
            ],
            "properties": {
                "value": "secretValue"
            }
        }
    ],
    "dependsOn": [
        "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', concat(parameters('clusterResourceName'), '-identity'))]"
    ]
}
  • Menetapkan identitas ke node kluster dan bergantung pada:
"type": "Microsoft.ContainerService/managedClusters",
"apiVersion": "2022-11-01",
"name": "[parameters('clusterResourceName')]",
"location": "[parameters('location')]",
"dependsOn": [
    "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', concat(parameters('clusterResourceName'), '-identity'))]"
],
"tags": {},
"sku": {
    "name": "Basic",
    "tier": "Free"
},
"identity": {
    "type": "UserAssigned",
    "userAssignedIdentities": {
        "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', concat(parameters('clusterResourceName'), '-identity'))]": {}
    }
},

UIDefinition

Dalam sampel createUiDefinition ini, kami telah menghapus komponen tambahan yang tidak berlaku untuk penawaran aplikasi terkelola.

Membuat paket file

Tambahkan dua file mainTemplate.json dan createUiDefinition.json ke file zip.

Membuat penawaran aplikasi terkelola

Sekarang setelah Anda memiliki artefak yang diperlukan, Anda dapat mengikuti panduan: Membuat penawaran aplikasi Azure di Marketplace Azure untuk membuat penawaran aplikasi terkelola.