Latihan - Simpan variabel dengan aman dalam rahasia
Membuat grup sumber daya dan kluster AKS
Catatan
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 sekarang, Anda dapat membaca petunjuk agar Anda memahami informasi yang sedang diberikan.
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
az group create
perintah .az group create --location $LOCATION --name $RESOURCE_GROUP
Buat kluster AKS menggunakan
az aks create
perintah .az aks create \ -g $RESOURCE_GROUP \ -n $CLUSTER_NAME \ --location $LOCATION \ --node-count 1 \ --node-vm-size Standard_B2s \ --generate-ssh-keys
Aktifkan add-on perutean aplikasi dengan perintah berikut.
az aks approuting enable -g $RESOURCE_GROUP -n $CLUSTER_NAME
Catatan
Jika Anda melihat pesan yang meminta Anda menginstal ekstensi pratinjau aks, masukkan
Y
untuk menginstalnya dan melanjutkan.Buat zona DNS menggunakan
az network dns zone create
perintah .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
az aks get-credentials
perintah .az aks get-credentials -n $CLUSTER_NAME -g $RESOURCE_GROUP
Membuat Rahasia
Catatan
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 MongoDB string koneksi sebagai variabel lingkungan.
Sebarkan database MongoDB untuk mendukung aplikasi menggunakan
az cosmosdb create
perintah .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
az cosmosdb keys list
perintah 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 dalam 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
kubectl apply
perintah .kubectl apply -f backend-secret.yaml
Periksa hasilnya dengan mengkueri rahasia menggunakan
kubectl get secret
perintah .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
Buat aplikasi
Buat file YAML baru bernama
backend-application.yaml
dan tempelkan dalam 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 tersebut
env
, kami menggunakanvalueFrom
kunci dansecretKeyRef
. Urutan kunci ini memberi tahu penyebaran untuk menggunakan nilai dari yangkey
ada di Rahasia yang ditentukan dalamname
kunci.Tambahkan tiga tanda hubung di bawah baris terakhir dalam
backend-application.yaml
file 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
kubectl apply
perintah .kubectl apply -f backend-application.yaml