Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
L'interfaccia della riga di comando per sviluppatori di Azure offre supporto per Helm e Kustomize per migliorare il processo di provisioning e distribuzione su Azure Kubernetes Service (AKS). Helm e Kustomize sono strumenti che consentono di configurare e gestire le applicazioni Kubernetes. Nelle sezioni successive si apprenderà come abilitare e personalizzare il supporto per questi strumenti nei azd modelli.
Abilitare il supporto Helm
Per abilitare il supporto Helm, accertarsi di avere installato la CLI Helm. Abilitare il azd flag di funzionalità helm eseguendo il azd config comando :
azd config set alpha.aks.helm on
Configurazione e distribuzione Helm
azd Il supporto Helm consente di definire un elenco di grafici Helm da installare per ogni azd servizio. Usare le sezioni di configurazione helm e k8s nel file azure.yaml per definire un elenco di repository Helm o release da installare.
name: todo-nodejs-mongo-aks
metadata:
template: todo-nodejs-mongo-aks@0.0.1-beta
services:
argocd:
host: aks
k8s:
namespace: argo
service:
name: argocd-server
helm:
repositories:
- name: argo
url: https://argoproj.github.io/argo-helm
releases:
- name: argocd
chart: argo/argo-cd
version: 5.51.4
jupyterhub:
host: aks
k8s:
namespace: jupyterhub
service:
name: proxy-public
helm:
repositories:
- name: jupyterhub
url: https://hub.jupyter.org/helm-chart/
releases:
- name: jupyterhub
chart: jupyterhub/jupyterhub
version: 3.1.0
Il azd deploy comando gestisce le attività seguenti usando la helm sezione :
- Aggiunge eventuali repository Helm a cui si fa riferimento e/o li aggiorna
- Installa i grafici Helm a cui si fa riferimento
- Attende che il rilascio di Helm passi a uno stato distribuito
- Elenca i servizi e i dati in ingresso pertinenti definiti all'interno delle risorse distribuite
Abilitare il supporto di Kustomize
Per abilitare il supporto di Kustomize, assicurarsi di avere installato l'interfaccia della riga di comando kustomize. Abilitare la funzionalità Kustomize mediante il flag di comando azdazd config.
azd config set alpha.aks.kustomize on
Kustomize: configurazione e distribuzione
La funzionalità Kustomize consente di usare Kustomize come parte delle distribuzioni kubernetes e offre le funzionalità seguenti:
- Supporta
baseevariantconfigurazioni -
editsche può essere eseguito prima delle distribuzioni -
configMapGeneratorin ambientiazd
Configurare le funzionalità kustomize usando le sezioni seguenti azure.yaml :
-
dir: percorso relativo dal servizio alla directory di Kustomize che contiene un filekustomization.yaml.- Supporta la sostituzione delle variabili di ambiente.
-
edits: matrice di espressioni di modifica applicate prima della distribuzione- Supporta la sostituzione delle variabili di ambiente
-
env: mappa delle coppie chiave/valore generate prima della distribuzione- I valori di mapping supportano la sostituzione delle variabili di ambiente
Casi d'uso
azd supporta i seguenti casi d'uso Kustomize.
Distribuire manifesti K8s
La configurazione seguente esegue un kubectl apply -k <dir> comando che punta alla cartella manifesti che contiene un oggetto kustomization.yaml:
# azure.yaml
name: todo-nodejs-mongo-aks
metadata:
template: todo-nodejs-mongo-aks@0.0.1-beta
services:
api:
project: ./src/api
language: js
host: aks
k8s:
kustomize:
dir: ./kustomize/base
Usare le sovrimpressioni per la distribuzione in con varianti diverse
Questo caso d'uso viene in genere usato per avere configurazioni personalizzate per la distribuzione in diverse fasi o ambienti, ad esempio dev, test e prod. Nell'esempio seguente l'utente può specificare la ${AZURE_ENV_NAME} variabile di ambiente all'interno della directory kustomize per usare automaticamente gli ambienti azd come convenzione di sovrapposizione predefinita:
# azure.yaml
name: todo-nodejs-mongo-aks
metadata:
template: todo-nodejs-mongo-aks@0.0.1-beta
services:
api:
project: ./src/api
language: js
host: aks
k8s:
kustomize:
dir: ./kustomize/overlays/${AZURE_ENV_NAME}
Modificare kustomization.yaml prima della distribuzione
Un caso d'uso comune per la modifica di kustomization.yaml è la modifica dei nomi o delle versioni dell'immagine del contenitore usati come parte della distribuzione.
Nell'esempio seguente viene specificata una edits configurazione e viene impostato qualsiasi comando valido kustomize edit ... .
azd interpola automaticamente tutte le variabili di ambiente a cui si fa riferimento all'interno del edit comando .
# azure.yaml
name: todo-nodejs-mongo-aks
metadata:
template: todo-nodejs-mongo-aks@0.0.1-beta
services:
api:
project: ./src/api
language: js
host: aks
k8s:
kustomize:
dir: ./kustomize/overlays/${AZURE_ENV_NAME}
edits:
- set image todo-api=${SERVICE_API_IMAGE_NAME}
Usare azd le variabili di ambiente all'interno delle mappe di configurazione
Le mappe di configurazione o i segreti sono fondamentali per la configurazione dei cluster K8s. Poiché kustomize non supporta alcuna sostituzione diretta di variabili di ambiente , è possibile usare kustomize configMapGenerator con un .env file.
La kustomize sezione di configurazione supporta una env sezione in cui è possibile definire una o più coppie chiave/valore. Questa configurazione genera automaticamente un file temporaneo .env all'interno della directory kustomization che può essere usato da un configMapGenerator.
La configurazione seguente crea un oggetto .env con le coppie chiave/valore specificate.
# azure.yaml
name: todo-nodejs-mongo-aks
metadata:
template: todo-nodejs-mongo-aks@0.0.1-beta
services:
api:
project: ./src/api
language: js
host: aks
k8s:
kustomize:
dir: ./kustomize/overlays/${AZURE_ENV_NAME}
edits:
- set image todo-api=${SERVICE_API_IMAGE_NAME}
env:
AZURE_AKS_IDENTITY_CLIENT_ID: ${AZURE_AKS_IDENTITY_CLIENT_ID}
AZURE_KEY_VAULT_ENDPOINT: ${AZURE_KEY_VAULT_ENDPOINT}
APPLICATIONINSIGHTS_CONNECTION_STRING: ${APPLICATIONINSIGHTS_CONNECTION_STRING}
configMapGenerator genera una mappa di configurazione K8s con il nome specificato e contiene tutte le coppie chiave/valore a cui si fa riferimento all'interno del .env file.
# kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- deployment.yaml
- service.yaml
- ingress.yaml
configMapGenerator:
- name: todo-web-config
envs:
- .env