다음을 통해 공유


관리되는 앱 샘플을 사용하여 Azure 애플리케이션에서 Kubernetes 앱 참조

이 문서에서는 관리되는 앱 샘플을 사용하여 Azure 애플리케이션에서 Kubernetes 앱을 참조하는 데 도움이 되는 기술 리소스 및 권장 사항을 제공합니다.

제한 사항

관리되는 앱 제품은 기존 관리되는 AKS 클러스터 및 Azure Arc 지원 Kubernetes 클러스터에서 작동하지 않습니다. 제품은 새 관리형 AKS 클러스터를 만들고 클러스터에 애플리케이션을 설치해야 합니다. 그렇지 않으면 제품이 배포되지 않습니다.

필수 조건

관리되는 앱 제품에서 참조하려는 Kubernetes 제품을 Azure Marketplace에서 설정해야 합니다. 시작 가이드참조하여 Kubernetes 제품을 만들 수 있습니다.

이 제품의 UI 정의 및 ARM 템플릿은 관리되는 앱 제품에서 확장하므로 매우 간단할 수 있습니다.

이 예제에서는 k8s-offer-azure-vote 폴더에서 시작하여 기본 Kubernetes 제품에 대한 CNAB 번들을 만듭니다.

제품이 게시되고 미리 보기 단계에서 Azure Marketplace에서 사용할 수 있게 되면 관리되는 앱 제품 만들기를 시작할 수 있습니다.

관리되는 앱 제품을 표시하는 미리 보기 링크 표시의 스크린샷.

관리되는 앱 제품

이 폴더의 mainTemplatecreateUIDefinition 파일로 시작합니다.

먼저 변수 섹션을 업데이트합니다.

"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 애플리케이션 제품을 만들어 관리되는 앱 제품을 만드는 가이드를 따를 수 있습니다.