Memahami Azure Container Registry

Saat Anda sampai di akhir pipeline build devops, Anda akan mendapatkan serangkaian artefak: binari, file konfigurasi, halaman Web, bahkan mesin virtual dan container. Mereka adalah komponen yang bekerja sama untuk membangun aplikasi modern. Menggabungkan sebanyak mungkin komponen tersebut ke dalam container sangat masuk akal, memberi Anda model penerapan yang lebih sederhana. Namun, hal itu menyisakan serangkaian pertanyaan baru: Bagaimana Anda mengelola container tersebut dan bagaimana Anda menerapkannya di seluruh aplikasi cloud skala global?

Layanan seperti GitHub menawarkan registri pribadi dan publik untuk artefak build Anda, menggunakan standar terbuka dan kode sumber terbuka. Azure telah melakukan hal yang sama, menggunakan Docker Registry 2.0 sumber terbuka sebagai dasar untuk registri penampungnya sendiri, yang sesuai dengan Open Container Initiative. Ini tidak dimaksudkan hanya untuk kontainer; dengan semakin pentingnya aplikasi cloud-native berbasis Kubernetes, ini dimaksudkan sebagai repositori satu atap untuk semua artefak build yang sesuai dengan OCI. Itu sekarang termasuk diagram Helm, sehingga Anda dapat menggunakan Container Registry (ACR) Azure sebagai hub penerapan untuk aplikasi Anda, menggunakan Helm 3.0 untuk pengiriman ke instance Kubernetes.

Memulai ACR

Alat seperti Azure Container Registry paling baik dianggap sebagai registri pribadi. Hanya Anda dan tim serta layanan Anda yang memiliki akses ke registri Anda, mengotomatiskan pengiriman ke layanan Azure yang menggunakan kontainer. Alat yang familier seperti Azure DevOps dan Jenkins dapat dikonfigurasi untuk menggunakan Registry sebagai titik akhir build, sehingga Anda dapat langsung menggabungkan permintaan pull ke container di Azure, siap untuk diterapkan.

Microsoft saat ini menawarkan tiga versi ACR: Basic, Standard, dan Premium, dengan tiga harga berbeda. Semuanya bekerja dengan kait Web, menggunakan Azure Active Directory untuk otentikasi, dan memiliki kemampuan untuk menghapus gambar. Basic memiliki kapasitas paling rendah; Premium mencakup dukungan untuk replikasi lintas wilayah dan menambahkan dukungan penandatanganan gambar. Anda kemungkinan besar akan menggunakan Standar, yang memberi Anda penyimpanan 100GB, bandwidth unduhan 60MBps, dan mendukung sebanyak 10 kait Web. Harga ditentukan per registri per hari, dengan biaya jaringan tambahan dan biaya terpisah untuk penggunaan CPU saat membuat image container baru.

Membuat registri penampung baru relatif mudah, baik menggunakan Azure CLI atau Portal. Instans ACR terikat ke grup sumber daya, sehingga Anda dapat memiliki registri terpisah untuk setiap aplikasi yang Anda jalankan di Azure. Setelah registri dibuat, Anda diberi URL server masuk. Ini adalah titik akhir untuk integrasi dengan alat devops atau instans Docker desktop pengembang Anda.

Berinteraksi dengan registri ACR

Perintah Azure CLI acrmungkin adalah cara paling berguna untuk berinteraksi dengan registri. Masuk dan Anda dapat mulai memasukkan gambar container ke dalamnya. Sebaiknya mulai dari desktop untuk merasakan cara kerjanya, menandai gambar Docker lokal dengan nama server masuk ACR dan kemudian menggunakan docker pushperintah untuk mengirim gambar ke registri ACR, secara otomatis membuat repositori yang sesuai di Azure. Setelah gambar berada dalam repositori ACR, gunakan alat baris perintah untuk membuat daftar file, menghapusnya, dan bahkan menggunakan perintah Docker untuk menjalankannya.

Mengotomatiskan ACR dapat mengurangi beban kerja Anda secara signifikan, menggunakan ACR Tasks. Tugas menggabungkan apa yang akan menjadi sekumpulan skrip Azure CLI ke dalam alur kerja sederhana yang mengelola operasi umum. Misalnya, mereka menawarkan serangkaian pemicu yang mengotomatiskan pembuatan gambar baru saat perubahan terjadi pada pipeline build Anda atau dalam sistem continuous integration / continuous delivery (CI / CD).

Salah satu opsi, tugas cepat, membungkus semua tahapan yang digunakan untuk membangun sekumpulan file ke dalam wadah menjadi satu perintah. Yang Anda butuhkan hanyalah direktori kerja dengan file Anda dan registri ACR yang ada serta Dockerfile. Satu perintah mengambil file-file itu dan menggunakan Dockerfile untuk membuat image, secara otomatis menyimpannya dalam repositori ACR. Tugas cepat lainnya menjalankan gambar pada host pilihan Anda.

Gabungkan keduanya dan Anda memiliki seperangkat alat dasar untuk menguji gambar container. Penerapan yang lebih kompleks akan membutuhkan skrip yang lebih kompleks — misalnya men-deploy container ke instance Kubernetes yang dikelola menggunakan AKS. Sebagai alternatif, Anda dapat mengotomatiskan seluruh proses, membuat tugas yang memantau repo GitHub untuk perubahan di cabang penerapan, membuat image baru saat Anda menggabungkan permintaan tarik ke dalam cabang atau membuat komit.

Mengamankan kontainer di ACR

Ada manfaat keamanan untuk bekerja dengan ACR. Salah satu masalah besar yang dihadapi siapa pun yang membangun aplikasi modern adalah memahami dan mengelola pohon ketergantungan Anda. Bagaimana Anda tahu jika versi baru pustaka kunci atau komponen yang dikaburkan aman untuk digunakan? Anda harus bisa mempercayai penampung Anda, dan ACR menawarkan dua cara untuk memastikan Anda selalu menerapkan kode tepercaya.

Pertama, ini menyediakan gambar container yang ditandatangani, sehingga cluster Kubernetes Anda dapat memverifikasi bahwa kode yang dijalankannya adalah kode yang Anda dorong ke registri dari sistem build Anda. Gambar yang ditandatangani memastikan bahwa tidak ada yang merusak konten penampung saat sedang digunakan. Kedua, ACR dapat berintegrasi dengan Pusat Keamanan Azure. Ini memungkinkan Anda untuk memindai gambar saat disimpan di registri, tidak hanya memeriksa kerentanan di kode Anda dan di gambar dasar, tetapi juga di semua dependensi yang disertakan atau dirujuk dari file gambar. Dengan menggunakan pemindai Qualys, laporan Pusat Keamanan akan membantu Anda mengidentifikasi kerentanan dengan rekomendasi perbaikan.

Hal-hal menjadi menarik ketika Anda mulai menggunakan instans ACR Anda untuk lebih dari sekedar kontainer. OCI telah mulai membuka standar registri untuk artefak, dengan Helm, alat de facto untuk penerapan aplikasi Kubernetes, yang menggunakannya dalam rilis terbaru. Industri ini telah menyaksikan perkembangan registri dan repositori, dan masuk akal untuk menstandarkan satu untuk semua komponen aplikasi Anda, terutama jika semuanya adalah bagian dari aplikasi cloud-native yang sama.

ACR sekarang mendukung OCI Registry As Storage (ORAS). Menggunakan alat ORAS, Anda dapat mendorong dan menarik semua artefak Anda dari repositori ACR yang sama. Instal ORAS di mesin developer Anda atau tambahkan dukungan ke pipeline build Anda. Setelah masuk ke registri Anda dengan prinsip layanan Azure Active Directory yang memiliki hak push, gunakan alat baris perintah ORAS untuk memasukkan artefak baru ke registri.

Menggunakan alat baris perintah di Azure CLI memberi Anda fleksibilitas untuk membuat ORAS push ke dalam alat build pilihan Anda, sebagai skrip yang dapat dipanggil saat dan saat diperlukan. Alat baris perintah yang sama dapat menarik artefak, dan Anda dapat membangunnya ke dalam skrip penerapan sehingga semua komponen yang membentuk aplikasi Anda dapat secara otomatis diterapkan saat versi baru mendorong ke repositori ACR Anda.

Kode pribadi memerlukan repositori pribadi, dan menyimpan kontainer Anda serta artefak build lainnya di Azure menempatkannya di tempat yang diperlukan. Proses build devops yang lengkap harus dimulai dari code commit hingga menjalankan aplikasi tanpa campur tangan manusia, membuat alat seperti Azure Container Registry dan komponen penting otomatisasi tugas terkait di pipeline bertarget Azure. Kode tidak hanya disimpan dan digunakan secara otomatis dalam skala global, tetapi juga memindai risiko keamanan setiap kali ada perubahan.