Cvičení – bezpečné ukládání proměnných do tajných kódů

Dokončeno

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.

  1. 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, eastusnapříklad .

    export RESOURCE_GROUP=rg-ship-manager
    export CLUSTER_NAME=ship-manager-cluster
    export ZONE_NAME=ship-$RANDOM.com
    export LOCATION={location}
    
  2. 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
    
  3. Pomocí příkazu vytvořte skupinu az group create prostředků.

    az group create --location $LOCATION --name $RESOURCE_GROUP
    
  4. 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
    
  5. 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.

  6. Pomocí příkazu vytvořte zónu az network dns zone create DNS.

    az network dns zone create -g $RESOURCE_GROUP -n $ZONE_NAME
    
  7. 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
    
  8. 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í.

  1. 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
    
  2. 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"
    
  3. 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>"
    
  4. Soubor uložte a zavřete.

  5. Použijte tajný kód pomocí kubectl apply příkazu.

    kubectl apply -f backend-secret.yaml
    
  6. 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

  1. 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áme valueFrom klíče a secretKeyRef klíče. Pořadí těchto klíčů říká nasazení, aby použilo hodnotu z key přítomnosti v tajném kódu definovaném v klíči name .

  2. 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
    ---
    
  3. 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
    
  4. 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.

  5. Soubor uložte a zavřete.

  6. Pomocí příkazu použijte změny v clusteru kubectl apply .

    kubectl apply -f backend-application.yaml