Alıştırma - Gizli dizilerle değişkenleri güvenli bir şekilde depolama
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.
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}
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
komutunu kullanarak
az group create
bir kaynak grubu oluşturun.az group create --location $LOCATION --name $RESOURCE_GROUP
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
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.komutunu kullanarak
az network dns zone create
bir DNS bölgesi oluşturun.az network dns zone create -g $RESOURCE_GROUP -n $ZONE_NAME
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
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.
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
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"
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>"
Dosyayı kaydedip kapatın
komutunu kullanarak gizli diziyi
kubectl apply
uygulayın.kubectl apply -f backend-secret.yaml
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
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ızasecretKeyRef
dikkat edin. Bu anahtarların sırası, dağıtıma anahtarda tanımlananname
Gizli dizideki mevcut değerdenkey
değerini kullanmasını söyler.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 ---
Üç 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
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.Dosyayı kaydedip kapatın
komutunu kullanarak
kubectl apply
değişiklikleri kümenize uygulayın.kubectl apply -f backend-application.yaml