Mulai cepat: Menyebarkan kluster Azure Kubernetes Service (AKS) menggunakan portal Azure
Azure Kubernetes Service (AKS) merupakan layanan Kube terkelola yang memungkinkan Anda menyebarkan dan mengelola kluster dengan cepat. Dalam mulai cepat ini, Anda akan:
- Menyebarkan kluster AKS dengan menggunakan portal Microsoft Azure.
- Jalankan contoh aplikasi multi-kontainer dengan sekelompok layanan mikro dan ujung depan web yang mensimulasikan skenario ritel.
Catatan
Untuk memulai provisi kluster AKS dengan cepat, artikel ini menyertakan langkah-langkah untuk menyebarkan kluster dengan pengaturan default hanya untuk tujuan evaluasi. Sebelum menyebarkan kluster siap produksi, kami sarankan Anda membiasakan diri dengan arsitektur referensi dasar kami untuk mempertimbangkan bagaimana kluster tersebut selaras dengan kebutuhan bisnis Anda.
Sebelum Anda mulai
Mulai cepat ini mengasumsikan pemahaman dasar tentang konsep Kube. Untuk informasi lebih, lihat konsep inti Kubernetes untuk Azure Kubernetes Service (AKS).
- Jika Anda tidak memiliki Langganan Azure, buat Akun gratis Azure sebelum memulai.
- Jika Anda tidak terbiasa dengan Azure Cloud Shell, tinjau Gambaran Umum Azure Cloud Shell.
- Pastikan bahwa identitas yang Anda gunakan untuk membuat kluster Anda memiliki izin minimum yang sesuai. Untuk informasi selengkapnya tentang akses dan identitas AKS, lihat Opsi akses dan identitas untuk Azure Kubernetes Service (AKS).
Catatan
Kumpulan simpul Azure Linux sekarang tersedia secara umum (GA). Untuk mempelajari tentang manfaat dan langkah-langkah penyebaran, lihat Pengantar Host Kontainer Azure Linux untuk AKS.
Membuat kluster AKS
Masuk ke portal Azure.
Pada beranda portal Microsoft Azure, pilih Membuat sumber daya.
Di bagian Kategori , pilih Kontainer>Azure Kubernetes Service (AKS).
Di tab Dasar, konfigurasikan pengaturan berikut:
- Di bawah Detail proyek:
- Langganan: Pilih langganan Azure yang ingin Anda gunakan untuk kluster AKS ini.
- Grup sumber daya: Pilih Buat baru, masukkan nama grup sumber daya, seperti myResourceGroup, lalu pilih Ok. Meskipun Anda dapat memilih grup sumber daya yang ada, untuk tujuan pengujian atau evaluasi, sebaiknya buat grup sumber daya untuk menghosting sumber daya ini untuk sementara waktu dan menghindari dampak beban kerja produksi atau pengembangan Anda.
- Di bawah Detail kluster:
Konfigurasi prasetel kluster: Pilih Dev/Test. Untuk detail selengkapnya tentang konfigurasi pra-setel, lihat Preset konfigurasi klaster di portal Microsoft Azure.
Nama kluster Kubernetes: Masukkan nama kluster, seperti myAKSCluster.
Wilayah: Pilih wilayah, seperti US Timur 2.
Zona ketersediaan: Pilih Tidak Ada.
Tingkat harga AKS: Pilih Gratis.
Biarkan nilai default untuk pengaturan yang tersisa, dan pilih Berikutnya.
- Di bawah Detail proyek:
Pada tab Kumpulan simpul, konfigurasikan pengaturan berikut:
Pilih Tambahkan kumpulan simpul dan masukkan nama kumpulan Simpul, seperti nplinux.
Mode: Pilih Pengguna.
OS SKU: Pilih Ubuntu Linux.
Zona ketersediaan: Pilih Tidak Ada.
Biarkan kotak centang Aktifkan instans Azure Spot tidak dicentang.
Ukuran simpul: Pilih Pilih ukuran. Pada halaman Pilih ukuran VM, pilih D2s_v3, lalu pilih Pilih.
Biarkan nilai default untuk pengaturan yang tersisa, dan pilih Tambahkan.
Pilih Tinjau + buat untuk menjalankan validasi pada konfigurasi kluster. Setelah validasi selesai, pilih Buat.
Perlu waktu beberapa menit untuk membuat kluster AKS. Saat penyebaran Anda selesai, navigasikan ke sumber daya Anda dengan memilih Buka sumber daya, atau dengan menelusuri ke grup sumber daya kluster AKS dan memilih sumber daya AKS.
Menyambungkan ke kluster
Anda menggunakan klien baris perintah Kube, kubectl, untuk mengelola kluster Kubernetes. kubectl
sudah diinstal jika Anda menggunakan Azure Cloud Shell. Jika Anda tidak terbiasa dengan Cloud Shell, tinjau Gambaran Umum Azure Cloud Shell.
Jika Anda menggunakan Cloud Shell, buka dengan tombol >_
di bagian atas portal Azure. Jika Anda menggunakan PowerShell secara lokal, sambungkan Connect-AzAccount
ke Azure melalui perintah . Jika Anda menggunakan Azure CLI secara lokal, sambungkan az login
ke Azure melalui perintah .
Konfigurasikan
kubectl
untuk terhubung ke kluster Kubernetes menggunakan perintahaz aks get-credentials
. Perintah ini mengunduh informasi masuk dan mengonfigurasi CLI Kube untuk menggunakannya.az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Verifikasi koneksi ke kluster Anda menggunakan
kubectl get
untuk mengembalikan daftar node kluster.kubectl get nodes
Contoh output berikut menunjukkan satu simpul yang dibuat pada langkah sebelumnya. Pastikan status simpul Siap.
NAME STATUS ROLES AGE VERSION aks-nodepool1-31718369-0 Ready agent 6m44s v1.15.10
Menyebarkan aplikasi
Anda menggunakan file manifes untuk membuat semua objek yang diperlukan untuk menjalankan aplikasi AKS Store. File manifes Kube menentukan status kluster yang diinginkan, seperti gambar kontainer mana yang akan dijalankan. Manifes mencakup penyebaran dan layanan Kubernetes berikut:
- Simpan depan: Aplikasi web bagi pelanggan untuk melihat produk dan melakukan pemesanan.
- Layanan produk: Menampilkan informasi produk.
- Layanan pesanan: Menempatkan pesanan.
- Rabbit MQ: Antrean pesan untuk antrean pesanan.
Catatan
Kami tidak menyarankan untuk menjalankan kontainer stateful, seperti Rabbit MQ, tanpa penyimpanan persisten untuk produksi. Ini digunakan di sini untuk kesederhanaan, tetapi sebaiknya gunakan layanan terkelola, seperti Azure CosmosDB atau Azure Bus Layanan.
Di Cloud Shell, buka editor dan buat file bernama
aks-store-quickstart.yaml
.Tempel manifes berikut ke editor:
apiVersion: apps/v1 kind: Deployment metadata: name: rabbitmq spec: replicas: 1 selector: matchLabels: app: rabbitmq template: metadata: labels: app: rabbitmq spec: nodeSelector: "kubernetes.io/os": linux containers: - name: rabbitmq image: mcr.microsoft.com/mirror/docker/library/rabbitmq:3.10-management-alpine ports: - containerPort: 5672 name: rabbitmq-amqp - containerPort: 15672 name: rabbitmq-http env: - name: RABBITMQ_DEFAULT_USER value: "username" - name: RABBITMQ_DEFAULT_PASS value: "password" resources: requests: cpu: 10m memory: 128Mi limits: cpu: 250m memory: 256Mi volumeMounts: - name: rabbitmq-enabled-plugins mountPath: /etc/rabbitmq/enabled_plugins subPath: enabled_plugins volumes: - name: rabbitmq-enabled-plugins configMap: name: rabbitmq-enabled-plugins items: - key: rabbitmq_enabled_plugins path: enabled_plugins --- apiVersion: v1 data: rabbitmq_enabled_plugins: | [rabbitmq_management,rabbitmq_prometheus,rabbitmq_amqp1_0]. kind: ConfigMap metadata: name: rabbitmq-enabled-plugins --- apiVersion: v1 kind: Service metadata: name: rabbitmq spec: selector: app: rabbitmq ports: - name: rabbitmq-amqp port: 5672 targetPort: 5672 - name: rabbitmq-http port: 15672 targetPort: 15672 type: ClusterIP --- apiVersion: apps/v1 kind: Deployment metadata: name: order-service spec: replicas: 1 selector: matchLabels: app: order-service template: metadata: labels: app: order-service spec: nodeSelector: "kubernetes.io/os": linux containers: - name: order-service image: ghcr.io/azure-samples/aks-store-demo/order-service:latest ports: - containerPort: 3000 env: - name: ORDER_QUEUE_HOSTNAME value: "rabbitmq" - name: ORDER_QUEUE_PORT value: "5672" - name: ORDER_QUEUE_USERNAME value: "username" - name: ORDER_QUEUE_PASSWORD value: "password" - name: ORDER_QUEUE_NAME value: "orders" - name: FASTIFY_ADDRESS value: "0.0.0.0" resources: requests: cpu: 1m memory: 50Mi limits: cpu: 75m memory: 128Mi initContainers: - name: wait-for-rabbitmq image: busybox command: ['sh', '-c', 'until nc -zv rabbitmq 5672; do echo waiting for rabbitmq; sleep 2; done;'] resources: requests: cpu: 1m memory: 50Mi limits: cpu: 75m memory: 128Mi --- apiVersion: v1 kind: Service metadata: name: order-service spec: type: ClusterIP ports: - name: http port: 3000 targetPort: 3000 selector: app: order-service --- apiVersion: apps/v1 kind: Deployment metadata: name: product-service spec: replicas: 1 selector: matchLabels: app: product-service template: metadata: labels: app: product-service spec: nodeSelector: "kubernetes.io/os": linux containers: - name: product-service image: ghcr.io/azure-samples/aks-store-demo/product-service:latest ports: - containerPort: 3002 resources: requests: cpu: 1m memory: 1Mi limits: cpu: 1m memory: 7Mi --- apiVersion: v1 kind: Service metadata: name: product-service spec: type: ClusterIP ports: - name: http port: 3002 targetPort: 3002 selector: app: product-service --- apiVersion: apps/v1 kind: Deployment metadata: name: store-front spec: replicas: 1 selector: matchLabels: app: store-front template: metadata: labels: app: store-front spec: nodeSelector: "kubernetes.io/os": linux containers: - name: store-front image: ghcr.io/azure-samples/aks-store-demo/store-front:latest ports: - containerPort: 8080 name: store-front env: - name: VUE_APP_ORDER_SERVICE_URL value: "http://order-service:3000/" - name: VUE_APP_PRODUCT_SERVICE_URL value: "http://product-service:3002/" resources: requests: cpu: 1m memory: 200Mi limits: cpu: 1000m memory: 512Mi --- apiVersion: v1 kind: Service metadata: name: store-front spec: ports: - port: 80 targetPort: 8080 selector: app: store-front type: LoadBalancer
Untuk perincian file manifes YAML, lihat Manifes Penyebaran dan YAML.
Jika Anda membuat dan menyimpan file YAML secara lokal, maka Anda dapat mengunggah file manifes ke direktori default Anda di CloudShell dengan memilih tombol Unggah/Unduh file dan memilih file dari sistem file lokal Anda.
Sebarkan aplikasi menggunakan perintah
kubectl apply
dan tentukan nama manifes YAML Anda:kubectl apply -f aks-store-quickstart.yaml
Contoh output berikut menunjukkan penyebaran dan layanan:
deployment.apps/rabbitmq created service/rabbitmq created deployment.apps/order-service created service/order-service created deployment.apps/product-service created service/product-service created deployment.apps/store-front created service/store-front created
Uji aplikasi
Ketika aplikasi berjalan, layanan Kubernetes mengekspos front end aplikasi ke internet. Diperlukan beberapa menit untuk menyelesaikan proses ini.
Periksa status pod yang disebarkan menggunakan
kubectl get pods
perintah . Pastikan semua pod sebelumRunning
melanjutkan.kubectl get pods
Periksa alamat IP publik untuk aplikasi.
store-front
Pantau kemajuan menggunakan perintahkubectl get service
dengan argumen--watch
.kubectl get service store-front --watch
Output EXTERNAL-IP untuk layanan awalnya
store-front
ditampilkan sebagai tertunda:NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 <pending> 80:30025/TCP 4h4m
Saat alamat IP EKSTERNAL berubah dari tertunda menjadi alamat IP publik yang sebenarnya, gunakan
CTRL-C
untuk menghentikan proses pemantauankubectl
.Output contoh berikut menunjukkan alamat IP publik yang valid yang ditetapkan ke layanan:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 20.62.159.19 80:30025/TCP 4h5m
Buka browser web ke alamat IP eksternal layanan Anda untuk melihat aplikasi Azure Store beraksi.
Menghapus kluster
Jika Anda tidak berencana untuk melalui seri tutorial AKS, bersihkan sumber daya yang tidak perlu untuk menghindari biaya Azure.
Di portal Azure, navigasikan ke grup sumber daya kluster AKS Anda.
Pilih Hapus grup sumber daya.
Masukkan nama grup sumber daya yang akan dihapus, lalu pilih Hapus>Hapus.
Catatan
Kluster AKS dibuat dengan identitas terkelola yang ditetapkan sistem. Identitas ini dikelola oleh platform dan tidak memerlukan penghapusan.
Langkah berikutnya
Dalam mulai cepat ini, Anda menyebarkan kluster Kubernetes, lalu menyebarkan aplikasi multi-kontainer sederhana ke dalamnya. Aplikasi sampel ini hanya untuk tujuan demo dan tidak mewakili semua praktik terbaik untuk aplikasi Kubernetes. Untuk panduan tentang membuat solusi lengkap dengan AKS untuk produksi, lihat panduan solusi AKS.
Untuk mempelajari lebih lanjut tentang AKS dan menelusuri contoh kode-ke-penyebaran lengkap, lanjutkan ke seri tutorial kluster Kubernetes.
Azure Kubernetes Service