You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
# How to deploy a Container offer from Azure Marketplace (preview)
@@ -22,9 +22,23 @@ Included among these solutions are Kubernetes application-based Container offers
22
22
23
23
[!INCLUDE [preview features callout](./includes/preview/preview-callout.md)]
24
24
25
+
> [!NOTE]
26
+
> This feature is currently only supported in the following regions:
27
+
>
28
+
> - West Central US
29
+
> - West Europe
30
+
> - East US.
31
+
25
32
## Register feature flags
26
33
27
-
You must have registered the `Microsoft.KubernetesConfiguration/extensions` and `Microsoft.ContainerService/managedClusters` feature flags on your subscription. The following command will register both:
34
+
You must have registered the `Microsoft.KubernetesConfiguration/extensions` and `Microsoft.ContainerService/managedClusters` feature flags on your subscription. To begin, register the relevant providers using the `az provider register` command:
35
+
36
+
```azurecli-interactive
37
+
az provider register --namespace Microsoft.KubernetesConfiguration --wait
38
+
az provider register --namespace Microsoft.ContainerService --wait
39
+
```
40
+
41
+
The following command will register both feature flags:
28
42
29
43
```azurecli-interactive
30
44
az feature register --name extensions --namespace Microsoft.KubernetesConfiguration
@@ -38,14 +52,13 @@ az feature list -o table --query "[?contains(name, 'Microsoft.KubernetesConfigur
38
52
az feature list -o table --query "[?contains(name, 'Microsoft.ContainerService/managedClusters')].{Name:name,State:properties.state}"
39
53
```
40
54
41
-
Once ready, refresh the registration of the `Microsoft.KubernetesConfiguration` and `Microsoft.ContainerService` resource providers by using the `az provider register` command:
55
+
Once ready, refresh the registration of the `Microsoft.KubernetesConfiguration` and `Microsoft.ContainerService` resource providers:
42
56
43
57
```azurecli-interactive
44
-
az provider register --namespace Microsoft.KubernetesConfiguration
45
-
az provider register --namespace Microsoft.ContainerService
58
+
az provider register --namespace Microsoft.KubernetesConfiguration --wait
59
+
az provider register --namespace Microsoft.ContainerService --wait
46
60
```
47
61
48
-
49
62
## Browse offers
50
63
51
64
- Begin by visiting the Azure portal and searching for *"Marketplace"* in the top search bar.
@@ -55,7 +68,6 @@ az provider register --namespace Microsoft.ContainerService
55
68
-> [!IMPORTANT]
56
69
> The *Azure Containers* category includes both Kubernetes applications and standalone container images. This walkthrough is Kubernetes application-specific. If you find the steps to deploy an offer differ in some way, you are most likely trying to deploy a container image-based offer instead of a Kubernetes-application based offer.
57
70
58
-
59
71
- Once you've decided on an application, click on the offer.
60
72
61
73
:::image type="content" source="./media/deploy-marketplace/browse-marketplace-inline.png" alt-text="Screenshot of the Azure portal Marketplace offer page. The product type filter, set to Azure Containers, is highlighted and several offers are shown." lightbox="./media/deploy-marketplace/browse-marketplace-full.png":::
@@ -94,14 +106,6 @@ Purchasing an offer from the Azure Marketplace creates a new instance of the ext
94
106
az k8s-extension show --name <extension-name> --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type managedClusters
95
107
```
96
108
97
-
### Updating an offer
98
-
99
-
An offer can be updated by using the REST API or Azure CLI. For example:
To monitor billing and usage information for the offer you've deployed, visit Cost Management > Cost Analysis in your cluster resource's page in the Azure portal. You can see a breakdown of cost for the plan you've selected under "Product".
119
+
To monitor billing and usage information for the offer you've deployed, visit Cost Management > Cost Analysis in your cluster's resource group's page in the Azure portal. You can see a breakdown of cost for the plan you've selected under "Product".
116
120
117
121
:::image type="content" source="./media/deploy-marketplace/billing-inline.png" alt-text="Screenshot of the Azure portal page for the resource group. Billing information is shown broken down by offer plan." lightbox="./media/deploy-marketplace/billing-full.png":::
Copy file name to clipboardExpand all lines: articles/marketplace/azure-container-plan-availability.md
+1-2Lines changed: 1 addition & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -46,8 +46,7 @@ For a custom priced plan, Microsoft will charge the customer for their hourly us
46
46
47
47
- Free: Set the hourly price at 0 and your container offer is sold as equivalent to a free offer.
48
48
- Per core: Your Azure Container offer is listed with pricing based on the critical CPU cores used. You provide the price for one CPU core and we’ll increment the pricing based on the size of the hardware used by your application for the critical cores you’ve tagged in your application as the ones that should generate usage.
49
-
- Per every core in cluster: Your Azure Container offer is listed with pricing based on the CPU cores used. You provide the price for one CPU core and we’ll increment the pricing based on the size of the hardware used by your application.
50
-
49
+
- Per every core in cluster: Your Azure Container offer is listed with pricing based on the total number of CPU cores in the cluster. You provide the price for one CPU core and we’ll increment the pricing based on the size of the hardware in the cluster.
Copy file name to clipboardExpand all lines: articles/marketplace/azure-container-plan-technical-configuration-kubernetes.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -25,6 +25,8 @@ Cluster extensions enable an Azure Resource Manager driven experience for your a
25
25
26
26
- You cannot modify this value once the plan is published to *Preview*.
27
27
28
+
- The maximum allowed length is 50 characters.
29
+
28
30
## Selecting CNAB bundle
29
31
30
32
Your payload must be hosted in a private Azure Container Registry (ACR). Use this page to provide reference information for your Cloud Native Application Bundle (CNAB) bundle inside your Azure Container Registry. After you submit the offer for publishing, your bundle is copied to Azure Marketplace in a specific public container registry. All requests from Azure users to use your offer are served from the Azure Marketplace public container registry, not your private container registry.
Copy file name to clipboardExpand all lines: articles/marketplace/azure-container-technical-assets-kubernetes.md
+49-23Lines changed: 49 additions & 23 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -23,24 +23,30 @@ In addition to your solution domain, your engineering team should have knowledge
23
23
24
24
- Basic understanding of [Azure Services](https://azure.microsoft.com/services/)
25
25
- How to [design and architect Azure applications](https://azure.microsoft.com/solutions/architecture/)
26
-
- Working knowledge of [Azure Virtual Machines](https://azure.microsoft.com/services/virtual-machines/), [Azure Storage](https://azure.microsoft.com/services/?filter=storage), and [Azure Networking](https://azure.microsoft.com/services/?filter=networking)
27
26
- Working knowledge of [Azure Resource Manager](https://azure.microsoft.com/features/resource-manager/)
28
-
- Working Knowledge of [JSON](https://www.json.org/).
29
-
- Working Knowledge of [Helm](https://www.helm.sh)
27
+
- Working knowledge of [JSON](https://www.json.org/)
28
+
- Working knowledge of [Helm](https://www.helm.sh)
29
+
- Working knowledge of [createUiDefinition][createuidefinition]
30
30
31
31
## Prerequisites
32
32
33
33
- Your application must be Helm chart-based.
34
34
35
+
- All the image references and digest details must be included in the chart. No additional charts or images can be downloaded at runtime.
36
+
35
37
- You must have an active publishing tenant or access to a publishing tenant and Partner Center account.
36
38
37
-
- You must have created an Azure Container Registry (ACR) to which you'll upload the CNAB, and give permission to Microsoft’s first party app ID to access your ACR. For more information, see [create an Azure Container Registry][create-acr].
39
+
- You must have created an Azure Container Registry (ACR) to which you'll upload the Cloud Native Application Bundle (CNAB), and give permission to Microsoft’s first party app ID to access your ACR. For more information, see [create an Azure Container Registry][create-acr].
38
40
39
41
- Install the latest version of the Azure CLI.
40
42
43
+
- The application must be deployable to Linux environment.
44
+
45
+
- If running the CNAB packaging tool manually, you will need docker installed on your local machine.
46
+
41
47
## Limitations
42
48
43
-
- Container Marketplace supports only AMD64 images.
49
+
- Container Marketplace supports only Linux platform-based AMD64 images.
44
50
- Managed AKS only.
45
51
- Single containers are not supported.
46
52
- Linked Azure Resource Manager templates are not supported.
@@ -63,16 +69,28 @@ Microsoft has created a first-party application responsible for handling this pr
63
69
# [Linux](#tab/linux)
64
70
65
71
```azurecli-interactive
72
+
az login
66
73
az ad sp create --id 32597670-3e15-4def-8851-614ff48c1efa
67
74
```
68
75
69
-
Make note of the service principal's ID. Next, obtain your registry's full ID:
76
+
Make note of the service principal's ID to use in the following steps.
77
+
78
+
Next, obtain your registry's full ID:
70
79
71
80
```azurecli-interactive
72
81
az acr show --name <registry-name> --query "id" --output tsv
73
82
```
74
83
75
-
Finally, create a role assignment to grant the service principal the ability to pull from your registry:
Next, create a role assignment to grant the service principal the ability to pull from your registry:
113
142
114
143
```powershell-interactive
@@ -139,7 +168,7 @@ Each CNAB will be composed of the following artifacts:
139
168
140
169
- CreateUiDefinition
141
170
142
-
- ARM Template (optional)
171
+
- ARM Template
143
172
144
173
- Manifest file
145
174
@@ -178,23 +207,17 @@ A createUiDefinition is a JSON file that defines the user interface elements for
178
207
179
208
After creating the createUiDefinition.json file for your application, you need to test the user experience. To simplify testing, use a [sandbox environment][sandbox-environment] that loads your file in the portal. The sandbox presents your user interface in the current, full-screen portal experience. The sandbox is the recommended way to preview the user interface.
180
209
181
-
### Create the Azure Resource Manager (ARM) template (optional)
210
+
### Create the Azure Resource Manager (ARM) template
182
211
183
212
An [ARM template][arm-template-overview] defines the Azure resources to deploy. You will be deploying a cluster extension resource for the Azure Marketplace application. Optionally, you can choose to deploy an AKS cluster.
184
213
185
-
If the ARM template does not exist in the CNAB bundle, a default ARM template will be created that deploys the cluster extension on an existing AKS cluster with the following expected parameters:
186
-
187
-
-`clusterResourceName`
188
-
189
-
-`extensionResourceName`
190
-
191
-
If you do include an ARM template, we currently only allow the following resource types:
214
+
We currently only allow the following resource types:
192
215
193
216
-`Microsoft.ContainerService/managedClusters`
194
217
195
218
-`Microsoft.KubernetesConfiguration/extensions`
196
219
197
-
For example, see this [sample ARM template][arm-template-sample]designed to take results from the sample UI definition linked above and pass parameters into your application.
220
+
For example, see this [sample ARM template][arm-template-sample]designed to take results from the sample UI definition linked above and pass parameters into your application.
198
221
199
222
### Create the manifest file
200
223
@@ -213,15 +236,17 @@ The fields used in the manifest are as follows:
213
236
|uiDefinition|String|Local path where a JSON file that describes an Azure portal Create experience can be found|
214
237
|registryServer|String|The ACR where the final CNAB bundle should be pushed|
215
238
|extensionRegistrationParameters|Collection|Specification for the extension registration parameters. Include at least `defaultScope` and `billingIdentifier` as parameters.|
216
-
|defaultScope|String|The default scope for your extension installation. Accepted values are `cluster` or `namespace`.|
239
+
|defaultScope|String|The default scope for your extension installation. Accepted values are `cluster` or `namespace`. If `cluster` scope is set, then only one extension instance is allowed per cluster. If `namespace` scope is selected, then only one instance is allowed per namespace. As a Kubernetes cluster can have multiple namespaces, multiple instances of extension can exist.|
217
240
|namespace|String|(Optional) Specify the namespace the extension will install into. This property is required when `defaultScope` is set to `cluster`. For namespace naming restrictions, see [Namespaces and DNS][namespaces-and-dns].|
218
241
219
-
For an sample configured for the voting app, see the following [manifest file example][manifest-sample].
242
+
For a sample configured for the voting app, see the following [manifest file example][manifest-sample].
220
243
221
244
### Structure your application
222
245
223
246
Place the createUiDefinition, ARM template, and manifest file beside your application's Helm chart.
224
247
248
+
For an example of a properly structured directory, see [the sample repository][kubernetes-offer-sample-structure].
249
+
225
250
## Use the container packaging tool
226
251
227
252
Once you've added all the required artifacts, run the packaging tool `container-package-app`.
@@ -296,6 +321,7 @@ For an example of how to integrate `container-package-app` into an Azure Pipelin
Copy file name to clipboardExpand all lines: articles/marketplace/marketplace-containers.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -42,7 +42,7 @@ If you're publishing Kubernetes apps, these are the available licensing options
42
42
| Free | List your offer to customers for free. |
43
43
| BYOL | The Bring Your Own Licensing option lets your customers bring existing software licenses to Azure.\*|
44
44
| Per core | List your Azure Container offer with pricing based on the critical CPU cores used. You provide the price for one CPU core and we’ll increment the pricing based on the size of the hardware used by your application for the critical cores you’ve tagged in your application as the ones that should generate usage. |
45
-
| Per every core in cluster | List your Azure Container offer with pricing based on the CPU cores used. You provide the price for one CPU core and we’ll increment the pricing based on the size of the hardware used by your application. |
45
+
| Per every core in cluster | List your Azure Container offer with pricing based on the total number of CPU cores in the cluster. You provide the price for one CPU core and we’ll increment the pricing based on the size of the hardware in the cluster.|
46
46
47
47
\* As the publisher, you support all aspects of the software license transaction, including (but not limited to) order, fulfillment, metering, billing, invoicing, payment, and collection.
48
48
@@ -126,7 +126,7 @@ For a Kubernetes application-based offer, the following requirements apply:
126
126
| Requirement | Details |
127
127
|:--- |:--- |
128
128
| Billing and metering | Support one of the PerCore, PerEveryCoreInCluster, or BYOL billing models. |
129
-
| Artifacts packaged as a Cloud Native Application Bundle (CNAB) | The Helm chart, manifest, createUiDefinition.json, and optional Azure Resource Manager template must be packaged as a CNAB. For more information, see [prepare technical assets][azure-kubernetes-technical-assets]. |
129
+
| Artifacts packaged as a Cloud Native Application Bundle (CNAB) | The Helm chart, manifest, createUiDefinition.json, and Azure Resource Manager template must be packaged as a CNAB. For more information, see [prepare technical assets][azure-kubernetes-technical-assets]. |
130
130
| Hosting in an Azure Container Registry repository | The CNAB must be hosted in an Azure Container Registry repository. For more information about working with Azure Container Registry, see [Quickstart: Create a private container registry by using the Azure portal](../container-registry/container-registry-get-started-portal.md).<br><br> |
0 commit comments