Alıştırma - Gizli dizilerle değişkenleri güvenli bir şekilde depolama

Tamamlandı

Kaynak grubu ve AKS kümesi oluşturma

Not

Bu alıştırma isteğe bağlıdır. Bu alıştırmayı tamamlamak istiyorsanız başlamadan önce bir Azure aboneliği oluşturmanız gerekir. Azure hesabınız yoksa veya şu anda bir hesap oluşturmak istemiyorsanız, sunulan bilgileri anlamak için yönergeleri okuyabilirsiniz.

  1. Kaynak grubunuz, kümeniz, DNS bölgeniz ve konumunuz için ortam değişkenleri oluşturun. LOCATION değişkenini size en yakın bölgeyle (örneğin, eastus) güncelleştirdiğinizden emin olun.

    export RESOURCE_GROUP=rg-ship-manager
    export CLUSTER_NAME=ship-manager-cluster
    export ZONE_NAME=ship-$RANDOM.com
    export LOCATION={location}
    
  2. Ortam değişkenlerinizin değerlerini görüntülemek ve daha sonra kullanmak üzere not almak için aşağıdaki komutu çalıştırın.

    echo "RESOURCE_GROUP:" $RESOURCE_GROUP
    echo "CLUSTER_NAME:"$CLUSTER_NAME
    echo "ZONE_NAME:" $ZONE_NAME
    echo "LOCATION:"$LOCATION
    
  3. komutunu kullanarak az group create bir kaynak grubu oluşturun.

    az group create --location $LOCATION --name $RESOURCE_GROUP
    
  4. komutunu kullanarak az aks create bir AKS kümesi oluşturun.

    az aks create \
     -g $RESOURCE_GROUP \
     -n $CLUSTER_NAME \
     --location $LOCATION \
     --node-count 1 \
     --node-vm-size Standard_B2s \
     --generate-ssh-keys
    
  5. Aşağıdaki komutla uygulama yönlendirme eklentisini etkinleştirin.

    az aks approuting enable -g $RESOURCE_GROUP -n $CLUSTER_NAME
    

    Not

    aks-preview uzantısını yüklemenizi isteyen bir ileti görürseniz, yüklemek için girin Y ve devam edin.

  6. komutunu kullanarak az network dns zone create bir DNS bölgesi oluşturun.

    az network dns zone create -g $RESOURCE_GROUP -n $ZONE_NAME
    
  7. DNS bölgenizin kimliğini alın ve komutunun bir parçası olarak kullanarak bölgeyi uygulama yönlendirme için kümenize ekleyin.

    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. komutunu kullanarak az aks get-credentials kümenizin kimlik bilgilerini alın.

    az aks get-credentials -n $CLUSTER_NAME -g $RESOURCE_GROUP
    

Gizli Dizi Oluşturma

Not

Uygulama belgelerinde bu uygulamanın iki bölümü olduğunu görebilirsiniz: ön uç ve arka uç. Ortam değişkeni olarak MongoDB bağlantı dizesi olduğundan yalnızca arka ucun gizli dizi kullanması gerekir.

  1. komutunu kullanarak uygulamayı desteklemek için bir MongoDB veritabanı dağıtın az cosmosdb create .

    export DATABASE_NAME=contoso-ship-manager-$RANDOM && \
    az cosmosdb create \
     -n $DATABASE_NAME \
     -g $RESOURCE_GROUP \
     --kind MongoDB
    
  2. Veritabanı oluşturulduktan sonra komutunu kullanarak az cosmosdb keys list bağlantı dizesi alın ve çıkış değerini kopyalayın.

    az cosmosdb keys list \
      --type connection-strings \
      -g $RESOURCE_GROUP \
      -n $DATABASE_NAME \
      -o tsv \
      --query "connectionStrings[0].connectionString"
    
  3. Adlı backend-secret.yaml yeni bir YAML dosyası oluşturun ve Gizli dizi belirtimini oluşturmak için aşağıdaki kodu yapıştırın. Yer tutucu dizesini önceki çıktıdaki bağlantı dizesi değiştirmeyi unutmayın.

    apiVersion: v1
    kind: Secret
    metadata:
      name: ship-manager-database
      namespace: default
    type: Opaque
    stringData:
      database_mongodb_uri: "<paste the connection string here>"
    
  4. Dosyayı kaydedip kapatın

  5. komutunu kullanarak gizli diziyi kubectl apply uygulayın.

    kubectl apply -f backend-secret.yaml
    
  6. komutunu kullanarak kubectl get secret gizli diziyi sorgulayarak sonucu denetleyin.

    kubectl get secret ship-manager-database
    

    Aşağıdaki örneğe benzer bir çıkış almalısınız:

    NAME                    TYPE     DATA   AGE
    ship-manager-database   Opaque   1      5s
    

Uygulamayı oluşturma

  1. Adlı backend-application.yaml yeni bir YAML dosyası oluşturun ve Dağıtım belirtimini oluşturmak için aşağıdaki kodu yapıştırın.

    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
    

    env bölümünde ve tuşlarını valueFrom kullandığımıza secretKeyRef dikkat edin. Bu anahtarların sırası, dağıtıma anahtarda tanımlanan name Gizli dizideki mevcut değerden key değerini kullanmasını söyler.

  2. Sonraki bölümü ayırmak için dosyadaki son satırın backend-application.yaml altına üç tire ekleyin.

    # 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. Üç tirenin altına aşağıdaki kodu yapıştırarak Giriş belirtimini oluşturun.

    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. içindeki host: DNS bölgesini DNS bölgenizin adıyla eşleşecek şekilde değiştirin. Daha önce oluşturduğunuz ZONE_NAME değişkeninin değerini kullanın.

  5. Dosyayı kaydedip kapatın

  6. komutunu kullanarak kubectl apply değişiklikleri kümenize uygulayın.

    kubectl apply -f backend-application.yaml