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í je volitelné. 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ů, klastr, zónu DNS a lokalitu. Nezapomeňte aktualizovat proměnnou LOCATION s oblastí, která je k vám nejblíže, například
eastus
.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
az group create
vytvořte skupinu prostředků.az group create --location $LOCATION --name $RESOURCE_GROUP
Vytvořte cluster AKS pomocí příkazu
az aks create
.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
Y
, abyste ho nainstalovali a mohli pokračovat.Vytvořte zónu DNS pomocí příkazu
az network dns zone create
.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
az aks get-credentials
získejte přihlašovací údaje pro váš cluster.az aks get-credentials -n $CLUSTER_NAME -g $RESOURCE_GROUP
Vytvoření tajného kódu
Poznámka
V dokumentaci aplikace můžete vidět, že tato aplikace má dvě části: frontend a backend. Tajný klíč musí používat jenom back-end, protože má připojovací řetězec MongoDB jako proměnnou prostředí.
Nasaďte databázi MongoDB pro podporu aplikace pomocí příkazu
az cosmosdb create
.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í příkazu
az cosmosdb keys list
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 následující kód, který vytvoří specifikaci tajného kódu. Nezapomeňte nahradit zástupný řetězec připojovacím řetězcem 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>"
Uložte a zavřete soubor.
Použijte tajný kód pomocí příkazu
kubectl apply
.kubectl apply -f backend-secret.yaml
Pomocí příkazu
kubectl get secret
zkontrolujte výsledek dotazem na tajný kód.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 části
env
používámevalueFrom
a klíčesecretKeyRef
. Pořadí těchto klíčů instruuje nasazení, aby použilo hodnotu zkey
přítomnou v tajemství definovaném v klíčiname
.Přidejte tři pomlčky pod poslední řádek v souboru
backend-application.yaml
a oddělte tak 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 pro vytvoření specifikace Ingress.
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 v
host:
tak, aby odpovídala názvu vaší zóny DNS. Použijte hodnotu proměnné ZONE_NAME, kterou jste vytvořili dříve.Uložte a zavřete soubor.
Aplicujte změny na váš cluster pomocí příkazu
kubectl apply
.kubectl apply -f backend-application.yaml