Einbinden eines geheimen Volumes in Azure Container Instances
Verwenden Sie ein geheimes Volume, um für die Container in einer Containergruppe vertrauliche Informationen bereitzustellen. Das geheime Volume speichert Ihre Geheimnisse in Dateien im Volume, auf die die Container in der Containergruppe zugreifen können. Mit dem Speichern von Geheimnissen in einem geheimen Volume können Sie vermeiden, vertrauliche Daten wie SSH-Schlüssel oder Datenbankanmeldeinformationen dem Anwendungscode hinzuzufügen.
- Nach der Bereitstellung mit Geheimnissen in einer Containergruppe ist ein geheimes Volume schreibgeschützt.
- Tmpfs ist ein RAM-basiertes Dateisystem, das alle Geheimnisvolumes unterstützt. Die Inhalte werden niemals in permanenten Speicher geschrieben.
Hinweis
Geheime Volumes sind momentan auf Linux-Container beschränkt. Unter Festlegen von Umgebungsvariablen erfahren Sie, wie Sie sichere Umgebungsvariablen für Windows- und Linux-Container übergeben. Bis alle Features auch für Windows-Container verfügbar sind, finden Sie die aktuellen Plattformunterschiede in der Übersicht.
Einbinden eines geheimen Volumes – Azure CLI
Um einen Container mit einem oder mehreren Geheimnissen mit der Azure-Befehlszeilenschnittstelle bereitzustellen, verwenden Sie den Befehl az container create mit den Parametern --secrets
und --secrets-mount-path
. Dieses Beispiel bindet ein aus zwei Dateien, die die Geheimnisse „mysecret1“ und „mysecret2“ enthalten, bestehendes geheimes Volume unter /mnt/secrets
ein:
az container create \
--resource-group myResourceGroup \
--name secret-volume-demo \
--image mcr.microsoft.com/azuredocs/aci-helloworld \
--secrets mysecret1="My first secret FOO" mysecret2="My second secret BAR" \
--secrets-mount-path /mnt/secrets
Die folgende Ausgabe von az container exec zeigt das Öffnen einer Shell im ausgeführten Container, das Auflisten der Dateien im geheimen Volume und dann das Anzeigen ihrer Inhalte:
az container exec \
--resource-group myResourceGroup \
--name secret-volume-demo --exec-command "/bin/sh"
/usr/src/app # ls /mnt/secrets
mysecret1
mysecret2
/usr/src/app # cat /mnt/secrets/mysecret1
My first secret FOO
/usr/src/app # cat /mnt/secrets/mysecret2
My second secret BAR
/usr/src/app # exit
Bye.
Einbinden eines geheimen Volumes – YAML
Sie können auch Gruppen von Containern mit der Azure CLI und einer YAML-Vorlage bereitstellen. Die Bereitstellung der YAML-Vorlage ist die bevorzugte Methode bei der Bereitstellung von Containergruppen, die aus mehreren Containern bestehen.
Wenn Sie mit einer YAML-Vorlage bereitstellen, müssen die geheimen Werte in der Vorlage Base64-codiert sein. Allerdings werden die geheimen Werte in den Dateien im Container in Nur-Text-Form angezeigt.
Die folgende YAML-Vorlage definiert eine Containergruppe mit einem Container, der ein geheimes Volume unter /mnt/secrets
einbindet. Das geheime Volume verfügt über zwei Dateien, die die Geheimnisse „mysecret1“ und „mysecret2“ enthalten.
apiVersion: '2019-12-01'
location: eastus
name: secret-volume-demo
properties:
containers:
- name: aci-tutorial-app
properties:
environmentVariables: []
image: mcr.microsoft.com/azuredocs/aci-helloworld:latest
ports: []
resources:
requests:
cpu: 1.0
memoryInGB: 1.5
volumeMounts:
- mountPath: /mnt/secrets
name: secretvolume1
osType: Linux
restartPolicy: Always
volumes:
- name: secretvolume1
secret:
mysecret1: TXkgZmlyc3Qgc2VjcmV0IEZPTwo=
mysecret2: TXkgc2Vjb25kIHNlY3JldCBCQVIK
tags: {}
type: Microsoft.ContainerInstance/containerGroups
Um mit der YAML-Vorlage bereitzustellen, speichern Sie den vorherigen YAML-Code in einer Datei namens deploy-aci.yaml
und führen dann den Befehl az container create mit dem Parameter --file
aus:
# Deploy with YAML template
az container create \
--resource-group myResourceGroup \
--file deploy-aci.yaml
Einbinden eines geheimen Volumes – Resource Manager
Zusätzlich zur CLI- und YAML-Bereitstellung können Sie eine Containergruppe mit einer Azure Resource Manager-Vorlage bereitstellen.
Füllen Sie in der Vorlage zunächst das volumes
-Array im Abschnitt properties
für die Containergruppe auf. Wenn Sie mit einer Resource Manager-Vorlage bereitstellen, müssen die geheimen Werte in der Vorlage Base64-codiert sein. Allerdings werden die geheimen Werte in den Dateien im Container in Nur-Text-Form angezeigt.
Füllen Sie als Nächstes für jeden Container in der Containergruppe, in die Sie das geheime Volume einbinden möchten, das Array volumeMounts
im Abschnitt properties
der Containerdefinition auf.
Die folgende Resource Manager-Vorlage definiert eine Containergruppe mit einem Container, der ein geheimes Volume unter /mnt/secrets
einbindet. Das geheime Volume verfügt über zwei Geheimnisse, „mysecret1“ und „mysecret2“.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"variables": {
"container1name": "aci-tutorial-app",
"container1image": "microsoft/aci-helloworld:latest"
},
"resources": [
{
"type": "Microsoft.ContainerInstance/containerGroups",
"apiVersion": "2021-03-01",
"name": "secret-volume-demo",
"location": "[resourceGroup().location]",
"properties": {
"containers": [
{
"name": "[variables('container1name')]",
"properties": {
"image": "[variables('container1image')]",
"resources": {
"requests": {
"cpu": 1,
"memoryInGb": 1.5
}
},
"ports": [
{
"port": 80
}
],
"volumeMounts": [
{
"name": "secretvolume1",
"mountPath": "/mnt/secrets"
}
]
}
}
],
"osType": "Linux",
"ipAddress": {
"type": "Public",
"ports": [
{
"protocol": "tcp",
"port": "80"
}
]
},
"volumes": [
{
"name": "secretvolume1",
"secret": {
"mysecret1": "TXkgZmlyc3Qgc2VjcmV0IEZPTwo=",
"mysecret2": "TXkgc2Vjb25kIHNlY3JldCBCQVIK"
}
}
]
}
}
]
}
Um mit der Resource Manager-Vorlage bereitzustellen, speichern Sie den vorherigen JSON-Code in einer Datei namens deploy-aci.json
, und führen Sie dann den Befehl az deployment group create mit dem Parameter --template-file
aus:
# Deploy with Resource Manager template
az deployment group create \
--resource-group myResourceGroup \
--template-file deploy-aci.json
Nächste Schritte
Volumes
Erfahren Sie, wie andere Volumetypen in Azure Container Instances bereitgestellt werden:
- Einbinden einer Azure-Dateifreigabe in Azure Container Instances
- Einbinden eines emptyDir-Volumes in Azure Container Instances
- Einbinden eines gitRepo-Volumes in Azure Container Instances
Sichere Umgebungsvariablen
Eine andere Methode zum Bereitstellen von vertraulichen Informationen in Containern (einschließlich Windows-Containern) ist die Verwendung von sicheren Umgebungsvariablen.