Bundel Aplikasi Cloud Native

Petunjuk / Saran

Konten ini adalah kutipan dari eBook, Merancang Aplikasi .NET Cloud Native untuk Azure, tersedia di .NET Docs atau sebagai PDF gratis yang dapat diunduh yang dapat dibaca secara offline.

aplikasi .NET Cloud Native untuk gambar mini sampul Azure eBook.

Properti utama aplikasi cloud-native adalah mereka memanfaatkan kemampuan cloud untuk mempercepat pengembangan. Desain ini sering berarti bahwa aplikasi lengkap menggunakan berbagai jenis teknologi. Aplikasi dapat dikirim dalam kontainer Docker, beberapa layanan dapat menggunakan Azure Functions, sementara bagian lain dapat berjalan langsung pada komputer virtual yang dialokasikan di server logam besar dengan akselerasi GPU perangkat keras. Tidak ada dua aplikasi cloud-native yang sama, jadi sulit untuk menyediakan satu mekanisme untuk pengirimannya.

Kontainer-kontainer Docker dapat berjalan di Kubernetes dengan menggunakan Helm Chart untuk penyebaran. Azure Functions dapat dialokasikan menggunakan templat Terraform. Akhirnya, komputer virtual dapat dialokasikan menggunakan Terraform tetapi dibangun menggunakan Ansible. Ini adalah berbagai macam teknologi dan belum ada cara untuk mengemas semuanya menjadi paket yang wajar. Sampai sekarang.

Cloud Native Application Bundles (CNAB) adalah upaya bersama oleh banyak perusahaan yang berpikiran komunitas seperti Microsoft, Docker, dan HashiCorp untuk mengembangkan spesifikasi untuk mengemas aplikasi terdistribusi.

Upaya ini diumumkan pada bulan Desember 2018, sehingga masih ada cukup banyak pekerjaan yang perlu dilakukan untuk mengekspos upaya tersebut kepada masyarakat yang lebih luas. Namun, sudah ada spesifikasi terbuka dan implementasi referensi yang dikenal sebagai Duffle. Alat ini, yang ditulis dalam Go, adalah upaya bersama antara Docker dan Microsoft.

CNAB dapat berisi berbagai jenis teknologi penginstalan. Aspek ini memungkinkan hal-hal seperti Bagan Helm, templat Terraform, dan Playbook Ansible untuk hidup berdampingan dalam paket yang sama. Setelah dibangun, paket mandiri dan portabel; mereka dapat diinstal dari stik USB. Paket ditandatangani secara kriptografis untuk memastikan paket berasal dari pihak yang mereka klaim.

Inti dari CNAB adalah file yang disebut bundle.json. File ini mendefinisikan konten bundel, baik itu Terraform atau gambar atau apa pun. Gambar 11-9 mendefinisikan CNAB yang memanggil beberapa Terraform. Perhatikan, bagaimanapun, bahwa itu benar-benar mendefinisikan gambar pemanggilan yang digunakan untuk memanggil Terraform. Ketika dikemas, file Docker yang terletak di direktori cnab dibangun ke dalam gambar Docker, yang akan disertakan dalam bundel. Menginstal Terraform di dalam kontainer Docker di bundel berarti bahwa pengguna tidak perlu menginstal Terraform pada komputer mereka untuk menjalankan bundel.

{
    "name": "terraform",
    "version": "0.1.0",
    "schemaVersion": "v1.0.0-WD",
    "parameters": {
        "backend": {
            "type": "boolean",
            "defaultValue": false,
            "destination": {
                "env": "TF_VAR_backend"
            }
        }
    },
    "invocationImages": [
        {
        "imageType": "docker",
        "image": "cnab/terraform:latest"
        }
    ],
    "credentials": {
        "tenant_id": {
            "env": "TF_VAR_tenant_id"
        },
        "client_id": {
            "env": "TF_VAR_client_id"
        },
        "client_secret": {
            "env": "TF_VAR_client_secret"
        },
        "subscription_id": {
            "env": "TF_VAR_subscription_id"
        },
        "ssh_authorized_key": {
            "env": "TF_VAR_ssh_authorized_key"
        }
    },
    "actions": {
        "status": {
            "modifies": true
        }
    }
}

Gambar 10-18 - Contoh file Terraform

bundle.json juga mendefinisikan sekumpulan parameter yang disalurkan ke dalam Terraform. Parameterisasi bundel memungkinkan penginstalan di berbagai lingkungan yang berbeda.

Format CNAB juga fleksibel, memungkinkannya digunakan terhadap cloud apa pun. Ini bahkan dapat digunakan terhadap solusi lokal seperti OpenStack.

Keputusan DevOps

Ada begitu banyak alat hebat di ruang DevOps hari ini dan bahkan buku dan makalah yang lebih fantastis tentang cara berhasil. Buku favorit untuk memulai perjalanan DevOps adalah The Phoenix Project, yang mengikuti transformasi perusahaan fiktif dari NoOps ke DevOps. Satu hal yang pasti: DevOps bukan lagi "bagus untuk dimiliki" saat menyebarkan Aplikasi Cloud Native yang kompleks. Persyaratan ini harus direncanakan dan sumber daya harus disediakan pada awal proyek apa pun.

Referensi