Dokumentacja aplikacji Kubernetes w aplikacji platformy Azure przy użyciu przykładu aplikacji zarządzanej
Ten artykuł zawiera zasoby techniczne i zalecenia ułatwiające odwołanie do aplikacji Kubernetes w aplikacji platformy Azure przy użyciu przykładu aplikacji zarządzanej.
Ograniczenia
Oferta aplikacji zarządzanej nie będzie działać w odniesieniu do istniejącego zarządzanego klastra usługi AKS i klastra Kubernetes z obsługą usługi Azure Arc. Oferta musi utworzyć nowy zarządzany klaster usługi AKS i zainstalować aplikację w klastrze. W przeciwnym razie oferta zakończy się niepowodzeniem.
Wymagania wstępne
Musisz skonfigurować ofertę Kubernetes w witrynie Azure Marketplace, do której chcesz się odwołać w ofercie aplikacji zarządzanej. Zapoznaj się z przewodnikiem Wprowadzenie, aby utworzyć ofertę platformy Kubernetes.
Definicja interfejsu użytkownika i szablon usługi ARM w tej ofercie mogą być naprawdę proste, ponieważ rozszerzysz ją w ofercie aplikacji zarządzanej.
W tym przykładzie zaczniemy od folderu k8s-offer-azure-vote , aby utworzyć pakiet CNAB dla podstawowej oferty Kubernetes.
Po opublikowaniu oferty i udostępnieniu jej w witrynie Azure Marketplace w wersji zapoznawczej możesz rozpocząć tworzenie oferty aplikacji zarządzanej.
Oferta aplikacji zarządzanej
Zacznij od pliku mainTemplate i createUIDefinition w tym folderze.
Najpierw zaktualizuj sekcję zmiennych:
"variables": {
"plan-name": "DONOTMODIFY",
"plan-publisher": "DONOTMODIFY",
"plan-offerID": "DONOTMODIFY",
"releaseTrain": "DONOTMODIFY",
"clusterExtensionTypeName": "DONOTMODIFY"
},
Aby pobrać wartość bezpośrednio z oferty Kubernetes, postępuj zgodnie z przewodnikiem: Wdrażanie aplikacji Usługi Azure Kubernetes przy użyciu szablonu usługi ARM.
Przygotowywanie mainTemplate.json
W tym przykładzie mainTemplate dodaliśmy dodatkowe składniki, aby pokazać, jak dodać więcej składników do oferty aplikacji zarządzanej.
Tożsamość przypisana przez użytkownika:
{
"type": "Microsoft.ManagedIdentity/userAssignedIdentities",
"name": "[concat(parameters('clusterResourceName'), '-identity')]",
"apiVersion": "2023-01-31",
"location": "[resourceGroup().location]"
},
- Usługa Keyvault, zasady dostępu i wpis tajny:
{
"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'))]"
]
}
- Przypisywanie tożsamości do węzła klastra i zależy od:
"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
W tym przykładzie createUiDefinition usunęliśmy dodatkowe składniki, które nie mają zastosowania do oferty aplikacji zarządzanej.
Pakowanie plików
Dodaj dwa pliki mainTemplate.json
i createUiDefinition.json
do pliku zip.
Tworzenie oferty aplikacji zarządzanej
Teraz, gdy masz wymagane artefakty, możesz postępować zgodnie z przewodnikiem: Tworzenie oferty aplikacji platformy Azure w witrynie Azure Marketplace w celu utworzenia oferty aplikacji zarządzanej.