Mengonfigurasi pemeriksaan kesiapan

Untuk aplikasi kontainer yang melayani lalu lintas, Anda mungkin ingin memverifikasi bahwa kontainer Anda siap untuk menangani permintaan masuk. Microsoft Azure Container Instances mendukung pemeriksaan kesiapan untuk menyertakan konfigurasi sehingga kontainer Anda tidak dapat diakses dalam kondisi tertentu. Pemeriksaan kesiapan berperilaku seperti Pemeriksaan kesiapan kubernetes. Contohnya, aplikasi kontainer mungkin perlu memuat kumpulan data besar selama memulai, dan Anda tidak ingin aplikasi tersebut menerima permintaan selama waktu ini.

Artikel ini menjelaskan cara menyebarkan grup kontainer yang mencakup pemeriksaan kesiapan, sehingga kontainer hanya menerima lalu lintas saat pemeriksaan berhasil.

Microsoft Azure Container Instances juga mendukung pemeriksaan keaktifan, yang dapat Anda konfigurasi untuk menyebabkan kontainer yang tidak sehat dimulai ulang secara otomatis.

Konfigurasi YAML

Sebagai contoh, buat file readiness-probe.yaml dengan cuplikan berikut yang mencakup pemeriksaan kesiapan. File ini mendefinisikan grup kontainer yang terdiri atas kontainer yang menjalankan aplikasi web kecil. Aplikasi ini digunakan dari gambar mcr.microsoft.com/azuredocs/aci-helloworld publik. Aplikasi kontainer ini juga ditunjukkan dalam Sebarkan instans kontainer di Microsoft Azure menggunakan Azure CLI dan mulai cepat lainnya.

apiVersion: 2019-12-01
location: eastus
name: readinesstest
properties:
  containers:
  - name: mycontainer
    properties:
      image: mcr.microsoft.com/azuredocs/aci-helloworld
      command:
        - "/bin/sh"
        - "-c"
        - "node /usr/src/app/index.js & (sleep 240; touch /tmp/ready); wait"
      ports:
      - port: 80
      resources:
        requests:
          cpu: 1.0
          memoryInGB: 1.5
      readinessProbe:
        exec:
          command:
          - "cat"
          - "/tmp/ready"
        periodSeconds: 5
  osType: Linux
  restartPolicy: Always
  ipAddress:
    type: Public
    ports:
    - protocol: tcp
      port: '80'
tags: null
type: Microsoft.ContainerInstance/containerGroups

Perintah mulai

Penyebaran mencakup properti command yang mendefinisikan perintah awal yang berjalan ketika kontainer pertama kali mulai berjalan. Properti ini menerima array untai (karakter). Perintah ini membuat simulasi waktu ketika aplikasi web berjalan tetapi kontainer belum siap.

Pertama, memulai sesi shell dan menjalankan perintah node untuk memulai aplikasi web. Selain itu, memulai perintah untuk tidur selama 240 detik, setelah itu membuat file yang disebut ready dalam direktori /tmp:

node /usr/src/app/index.js & (sleep 240; touch /tmp/ready); wait

Perintah kesiapan

File YAML ini mendefinisikan readinessProbe yang mendukung perintah kesiapan exec yang bertindak sebagai pemeriksaan kesiapan. Contoh perintah kesiapan ini menguji keberadaan file ready di direktori /tmp.

Ketika file ready tidak ada, perintah kesiapan keluar dengan nilai bukan nol; kontainer terus berjalan tetapi tidak dapat diakses. Ketika perintah berhasil keluar dengan kode keluar 0, kontainer siap diakses.

Properti periodSeconds menunjuk perintah kesiapan harus dijalankan setiap 5 detik. Pemeriksaan kesiapan berjalan untuk seumur hidup grup kontainer.

Contoh penyebaran

Jalankan perintah berikut untuk menyebarkan grup kontainer dengan konfigurasi YAML di atas:

az container create --resource-group myResourceGroup --file readiness-probe.yaml

Lihat pemeriksaan kesiapan

Dalam contoh ini, selama 240 detik pertama, perintah kesiapan gagal ketika memeriksa ready keberadaan file. Kode status mengembalikan sinyal bahwa kontainer belum siap.

Peristiwa ini dapat dilihat dari portal Microsoft Azure atau Microsoft Azure CLI. Contohnya, portal menunjukkan jenis peristiwa Unhealthy dipicu pada perintah kesiapan gagal.

Portal peristiwa tidak sehat

Verifikasi kesiapan kontainer

Setelah memulai kontainer, Anda dapat memverifikasi bahwa kontainer tersebut awalnya tidak dapat diakses. Setelah provisi, dapatkan alamat IP grup kontainer:

az container show --resource-group myResourceGroup --name readinesstest --query "ipAddress.ip" --out tsv

Coba mengakses situs sementara pemeriksaan kesiapan gagal:

wget <ipAddress>

Output menunjukkan situs tidak dapat diakses pada awalnya:

wget 192.0.2.1
--2019-10-15 16:46:02--  http://192.0.2.1/
Connecting to 192.0.2.1... connected.
HTTP request sent, awaiting response...

Setelah 240 detik, perintah kesiapan berhasil, menandakan kontainer sudah siap. Sekarang, ketika Anda menjalankan perintah wget, itu berhasil:

wget 192.0.2.1
--2019-10-15 16:46:02--  http://192.0.2.1/
Connecting to 192.0.2.1... connected.
HTTP request sent, awaiting response...200 OK
Length: 1663 (1.6K) [text/html]
Saving to: ‘index.html.1’

index.html.1                       100%[===============================================================>]   1.62K  --.-KB/s    in 0s

2019-10-15 16:49:38 (113 MB/s) - ‘index.html.1’ saved [1663/1663]

Ketika kontainer sudah siap, Anda juga dapat mengakses aplikasi web dengan menelusuri ke alamat IP menggunakan browser web.

Catatan

Pemeriksaan kesiapan terus berjalan untuk seumur hidup grup kontainer. Jika perintah kesiapan gagal di lain waktu, kontainer kembali menjadi tidak dapat diakses.

Langkah berikutnya

Pemeriksaan kesiapan dapat berguna dalam skenario yang melibatkan grup banyak kontainer yang terdiri atas kontainer dependen. Untuk informasi selengkapnya tentang skenario banyak kontainer, lihat Grup kontainer di Microsoft Azure Container Instances.