Tutorial: Menyebarkan grup multi-kontainer menggunakan templat Resource Manager
Azure Container Instances mendukung penyebaran beberapa kontainer ke satu host menggunakan grup kontainer. Grup kontainer berguna saat membuat sidecar aplikasi untuk pengelogan, pemantauan, atau konfigurasi lainnya di mana layanan memerlukan proses terpasang kedua.
Dalam tutorial ini, Anda mengikuti langkah-langkah untuk menjalankan konfigurasi sidecar dua kontainer dengan menyebarkan templat Azure Resource Manager menggunakan Azure CLI. Anda akan mempelajari cara untuk:
- Mengonfigurasi templat grup multi-kontainer
- Menyebarkan grup kontainer
- Menampilkan log kontainer
Templat Resource Manager dapat dengan mudah diadaptasi untuk skenario saat Anda perlu menyebarkan lebih banyak sumber daya layanan Azure (misalnya, berbagi Azure Files atau jaringan virtual) dengan grup kontainer.
Catatan
Grup multi-kontainer saat ini dibatasi untuk kontainer Linux.
Jika Anda tidak memiliki Langganan Azure, buat Akun gratis Azure sebelum memulai.
Prasyarat
Gunakan lingkungan Bash di Azure Cloud Shell. Untuk informasi selengkapnya, lihat Mulai Cepat untuk Bash di Azure Cloud Shell.
Jika Anda lebih suka menjalankan perintah referensi CLI secara lokal, instal Azure CLI. Jika Anda menjalankan Windows atau macOS, pertimbangkan untuk menjalankan Azure CLI dalam kontainer Docker. Untuk informasi lebih lanjut, lihat Cara menjalankan Azure CLI di kontainer Docker.
Jika Anda menggunakan instalasi lokal, masuk ke Azure CLI dengan menggunakan perintah login az. Untuk menyelesaikan proses autentikasi, ikuti langkah-langkah yang ditampilkan di terminal Anda. Untuk opsi masuk lainnya, lihat Masuk dengan Azure CLI.
Saat Anda diminta, instal ekstensi Azure CLI pada penggunaan pertama. Untuk informasi selengkapnya tentang ekstensi, lihat Menggunakan ekstensi dengan Azure CLI.
Jalankan versi az untuk menemukan versi dan pustaka dependen yang diinstal. Untuk meningkatkan ke versi terbaru, jalankan peningkatan az.
Mengonfigurasi templat
Mulailah dengan menyalin JSON berikut ke dalam file baru bernama azuredeploy.json
. Di Azure Cloud Shell, Anda bisa menggunakan Visual Studio Code untuk membuat file di direktori kerja:
code azuredeploy.json
Templat Resource Manager ini mendefinisikan grup kontainer dengan dua kontainer, alamat IP publik, dan dua port yang terbuka. Kontainer pertama dalam grup menjalankan aplikasi web yang tersambung ke internet. Kontainer kedua, sidecar, membuat permintaan HTTP ke aplikasi web utama melalui jaringan lokal grup.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"containerGroupName": {
"type": "string",
"defaultValue": "myContainerGroup",
"metadata": {
"description": "Container Group name."
}
}
},
"variables": {
"container1name": "aci-tutorial-app",
"container1image": "mcr.microsoft.com/azuredocs/aci-helloworld:latest",
"container2name": "aci-tutorial-sidecar",
"container2image": "mcr.microsoft.com/azuredocs/aci-tutorial-sidecar"
},
"resources": [
{
"name": "[parameters('containerGroupName')]",
"type": "Microsoft.ContainerInstance/containerGroups",
"apiVersion": "2019-12-01",
"location": "[resourceGroup().location]",
"properties": {
"containers": [
{
"name": "[variables('container1name')]",
"properties": {
"image": "[variables('container1image')]",
"resources": {
"requests": {
"cpu": 1,
"memoryInGb": 1.5
}
},
"ports": [
{
"port": 80
},
{
"port": 8080
}
]
}
},
{
"name": "[variables('container2name')]",
"properties": {
"image": "[variables('container2image')]",
"resources": {
"requests": {
"cpu": 1,
"memoryInGb": 1.5
}
}
}
}
],
"osType": "Linux",
"ipAddress": {
"type": "Public",
"ports": [
{
"protocol": "tcp",
"port": 80
},
{
"protocol": "tcp",
"port": 8080
}
]
}
}
}
],
"outputs": {
"containerIPv4Address": {
"type": "string",
"value": "[reference(resourceId('Microsoft.ContainerInstance/containerGroups/', parameters('containerGroupName'))).ipAddress.ip]"
}
}
}
Untuk menggunakan registri gambar kontainer pribadi, tambahkan objek ke dokumen JSON dengan format berikut. Untuk contoh implementasi konfigurasi ini, lihat dokumentasi Referensi templat ACI Resource Manager.
"imageRegistryCredentials": [
{
"server": "[parameters('imageRegistryLoginServer')]",
"username": "[parameters('imageRegistryUsername')]",
"password": "[parameters('imageRegistryPassword')]"
}
]
Menyebarkan templat
Buat grup sumber daya dengan perintah az group create.
az group create --name myResourceGroup --location eastus
Sebarkan templat dengan perintah az deployment group create.
az deployment group create --resource-group myResourceGroup --template-file azuredeploy.json
Dalam beberapa detik, Anda seharusnya menerima respons awal dari Azure.
Menampilkan status penyebaran
Untuk menampilkan status penyebaran, gunakan perintah az container show berikut:
az container show --resource-group myResourceGroup --name myContainerGroup --output table
Jika Anda ingin menampilkan aplikasi yang sedang berjalan, navigasikan ke alamat IP-nya di browser Anda. Misalnya, IP-nya adalah 52.168.26.124
dalam contoh output ini:
Name ResourceGroup Status Image IP:ports Network CPU/Memory OsType Location
---------------- --------------- -------- -------------------------------------------------------------------------------------------------- -------------------- --------- --------------- -------- ----------
myContainerGroup danlep0318r Running mcr.microsoft.com/azuredocs/aci-tutorial-sidecar,mcr.microsoft.com/azuredocs/aci-helloworld:latest 20.42.26.114:80,8080 Public 1.0 core/1.5 gb Linux eastus
Menampilkan log kontainer
Lihat output log kontainer menggunakan perintah az container logs. Argumen --container-name
menentukan kontainer untuk menarik log. Dalam contoh ini, kontainer aci-tutorial-app
ditentukan.
az container logs --resource-group myResourceGroup --name myContainerGroup --container-name aci-tutorial-app
Output:
listening on port 80
::1 - - [02/Jul/2020:23:17:48 +0000] "HEAD / HTTP/1.1" 200 1663 "-" "curl/7.54.0"
::1 - - [02/Jul/2020:23:17:51 +0000] "HEAD / HTTP/1.1" 200 1663 "-" "curl/7.54.0"
::1 - - [02/Jul/2020:23:17:54 +0000] "HEAD / HTTP/1.1" 200 1663 "-" "curl/7.54.0"
Untuk melihat log untuk kontainer sidecar, jalankan perintah serupa yang menentukan kontainer aci-tutorial-sidecar
.
az container logs --resource-group myResourceGroup --name myContainerGroup --container-name aci-tutorial-sidecar
Output:
Every 3s: curl -I http://localhost 2020-07-02 20:36:41
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 1663 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
HTTP/1.1 200 OK
X-Powered-By: Express
Accept-Ranges: bytes
Cache-Control: public, max-age=0
Last-Modified: Wed, 29 Nov 2017 06:40:40 GMT
ETag: W/"67f-16006818640"
Content-Type: text/html; charset=UTF-8
Content-Length: 1663
Date: Thu, 02 Jul 2020 20:36:41 GMT
Connection: keep-alive
Seperti yang Anda lihat, sidecar secara berkala membuat permintaan HTTP ke aplikasi web utama melalui jaringan lokal grup untuk memastikannya berjalan. Contoh sidecar ini dapat diperluas untuk memicu peringatan jika menerima kode respons HTTP selain 200 OK
.
Langkah berikutnya
Dalam tutorial ini, Anda menggunakan templat Azure Resource Manager untuk menyebarkan grup multi-kontainer di Azure Container Instances. Anda mempelajari cara untuk:
- Mengonfigurasi templat grup multi-kontainer
- Menyebarkan grup kontainer
- Menampilkan log kontainer
Untuk sampel templat lainnya, lihat Templat Azure Resource Manager untuk Azure Container Instances.
Anda juga dapat menentukan grup multi-kontainer menggunakan file YAML. Karena sifat format YAML yang lebih ringkas, penyebaran dengan file YAML adalah pilihan yang baik ketika penyebaran Anda hanya mencakup instans kontainer.