Montar um volume secreto no Azure Container Instances
Use um volume secreto para fornecer informações confidenciais aos contêineres em um grupo de contêineres. O volume secreto armazena seus segredos em arquivos dentro do volume, acessíveis pelos contêineres no grupo de contêineres. Ao armazenar segredos em um volume secreto , você pode evitar a adição de dados confidenciais, como chaves SSH ou credenciais de banco de dados, ao código do aplicativo.
- Uma vez implantado com segredos em um grupo de contêineres, um volume secreto é somente leitura.
- Todos os volumes secretos são apoiados pelo tmpfs, um sistema de arquivos apoiado pela RAM, e seu conteúdo nunca é gravado em armazenamento não volátil.
Nota
Os volumes secretos estão atualmente restritos a contêineres Linux. Saiba como passar variáveis de ambiente seguro para contêineres Windows e Linux em Definir variáveis de ambiente. Enquanto estamos trabalhando para trazer todos os recursos para contêineres do Windows, você pode encontrar as diferenças atuais da plataforma na visão geral.
Montar volume secreto - CLI do Azure
Para implantar um contêiner com um ou mais segredos usando a CLI do Azure, inclua os --secrets
parâmetros e --secrets-mount-path
no comando az container create . Este exemplo monta um volume secreto que consiste em dois arquivos contendo segredos, "mysecret1" e "mysecret2", em /mnt/secrets
:
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
A seguinte saída az container exec mostra a abertura de um shell no contêiner em execução, listando os arquivos dentro do volume secreto e, em seguida, exibindo seu conteúdo:
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.
Monte volume secreto - YAML
Você também pode implantar grupos de contêineres com a CLI do Azure e um modelo YAML. A implantação pelo modelo YAML é o método preferencial ao implantar grupos de contêineres que consistem em vários contêineres.
Quando você implanta com um modelo YAML, os valores secretos devem ser codificados em Base64 no modelo. No entanto, os valores secretos aparecem em texto sem formatação dentro dos arquivos no contêiner.
O modelo YAML a seguir define um grupo de contêineres com um contêiner que monta um volume secreto em /mnt/secrets
. O volume secreto tem dois arquivos contendo segredos, "mysecret1" e "mysecret2".
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
Para implantar com o modelo YAML, salve o YAML anterior em um arquivo chamado deploy-aci.yaml
e, em seguida, execute o comando az container create com o --file
parâmetro:
# Deploy with YAML template
az container create \
--resource-group myResourceGroup \
--file deploy-aci.yaml
Montar volume secreto - Resource Manager
Além da implantação da CLI e do YAML, você pode implantar um grupo de contêineres usando um modelo do Azure Resource Manager.
Primeiro, preencha a volumes
matriz na seção de grupo properties
de contêineres do modelo. Quando você implanta com um modelo do Gerenciador de Recursos, os valores secretos devem ser codificados em Base64 no modelo. No entanto, os valores secretos aparecem em texto sem formatação dentro dos arquivos no contêiner.
Em seguida, para cada contêiner no grupo de contêineres no qual você deseja montar o volume secreto, preencha a volumeMounts
properties
matriz na seção da definição de contêiner.
O modelo do Gerenciador de Recursos a seguir define um grupo de contêineres com um contêiner que monta um volume secreto em /mnt/secrets
. O volume secreto tem dois segredos, "mysecret1" e "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"
}
}
]
}
}
]
}
Para implantar com o modelo do Gerenciador de Recursos, salve o JSON anterior em um arquivo chamado deploy-aci.json
e, em seguida, execute o comando az deployment group create com o --template-file
parâmetro:
# Deploy with Resource Manager template
az deployment group create \
--resource-group myResourceGroup \
--template-file deploy-aci.json
Próximos passos
Volumes
Saiba como montar outros tipos de volume em Instâncias de Contêiner do Azure:
- Montar uma partilha de ficheiros do Azure no Azure Container Instances
- Montar um volume emptyDir no Azure Container Instances
- Montar um volume gitRepo no Azure Container Instances
Variáveis de ambiente seguro
Outro método para fornecer informações confidenciais a contêineres (incluindo contêineres do Windows) é através do uso de variáveis de ambiente seguro.