Cvičení – bezpečné ukládání proměnných do tajných kódů
Vytvoření skupiny prostředků a clusteru AKS
Poznámka:
Toto cvičení není povinné. Pokud chcete absolvovat toto cvičení, budete muset před zahájením vytvořit předplatné Azure. Pokud nemáte účet Azure nebo ho v tuto chvíli nechcete vytvořit, můžete si přečíst pokyny, abyste porozuměli zobrazeným informacím.
Vytvořte proměnné prostředí pro vaši skupinu prostředků, cluster, zónu DNS a umístění. Nezapomeňte aktualizovat proměnnou LOCATION s oblastí, která je k vám nejblíže,
eastus
například .export RESOURCE_GROUP=rg-ship-manager export CLUSTER_NAME=ship-manager-cluster export ZONE_NAME=ship-$RANDOM.com export LOCATION={location}
Spuštěním následujícího příkazu zobrazte hodnoty proměnných prostředí a poznamenejte si je pro pozdější použití.
echo "RESOURCE_GROUP:" $RESOURCE_GROUP echo "CLUSTER_NAME:"$CLUSTER_NAME echo "ZONE_NAME:" $ZONE_NAME echo "LOCATION:"$LOCATION
Pomocí příkazu vytvořte skupinu
az group create
prostředků.az group create --location $LOCATION --name $RESOURCE_GROUP
Pomocí příkazu vytvořte cluster
az aks create
AKS.az aks create \ -g $RESOURCE_GROUP \ -n $CLUSTER_NAME \ --location $LOCATION \ --node-count 1 \ --node-vm-size Standard_B2s \ --generate-ssh-keys
Pomocí následujícího příkazu povolte doplněk pro směrování aplikací.
az aks approuting enable -g $RESOURCE_GROUP -n $CLUSTER_NAME
Poznámka:
Pokud se zobrazí zpráva s výzvou k instalaci rozšíření aks-preview , zadejte ji a nainstalujte
Y
ji a pokračujte.Pomocí příkazu vytvořte zónu
az network dns zone create
DNS.az network dns zone create -g $RESOURCE_GROUP -n $ZONE_NAME
Načtěte ID zóny DNS a použijte ho jako součást příkazu k přidání zóny do clusteru pro směrování aplikací.
ZONEID=$(az network dns zone show -g $RESOURCE_GROUP -n $ZONE_NAME --query "id" --output tsv) az aks approuting zone add -g $RESOURCE_GROUP -n $CLUSTER_NAME --ids=${ZONEID} --attach-zones
Pomocí příkazu získejte přihlašovací údaje pro váš cluster
az aks get-credentials
.az aks get-credentials -n $CLUSTER_NAME -g $RESOURCE_GROUP
Vytvoření tajného kódu
Poznámka:
V dokumentaci k aplikaci vidíte, že tato aplikace má dvě části: front-end a back-end. Tajný kód musí používat pouze back-end, protože má připojovací řetězec MongoDB jako proměnnou prostředí.
Nasaďte databázi MongoDB pro podporu aplikace pomocí
az cosmosdb create
příkazu.export DATABASE_NAME=contoso-ship-manager-$RANDOM && \ az cosmosdb create \ -n $DATABASE_NAME \ -g $RESOURCE_GROUP \ --kind MongoDB
Po vytvoření databáze získejte připojovací řetězec pomocí
az cosmosdb keys list
příkazu a zkopírujte výstupní hodnotu.az cosmosdb keys list \ --type connection-strings \ -g $RESOURCE_GROUP \ -n $DATABASE_NAME \ -o tsv \ --query "connectionStrings[0].connectionString"
Vytvořte nový soubor YAML s názvem
backend-secret.yaml
a vložte do následujícího kódu specifikaci tajného kódu. Nezapomeňte nahradit zástupný řetězec připojovací řetězec z předchozího výstupu.apiVersion: v1 kind: Secret metadata: name: ship-manager-database namespace: default type: Opaque stringData: database_mongodb_uri: "<paste the connection string here>"
Soubor uložte a zavřete.
Použijte tajný kód pomocí
kubectl apply
příkazu.kubectl apply -f backend-secret.yaml
Pomocí příkazu zkontrolujte výsledek dotazem na tajný kód
kubectl get secret
.kubectl get secret ship-manager-database
Měl by se zobrazit výstup podobný následujícímu příkladu:
NAME TYPE DATA AGE ship-manager-database Opaque 1 5s
Vytvoření aplikace
Vytvořte nový soubor YAML s názvem
backend-application.yaml
a vložte následující kód, který vytvoří specifikaci nasazení.apiVersion: apps/v1 kind: Deployment metadata: name: ship-manager-backend namespace: default spec: replicas: 1 selector: matchLabels: app: ship-manager-backend template: metadata: labels: app: ship-manager-backend spec: containers: - image: mcr.microsoft.com/mslearn/samples/contoso-ship-manager:backend name: ship-manager-backend ports: - containerPort: 3000 name: http env: - name: DATABASE_MONGODB_URI valueFrom: secretKeyRef: key: database_mongodb_uri name: ship-manager-database - name: DATABASE_MONGODB_DBNAME value: ship_manager
Všimněte si, že v
env
části používámevalueFrom
klíče asecretKeyRef
klíče. Pořadí těchto klíčů říká nasazení, aby použilo hodnotu zkey
přítomnosti v tajném kódu definovaném v klíčiname
.Přidejte tři pomlčky pod poslední řádek v
backend-application.yaml
souboru, abyste oddělily další oddíl.# Previous lines from the deployment value: ship_manager --- apiVersion: v1 kind: Service metadata: name: ship-manager-backend namespace: default spec: selector: app: ship-manager-backend ports: - name: http port: 80 targetPort: 3000 ---
Pod tři pomlčky vložte následující kód a vytvořte specifikaci příchozího přenosu dat.
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ship-manager-backend namespace: default annotations: spec.ingressClassName: webapprouting.kubernetes.azure.com spec: rules: - host: ship-manager-backend.<paste the ZONE_NAME here> http: paths: - path: / pathType: Prefix backend: service: name: ship-manager-backend port: name: http
Změňte zónu DNS tak
host:
, aby odpovídala názvu vaší zóny DNS. Použijte hodnotu proměnné ZONE_NAME, kterou jste vytvořili dříve.Soubor uložte a zavřete.
Pomocí příkazu použijte změny v clusteru
kubectl apply
.kubectl apply -f backend-application.yaml