관리되는 앱 샘플을 사용하여 Azure 애플리케이션에서 Kubernetes 앱 참조
이 문서에서는 관리되는 앱 샘플을 사용하여 Azure 애플리케이션에서 Kubernetes 앱을 참조하는 데 도움이 되는 기술 리소스 및 권장 사항을 제공합니다.
제한 사항
관리되는 앱 제품은 기존 관리되는 AKS 클러스터 및 Azure Arc 지원 Kubernetes 클러스터에서 작동하지 않습니다. 제품은 새 관리형 AKS 클러스터를 만들고 클러스터에 애플리케이션을 설치해야 합니다. 그렇지 않으면 제품이 배포되지 않습니다.
필수 조건
관리되는 앱 제품에서 참조하려는 Kubernetes 제품을 Azure Marketplace에서 설정해야 합니다. 시작 가이드를 참조하여 Kubernetes 제품을 만들 수 있습니다.
이 제품의 UI 정의 및 ARM 템플릿은 관리되는 앱 제품에서 확장하므로 매우 간단할 수 있습니다.
이 예제에서는 k8s-offer-azure-vote 폴더에서 시작하여 기본 Kubernetes 제품에 대한 CNAB 번들을 만듭니다.
제품이 게시되고 미리 보기 단계에서 Azure Marketplace에서 사용할 수 있게 되면 관리되는 앱 제품 만들기를 시작할 수 있습니다.
관리되는 앱 제품
이 폴더의 mainTemplate 및 createUIDefinition 파일로 시작합니다.
먼저 변수 섹션을 업데이트합니다.
"variables": {
"plan-name": "DONOTMODIFY",
"plan-publisher": "DONOTMODIFY",
"plan-offerID": "DONOTMODIFY",
"releaseTrain": "DONOTMODIFY",
"clusterExtensionTypeName": "DONOTMODIFY"
},
Kubernetes 제품에서 직접 값을 검색하려면 ARM 템플릿을 사용하여 Azure Kubernetes 애플리케이션 배포 가이드를 따릅니다.
mainTemplate.json 준비
이 샘플 mainTemplate에서는 관리되는 앱 제품에 더 많은 구성 요소를 추가하는 방법을 보여 주는 추가 구성 요소를 추가했습니다.
사용자 할당 ID:
{
"type": "Microsoft.ManagedIdentity/userAssignedIdentities",
"name": "[concat(parameters('clusterResourceName'), '-identity')]",
"apiVersion": "2023-01-31",
"location": "[resourceGroup().location]"
},
- Keyvault, 액세스 정책 및 비밀:
{
"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'))]"
]
}
- 클러스터의 노드에 ID를 할당하고 다음에 따라 달라집니다.
"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
이 샘플 createUiDefinition에서는 관리되는 앱 제품에 적용되지 않는 추가 구성 요소를 제거했습니다.
파일을 패키지로 만들기
두 파일을 zip 파일에 mainTemplate.json
createUiDefinition.json
추가합니다.
관리되는 앱 제품 만들기
이제 필요한 아티팩트가 있으므로 Azure Marketplace에서 Azure 애플리케이션 제품을 만들어 관리되는 앱 제품을 만드는 가이드를 따를 수 있습니다.