Latihan - Menyimpan variabel dengan aman dalam rahasia
Membuat grup sumber daya dan kluster AKS
Nota
Latihan ini bersifat opsional. Jika Anda ingin menyelesaikan latihan ini, Anda harus membuat langganan Azure sebelum memulai. Jika Anda tidak memiliki akun Azure atau tidak ingin membuatnya saat ini, Anda dapat membaca instruksi sehingga Anda memahami informasi yang sedang disajikan.
Buat variabel lingkungan untuk grup sumber daya, kluster, zona DNS, dan lokasi Anda. Pastikan Anda memperbarui variabel LOCATION dengan wilayah yang paling dekat dengan Anda, misalnya,
eastus
.export RESOURCE_GROUP=rg-ship-manager export CLUSTER_NAME=ship-manager-cluster export ZONE_NAME=ship-$RANDOM.com export LOCATION={location}
Jalankan perintah berikut untuk melihat nilai variabel lingkungan Anda dan catat untuk digunakan nanti.
echo "RESOURCE_GROUP:" $RESOURCE_GROUP echo "CLUSTER_NAME:"$CLUSTER_NAME echo "ZONE_NAME:" $ZONE_NAME echo "LOCATION:"$LOCATION
Buat grup sumber daya menggunakan perintah
az group create
.az group create --location $LOCATION --name $RESOURCE_GROUP
Buat kluster AKS menggunakan perintah
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
Aktifkan plugin perutean aplikasi dengan perintah berikut.
az aks approuting enable -g $RESOURCE_GROUP -n $CLUSTER_NAME
Nota
Jika Anda melihat pesan yang meminta Anda menginstal ekstensi aks-preview, masukkan
Y
untuk menginstalnya dan melanjutkan.Buat zona DNS menggunakan perintah
az network dns zone create
.az network dns zone create -g $RESOURCE_GROUP -n $ZONE_NAME
Ambil ID zona DNS Anda dan gunakan sebagai bagian dari perintah untuk menambahkan zona ke kluster Anda untuk perutean aplikasi.
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
Dapatkan kredensial untuk kluster Anda menggunakan perintah
az aks get-credentials
.az aks get-credentials -n $CLUSTER_NAME -g $RESOURCE_GROUP
Membuat Rahasia
Nota
Dalam dokumentasi aplikasi , Anda dapat melihat aplikasi ini memiliki dua bagian: ujung depan dan ujung belakang. Hanya back end yang perlu menggunakan Rahasia, karena memiliki string koneksi MongoDB sebagai variabel lingkungan.
Sebarkan database MongoDB untuk mendukung aplikasi menggunakan perintah
az cosmosdb create
.export DATABASE_NAME=contoso-ship-manager-$RANDOM && \ az cosmosdb create \ -n $DATABASE_NAME \ -g $RESOURCE_GROUP \ --kind MongoDB
Setelah database dibuat, dapatkan string koneksi menggunakan perintah
az cosmosdb keys list
dan salin nilai output.az cosmosdb keys list \ --type connection-strings \ -g $RESOURCE_GROUP \ -n $DATABASE_NAME \ -o tsv \ --query "connectionStrings[0].connectionString"
Buat file YAML baru bernama
backend-secret.yaml
dan tempelkan kode berikut untuk membuat spesifikasi Rahasia. Pastikan untuk mengganti string tempat penampung dengan string koneksi dari output sebelumnya.apiVersion: v1 kind: Secret metadata: name: ship-manager-database namespace: default type: Opaque stringData: database_mongodb_uri: "<paste the connection string here>"
Simpan dan tutup file.
Terapkan rahasia menggunakan perintah
kubectl apply
.kubectl apply -f backend-secret.yaml
Periksa hasilnya dengan mengkueri rahasia menggunakan perintah
kubectl get secret
.kubectl get secret ship-manager-database
Anda harus mendapatkan output yang mirip dengan contoh berikut:
NAME TYPE DATA AGE ship-manager-database Opaque 1 5s
Membuat aplikasi
Buat file YAML baru bernama
backend-application.yaml
dan tempelkan kode berikut untuk membuat spesifikasi Penyebaran.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
Perhatikan bahwa di bagian
env
, kami menggunakanvalueFrom
dan kuncisecretKeyRef
. Urutan kunci ini memberi tahu penyebaran untuk menggunakan nilai darikey
yang ada di Secret yang ditentukan dalam kunciname
.Tambahkan tiga tanda hubung di bawah baris terakhir dalam file
backend-application.yaml
untuk memisahkan bagian berikutnya.# 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 ---
Di bawah tiga tanda hubung, tempelkan kode berikut untuk membuat spesifikasi 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
Ubah zona DNS di
host:
agar sesuai dengan nama zona DNS Anda. Gunakan nilai variabel ZONE_NAME yang Anda buat sebelumnya.Simpan dan tutup file.
Terapkan perubahan pada kluster Anda menggunakan perintah
kubectl apply
.kubectl apply -f backend-application.yaml