Una mappa di configurazione è una proprietà che è possibile usare per applicare configurazioni del contenitore simili alle variabili di ambiente e ai volumi segreti. Il processo è diverso dall'uso di variabili di ambiente o volumi segreti in cui è necessario riavviare il pod per applicare le impostazioni. L'uso di una mappa di configurazione per applicare le impostazioni non richiede alcun riavvio per rendere effettive le modifiche.
È possibile usare Istanze di Azure Container per creare istanze di contenitore con o senza mappe di configurazione. È anche possibile aggiornarli in qualsiasi momento dopo la creazione usando le mappe di configurazione. L'aggiornamento delle mappe di configurazione in un gruppo di contenitori in esecuzione esistente è un'attività che è possibile eseguire rapidamente senza compromettere il tempo di attività del contenitore.
Funzionamento
È possibile includere una mappa di configurazione nelle proprietà del contenitore o in un profilo del gruppo di contenitori. La creazione di un profilo di gruppo di contenitori con le impostazioni della mappa di configurazione semplifica l'applicazione di tali impostazioni e semplifica l'automazione.
Creare un profilo del gruppo di contenitori con le impostazioni della mappa di configurazione
Creare un profilo del gruppo di contenitori con le impostazioni della mappa di configurazione usando az container-group-profile create.
az container container-group-profile create \
--resource-group myResourceGroup \
--name myContainerGroupProfile \
--location WestCentralUS \
--image nginx \
--os-type Linux \
--ip-address Public \
--ports 8000 \
--cpu 1 \
--memory 1.5 \
--restart-policy never \
--config-map key1=value1 key2=value2
Creare un profilo del gruppo di contenitori con le impostazioni della mappa di configurazione usando New-AzContainerInstanceContainerGroupProfile.
$port1 = New-AzContainerInstancePortObject -Port 8000 -Protocol TCP
$port2 = New-AzContainerInstancePortObject -Port 8001 -Protocol TCP
$container = New-AzContainerInstanceObject -Name myContainer -Image nginx -RequestCpu 1 -RequestMemoryInGb 1.5 -Port @($port1, $port2) -ConfigMapKeyValuePair @{"key1"="value1"}
New-AzContainerInstanceContainerGroupProfile `
-ResourceGroupName myResourceGroup `
-Name myContainerGroupProfile `
-Location WestCentralUS `
-Container $container `
-OsType Linux `
-RestartPolicy "Never" `
-IpAddressType Public
Creare un profilo del gruppo di contenitori con le impostazioni della mappa di configurazione distribuendo il modello usando az deployment group create o New-AzResourceGroupDeployment.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.ContainerInstance/containerGroups",
"apiVersion": "2024-05-01-preview",
"name": "[parameters('profileName')]",
"location": "[parameters('location')]",
"properties": {
"containers": [
{
"name": "myContainer",
"properties": {
"image": "[parameters('containerImage')]",
"ports": [
{
"port": 8000
}
],
"resources": {
"requests": {
"cpu": 1,
"memoryInGB": 1.5
}
},
"command": [],
"configMap": {
"keyValuePairs": {
"key1": "value1",
"key2": "value2"
}
"environmentVariables": []
}
}
],
"osType": "Linux",
"ipAddress": {
"type": "Public",
"ports": [
{
"protocol": "TCP",
"port": 8000
}
]
},
"imageRegistryCredentials": [],
"sku": "Standard"
}
}
],
"parameters": {
"profileName": {
"type": "string",
"defaultValue": "myContainerGroupProfile",
"metadata": {
"description": "Name of the container profile"
}
},
"location": {
"type": "string",
"defaultValue": "West Central US",
"metadata": {
"description": "Location for the resource"
}
},
"containerImage": {
"type": "string",
"defaultValue": "mcr.microsoft.com/azuredocs/aci-helloworld:latest",
"metadata": {
"description": "The container image used"
}
}
}
}
Creare un profilo del gruppo di contenitori con le impostazioni della mappa di configurazione usando Crea o Aggiorna.
PUT https://management.azure.com/subscriptions/{SubscriptionID}/resourceGroups/myResourceGroup/providers/Microsoft.ContainerInstance/containerGroupProfiles/myContainerGroupProfile?api-version=2024-05-01-preview
Request Body
{
"location": "West Central US",
"properties":{
"containers": [
{
"name":"myContainerGroupProfile",
"properties": {
"command":[],
"configMap": {
"keyValuePairs": {
"key1": "value1",
"key2": "value2"
}
},
"environmentVariables":[],
"image":"mcr.microsoft.com/azuredocs/aci-helloworld:latest",
"ports":[
{
"port":8000
}
],
"resources": {
"requests": {
"cpu":1,
"memoryInGB":1.5
}
}
}
}
],
"imageRegistryCredentials":[],
"ipAddress":{
"ports":[
{
"protocol":"TCP",
"port":8000
}
],
"type":"Public"
},
"osType":"Linux",
"sku":"Standard"
}
}
Applicare le impostazioni della mappa di configurazione usando il profilo del gruppo di contenitori
L'applicazione delle impostazioni della mappa di configurazione archiviate in un profilo del gruppo di contenitori richiede l'aggiornamento del contenitore. È inoltre necessario specificare il profilo del gruppo di contenitori che deve essere associato all'aggiornamento.
Applicare le impostazioni della mappa di configurazione archiviate nel profilo del gruppo di contenitori usando az container create.
az container create
--resource-group myResourceGroup \
--name myContainer \
--location WestCentralUS \
--container-group-profile-id "/subscriptions/{SubscriptionID}/resourceGroups/myResourceGroup/providers/Microsoft.ContainerInstance/containerGroupProfiles/myContainerGroupProfile" \
--container-group-profile-revision 1
Applicare le impostazioni della mappa di configurazione archiviate nel profilo del gruppo di contenitori usando New-AzContainerGroup.
$container = New-AzContainerInstancenoDefaultObject -Name myContainer
New-AzContainerGroup `
-ResourceGroupName myResourceGroup `
-Name myContainer`
-Container $container `
-Location WestCentralUS `
-ContainerGroupProfileId "/subscriptions/{SubscriptionID}/resourceGroups/myResourceGroup/providers/Microsoft.ContainerInstance/containerGroupProfiles/myContainerGroupProfile" `
-ContainerGroupProfileRevision 1
Applicare le impostazioni della mappa di configurazione archiviate nel profilo del gruppo di contenitori usando az deployment group create o New-AzResourceGroupDeployment.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"subscriptionId": {
"type": "string",
"metadata": {
"description": "The subscription ID."
}
},
"resourceGroup": {
"type": "string",
"metadata": {
"description": "The name of the resource group."
}
},
"location": {
"type": "string",
"metadata": {
"description": "Location for the resource."
},
"defaultValue": "West Central US"
},
"containerGroupName": {
"type": "string",
"metadata": {
"description": "The name of the container group."
}
},
},
"containerGroupProfileName": {
"type": "string",
"metadata": {
"description": "The name of the container group profile."
}
},
"newKey": {
"type": "string",
"metadata": {
"description": "The new key for the config map."
}
},
"newValue": {
"type": "string",
"metadata": {
"description": "The new value for the config map."
}
},
"revisionNumber": {
"type": "int",
"metadata": {
"description": "The revision number for the container group profile."
}
}
},
"resources": [
{
"type": "Microsoft.ContainerInstance/containerGroups",
"apiVersion": "2024-05-01-preview",
"name": "[parameters('containerGroupName')]",
"location": "[parameters('location')]",
"properties": {
"containerGroupProfile": {
"id": "[concat('/subscriptions/', parameters('subscriptionId'), '/resourceGroups/', parameters('resourceGroup'), '/providers/Microsoft.ContainerInstance/containerGroupProfiles/', parameters('containerGroupProfileName'))]",
"revision": "[parameters('revisionNumber')]"
},
"containers": [
{
"name": "[parameters('myContainerProfile')]",
"properties": {
"configMap": {
"keyValuePairs": {
"[parameters('newKey')]": "[parameters('newValue')]"
}
}
}
}
]
}
}
],
"outputs": {
"containerGroupId": {
"type": "string",
"value": "[resourceId('Microsoft.ContainerInstance/containerGroups', parameters('containerGroupName'))]"
}
}
}
Applicare le impostazioni della mappa di configurazione archiviate nel profilo del gruppo di contenitori usando Crea o Aggiorna.
PUT
https://management.azure.com/subscriptions/{SubscriptionID}/resourceGroups/myResourceGroup/providers/Microsoft.ContainerInstance/containerGroups/myContainerGroup?api-version=2024-05-01-preview
Request Body
{
"location": "{location}",
"properties": {
"containerGroupProfile": {
"id": "/subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.ContainerInstance/containerGroupProfiles/myContainerGroupProfile",
"revision": {revisionNumber}
},
"containers": [
{
"name": "{myContainerGroupProfile}",
"properties": {
}
}
]
}
}
Applicare le impostazioni della mappa di configurazione senza il profilo del gruppo di contenitori
È anche possibile applicare le impostazioni della mappa di configurazione direttamente all'istanza specificando le impostazioni della mappa di configurazione nei comandi di creazione.
Applicare le impostazioni della mappa di configurazione usando az container create.
az container create \
--resource-group myResourceGroup \
--name myContainer \
--location WestCentralUS \
--config-map key1=value1 key2=value2
Applicare le impostazioni della mappa di configurazione usando New-AzContainerGroup.
$container = New-AzContainerInstancenoDefaultObject -Name myContainer -ConfigMapKeyValuePair @{"key1"="value1"}
New-AzContainerGroup `
-ResourceGroupName myResourceGroup `
-Name myContainerGroup `
-Container $container `
-Location WestCentralUS
Applicare le impostazioni della mappa di configurazione usando az deployment group create o New-AzResourceGroupDeployment.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"subscriptionId": {
"type": "string",
"metadata": {
"description": "The subscription ID."
}
},
"resourceGroup": {
"type": "string",
"metadata": {
"description": "The name of the resource group."
}
},
"location": {
"type": "string",
"metadata": {
"description": "Location for the resource."
},
"defaultValue": "West Central US"
},
"containerGroupName": {
"type": "string",
"metadata": {
"description": "The name of the container group."
}
},
"myContainerProfile": {
"type": "string",
"metadata": {
"description": "The name of the container profile."
}
},
"newKey": {
"type": "string",
"metadata": {
"description": "The new key for the config map."
}
},
"newValue": {
"type": "string",
"metadata": {
"description": "The new value for the config map."
}
},
},
"resources": [
{
"type": "Microsoft.ContainerInstance/containerGroups",
"apiVersion": "2024-05-01-preview",
"name": "[parameters('containerGroupName')]",
"location": "[parameters('location')]",
"properties": {
"containers": [
{
"name": "[parameters('myContainerProfile')]",
"properties": {
"configMap": {
"keyValuePairs": {
"[parameters('newKey')]": "[parameters('newValue')]"
}
}
}
}
]
}
}
],
"outputs": {
"containerGroupId": {
"type": "string",
"value": "[resourceId('Microsoft.ContainerInstance/containerGroups', parameters('containerGroupName'))]"
}
}
}
Applicare le impostazioni della mappa di configurazione usando Crea o Aggiorna.
PUT
https://management.azure.com/subscriptions/{SubscriptionID}/resourceGroups/myResourceGroup/providers/Microsoft.ContainerInstance/containerGroups/myContainerGroup?api-version=2024-05-01-preview
Request Body
{
"location": "{location}",
"properties": {
"containers": [
{
"name": "{myContainerGroupProfile}",
"properties": {
"configMap": {
"keyValuePairs": {
"{newKey}": "{newValue}"
}
}
}
}
]
}
}
Mappe di configurazione nei contenitori Linux
Dopo l'applicazione dell'aggiornamento a un contenitore esistente, vengono visualizzati i valori montati nel contenitore Linux senza richiedere un riavvio.
/mnt/configmap/<containername>/key1 with value as "value1"
/mnt/configmap/<containername>/key2 with value as "value2"
Mappe di configurazione nei contenitori di Windows
Dopo l'applicazione dell'aggiornamento a un contenitore esistente, è possibile recuperare le coppie chiave/valore della mappa di configurazione nel contenitore di Windows effettuando la chiamata seguente, senza richiedere un riavvio. Questi valori non vengono montati ovunque per i contenitori Windows, come avviene per Linux.
Invoke-Expression "$Env:ConfigMapURI"
Contenuti correlati