Halaman ini menjelaskan persyaratan untuk mengemas aplikasi Kubernetes Anda, dan panduan untuk memenuhi persyaratan tersebut.
Paket aplikasi Anda adalah paket image container dan file konfigurasi yang di-deploy ke cluster Kubernetes pengguna. Untuk mendukung deployment aplikasi ke Google Kubernetes Engine dari konsol Google Cloud, paket aplikasi harus menyertakan penampung deployment. Penampung deployment mendorong file konfigurasi dan menampilkan metadata ke Kubernetes API.
Paket aplikasi Anda memungkinkan pengguna Google Cloud untuk:
- Menemukan aplikasi Anda di katalog Cloud Marketplace
- Men-deploy aplikasi ke cluster GKE atau GKE Enterprise mereka, menggunakan Konsol Google Cloud
- Berinteraksi dengan aplikasi yang sedang berjalan menggunakan konsol Google Cloud
Selain mendukung deployment melalui konsol Google Cloud, paket Anda harus menyertakan langkah-langkah bagi pengguna untuk men-deploy aplikasi melalui antarmuka command line (CLI), menggunakan alat seperti kubectl atau Helm.
Untuk contoh paket aplikasi, lihat repositori GitHub untuk Solusi Klik untuk Men-deploy Google. Repositori ini berisi paket untuk aplikasi open source populer, seperti WordPress dan Elasticsearch.
Sebelum memulai
- Pastikan Anda telah menyiapkan lingkungan Google Cloud.
- Buat repositori Git publik untuk file konfigurasi, panduan pengguna, dan resource lainnya untuk menjalankan aplikasi Anda. Anda dapat menghosting repositori dengan penyedia seperti GitHub, Cloud Source Repositories, atau di server Anda sendiri. Sebaiknya gunakan repositori khusus untuk setiap produk yang Anda distribusikan.
Ringkasan
Aplikasi harus memenuhi persyaratan berikut:
Repositori Git Anda harus berisi file LICENSE, yang berisi lisensi open source untuk repositori.
Repositori Git Anda harus berisi file konfigurasi, yang men-deploy aplikasi Anda. File konfigurasi dapat berupa manifes YAML Kubernetes, atau diagram Helm.
Konfigurasi harus menyertakan resource kustom Aplikasi, yang menjelaskan aplikasi.
Aplikasi Anda harus berjalan di node yang menggunakan prosesor x86.
Secara opsional, jika Anda ingin aplikasi Anda kompatibel dengan Istio, tinjau batasan pada cluster yang menjalankan Istio.
Jika aplikasi Anda bersifat komersial (non-BYOL), aplikasi tersebut harus melaporkan penggunaannya ke Google, sehingga pelanggan Anda ditagih secara akurat. Sebaiknya integrasikan aplikasi Anda dengan Agen Penagihan Berbasis Penggunaan, yang mengirimkan laporan penggunaan ke Google.
Semua image container aplikasi Anda harus diupload ke registry di Artifact Registry atau Container Registry. Registry Anda juga harus menyertakan image deployer, yang mendorong konfigurasi aplikasi ke Kubernetes API saat pengguna men-deploy aplikasi dari konsol Google Cloud.
Anda harus menyertakan pengujian integrasi untuk aplikasi.
Anda harus menyertakan panduan pengguna, dengan langkah-langkah untuk men-deploy aplikasi dari command line, mengonfigurasi aplikasi, dan menggunakan aplikasi.
Persyaratan untuk konfigurasi Anda
Anda dapat memberikan konfigurasi sebagai manifes Kubernetes, atau sebagai chart Helm.
Konfigurasi Anda harus memenuhi persyaratan berikut:
Untuk melindungi pengguna dari API yang tidak stabil, hanya gunakan resource Kubernetes beta atau yang tersedia secara umum.
Konfigurasi Anda harus men-deploy resource kustom Aplikasi. Resource Aplikasi berisi informasi yang dilihat pengguna saat mereka men-deploy aplikasi melalui UI Cloud Marketplace.
Resource Aplikasi adalah resource kustom, yang menggabungkan komponen Kubernetes yang terkait dengan aplikasi Anda, dan memungkinkan pengguna mengelola resource ini sebagai grup.
Untuk informasi cara membuat resource Aplikasi, dan untuk mengetahui contohnya, lihat Repositori GitHub Aplikasi.
Konfigurasi Anda harus menggunakan parameter yang dapat diganti, baik menggunakan
envsubst
, atau sebagai flag.Parameter berikut harus dapat diganti:
Namespace: Semua resource konfigurasi Anda harus termasuk dalam satu namespace. Pengguna Cloud Marketplace mengonfigurasi namespace ini saat mereka men-deploy aplikasi Anda. Hindari hard code namespace dalam manifes Anda, sehingga resource yang Anda tentukan dibuat dalam namespace yang dipilih pengguna. Namespace terkadang juga muncul di dalam definisi resource, seperti saat merujuk ke
ServiceAccount
diRoleBinding
. Setiap referensi tersebut harus diparameterkan.Nama aplikasi: Nama instance resource Aplikasi. String ini harus disertakan dalam nama setiap resource aplikasi, untuk menghindari konflik nama jika beberapa instance aplikasi di-deploy dalam satu namespace.
Image Container: Setiap referensi image, seperti dalam
PodSpec
, harus dapat diganti, sehingga Cloud Marketplace dapat menggantinya untuk mengarah ke image yang dipublikasikan di Artifact Registry kami. Fitur ini juga memungkinkan pelanggan mengganti gambar yang dimodifikasi.Secret lisensi: Jika aplikasi Anda melakukan pengukuran komersial, aplikasi harus menerima nama resource Secret sebagai parameter. Secret berisi kredensial pelaporan penggunaan, yang digunakan aplikasi Anda untuk mengirim data penggunaan ke Google.
Pelajari parameter konfigurasi lebih lanjut di GitHub.
Aplikasi Anda harus dapat di-deploy menggunakan alat sisi klien. Misalnya, jika Anda menggunakan Helm, deployment harus berfungsi dengan flag command line
--client-only
.
Batasan pada cluster dengan Istio
Jika Anda ingin aplikasi Anda kompatibel dengan Istio, tinjau batasan yang dijelaskan di bagian ini. Untuk ringkasan Istio, lihat Apa itu Istio?.
Jika pelanggan Anda menjalankan Istio di cluster mereka, Istio akan mengontrol traffic jaringan antara Pod aplikasi Anda secara default. Hal ini dapat memblokir komunikasi jaringan dalam skenario berikut:
Jika Pod Anda menjalankan perintah
kubectl
yang menggunakan alamat IP cluster, perintah tersebut mungkin akan gagal.Jika aplikasi Anda menggunakan komunikasi Pod-ke-Pod atau berbasis IP, langkah pembentukan cluster mungkin gagal.
Koneksi eksternal ke layanan pihak ketiga, seperti repositori paket OS, mungkin diblokir. Pelanggan harus mengonfigurasi traffic keluar Istio untuk mengaktifkan akses ke layanan eksternal.
Sebaiknya konfigurasikan koneksi masuk menggunakan Istio Gateway, bukan resource LoadBalancer atau Ingress.
Jika Anda menggunakan Helm untuk konfigurasi, gunakan
properti x-google-marketplace ISTIO_ENABLED
dalam skema untuk
gambar deployment Anda. Jika properti ini adalah true
, deployer Anda harus mengubah deployment, seperti dengan menunggu sidecar Istio siap.
Untuk membantu pelanggan menyiapkan komunikasi antar-Pod aplikasi, sebaiknya tambahkan langkah-langkah ke bagian pasca-deployment dalam dokumentasi Anda.
Persyaratan untuk mengintegrasikan agen penagihan
Jika Anda menjual aplikasi komersial, sebaiknya integrasikan aplikasi Anda dengan Agen Penagihan Berbasis Penggunaan (UBB).
Agen menangani autentikasi dan pelaporan ke endpoint pelaporan penggunaan Google: Service Control. Setelah Anda mengirimkan model harga, tim Cloud Marketplace akan membuat layanan untuk aplikasi Anda melaporkan, dan metrik penagihan untuk mengukur penggunaan.
Agen juga mengelola agregasi lokal, pemulihan error, dan percobaan ulang. Untuk metrik jam penggunaan, agen dapat dikonfigurasi untuk melaporkan detak jantung secara otomatis.
Agen juga mengekspos status pelaporan, sehingga aplikasi Anda dapat mendeteksi apakah agen berhasil melaporkan data penggunaan.
Pelanggan membeli aplikasi di Cloud Marketplace untuk mendapatkan lisensi, yang dilampirkan ke aplikasi pada waktu deployment.
Saat berintegrasi dengan agen penagihan, pertimbangkan perilaku aplikasi Anda saat laporan penggunaan gagal, yang mungkin menunjukkan salah satu hal berikut:
Pelanggan telah membatalkan langganannya.
Pelanggan mungkin tidak sengaja menonaktifkan saluran pelaporan. Misalnya, pelanggan mungkin tidak sengaja menghapus atau salah mengonfigurasi agen, atau jaringan mungkin mencegah agen mengakses endpoint pelaporan Google.
Ikuti praktik terbaik untuk melaporkan penggunaan dan menangani kasus saat Google tidak menerima data penggunaan dan pelanggan tidak ditagih.
Mengintegrasikan agen penagihan
Anda dapat mengintegrasikan agen sebagai penampung sidecar, yang berjalan di Pod yang sama dengan aplikasi Anda, atau dengan menggunakan SDK.
Dalam pendekatan sidecar, agen berjalan dalam penampungnya sendiri, di Pod Kubernetes yang sama dengan penampung aplikasi. Aplikasi Anda berkomunikasi dengan antarmuka REST lokal agen.
Dalam pendekatan SDK, agen harus dikompilasi atau ditautkan ke biner aplikasi Anda. SDK diimplementasikan secara native untuk Go, dengan binding untuk Python.
Secara umum, pendekatan sidecar memerlukan lebih sedikit upaya integrasi, sementara SDK lebih andal agar tidak dinonaktifkan secara tidak sengaja.
Untuk langkah-langkah mendetail tentang integrasi, lihat README di repositori GitHub Agen Penagihan Berbasis Penggunaan. Untuk melihat contoh implementasi, lihat contoh repositori aplikasi dan alat.
Kredensial untuk melaporkan penggunaan
Agen penagihan memerlukan kredensial yang memungkinkannya mengirim laporan penggunaan ke Google. Cloud Marketplace membuat kredensial ini saat pengguna men-deploy aplikasi dari Cloud Marketplace, dan memastikan bahwa kredensial tersebut ada sebagai Secret
di namespace Kubernetes target sebelum aplikasi Anda di-deploy.
Nama Secret ini diteruskan ke aplikasi Anda sebagai properti skema
REPORTING_SECRET
.
Untuk contoh manifes yang menggunakan Secret pelaporan, lihat contoh aplikasi WordPress di GitHub.
Secret berisi kolom berikut:
|
ID yang mewakili persetujuan pelanggan untuk membeli dan menggunakan software. |
|
ID yang terkait dengan Hak yang diteruskan ke Kontrol Layanan Google bersama dengan laporan penggunaan. |
|
Kunci JSON Akun Layanan Google Cloud yang digunakan untuk melakukan autentikasi ke Google Service Control. |
Jika produk Anda menyediakan komponen SaaS selain aplikasi, Anda dapat meminta komponen SaaS tersebut untuk memeriksa validitas ID hak secara berkala, menggunakan layanan Pengadaan Cloud Marketplace. Untuk mendapatkan akses ke layanan Pengadaan, hubungi Partner Engineer Anda.
Untuk informasi tentang parameter lain yang diteruskan ke aplikasi, lihat Parameter yang diteruskan ke aplikasi Anda, nanti di bagian ini.
Persyaratan untuk mem-build image container
Aplikasi Anda terdiri dari satu atau beberapa image penampung aplikasi. Selain itu, repositori Anda harus menyertakan penampung deployment, yang digunakan saat pelanggan men-deploy aplikasi dari UI Cloud Marketplace.
Image container biasanya dibuat menggunakan
Dockerfile dan alat command line docker
build
. Sebaiknya publikasikan Dockerfile dan
petunjuk build container di repositori publik aplikasi Anda. Dengan memublikasikannya,
pelanggan dapat mengubah atau mem-build ulang image, yang terkadang diperlukan untuk
memberi sertifikasi image untuk lingkungan produksi perusahaan.
Jika image aplikasi Anda bergantung pada image dasar, seperti Debian, atau image runtime bahasa, seperti Python atau OpenJDK, sebaiknya gunakan salah satu image container bersertifikasi Cloud Marketplace. Tindakan ini memastikan update yang tepat waktu pada image dasar Anda, terutama untuk patch keamanan.
Setelah mem-build image aplikasi, kirim image tersebut ke registry staging yang Anda buat di Artifact Registry atau Container Registry saat menyiapkan lingkungan.
Repositori Artifact Registry atau Container Registry Anda harus memiliki struktur berikut:
Gambar utama aplikasi Anda harus berada di root repositori. Misalnya, jika repositori Artifact Registry atau Container Registry Anda adalah
gcr.io/exampleproject/exampleapp
, image aplikasi harus berada digcr.io/exampleproject/exampleapp
.Image untuk penampung deployment Anda harus berada dalam folder bernama
deployer
. Pada contoh di atas, image deployment harus berada digcr.io/exampleproject/exampleapp/deployer
.Jika aplikasi Anda menggunakan image penampung tambahan, setiap image tambahan harus berada di foldernya sendiri di bagian image utama. Misalnya, jika aplikasi Anda memerlukan gambar
proxy
, tambahkan gambar kegcr.io/exampleproject/exampleapp/proxy
.Semua gambar aplikasi Anda harus diberi tag dengan jalur rilis dan versi saat ini. Misalnya, jika Anda merilis versi
2.0.5
di jalur rilis2.0
, semua gambar harus diberi tag2.0
dan2.0.5
. Pelajari cara mengatur rilis.
Misalnya, gambar berikut menunjukkan repositori Artifact Registry dan Container Registry
untuk aplikasi Kubernetes Grafana Cluster. Jalur rilisnya adalah 5.3
, dan aplikasi berisi image aplikasi
utama, image deployer di foldernya sendiri, dan image Debian 9 di
debian9
. Semua gambar dalam repositori diberi tag dengan jalur yang sama,
5.3
, dan versi di jalur tersebut, 5.3.4
. Hal ini juga harus cocok dengan
kolom "Version" dari Custom Resource Definition (CRD) untuk resource Aplikasi seperti yang dideklarasikan dalam deployer.
Repositori berada di gcr.io/cloud-marketplace/google/grafana
.
Gunakan ID image container yang Anda pilih sebelumnya, saat memilih ID produk.
Untuk mengupload image ke Artifact Registry atau Container Registry, beri tag pada image dengan nama registry, lalu kirim image menggunakan gcloud
. Misalnya, gunakan
perintah berikut untuk mendorong image untuk example-pro
:
docker build -t gcr.io/my-project/example-pro:4.0 # release track 4.0
docker tag gcr.io/my-project/example-pro:4.0 gcr.io/my-project/example-pro:4.0.3 # release version 4.0.3
docker push gcr.io/my-project/example-pro:4.0
docker push gcr.io/my-project/example-pro:4.0.3
Untuk mengetahui langkah-langkah mendetail dalam memberi tag dan mengirim image ke registry, lihat dokumentasi yang relevan untuk Artifact Registry atau dokumentasi Container Registry.
Persyaratan untuk penampung deployment
Penampung deployment, atau deployer, digunakan saat pelanggan men-deploy produk Anda dari Cloud Marketplace. Image deployer
mengemas konfigurasi Kubernetes aplikasi Anda dan
alat klien, seperti kubectl
atau Helm, yang mendorong konfigurasi ke
Kubernetes API. Deployer biasanya harus menggunakan kumpulan perintah command line yang sama dengan yang akan dijalankan pengguna untuk men-deploy aplikasi Anda.
Untuk membuat deployer, gunakan salah satu image dasar untuk container deployment dari direktori marketplace repositori alat:
- Jika Anda menggunakan
kubectl
untuk konfigurasi, gunakan image dasar kubectl. - Jika Anda menggunakan diagram Helm untuk konfigurasi, gunakan image dasar Helm.
Image dasar memiliki utilitas bawaan untuk tugas seperti menetapkan referensi pemilik, pembuatan sandi, dan pembersihan pasca-penyebaran.
Untuk mengetahui langkah-langkah dalam mem-build image deployer, lihat Mem-build Application Deployer.
Parameter yang diteruskan ke aplikasi Anda
Penampung deployment Anda harus mendeklarasikan parameter yang perlu dikumpulkan dari pelanggan saat mereka memilih aplikasi Anda. Parameter ini kemudian disediakan ke penampung deployment saat pengguna men-deploy aplikasi.
Untuk mengonfigurasi parameter ini, image penampung deployment Anda harus menyertakan Skema JSON, dalam format YAML, di jalur ini: /data/schema.yaml
.
Untuk mempelajari cara membuat schema.yaml
, lihat Skema deployer.
Permintaan cluster GPU
Jika aplikasi Anda memiliki kebutuhan GPU tertentu, atau intensif GPU, Anda dapat menentukan jenis dan jumlah GPU di cluster menggunakan skema deployer. Jika Anda menentukan kebutuhan GPU, pembuatan cluster dengan bantuan akan dinonaktifkan.
Aplikasi Anda dapat meminta GPU Nvidia generik, atau platform Nvidia tertentu.
Persyaratan untuk proses Verifikasi
Aplikasi dijalankan di sistem Verifikasi kami untuk memastikan bahwa:
- Penginstalan berhasil: Semua resource diterapkan dan menunggu hingga berfungsi normal.
- Pengujian fungsi lulus: Deployer memulai Pod Penguji dan memantau status keluarnya. Nol berarti berhasil, bukan nol berarti gagal.
- Penguninstalan berhasil: Aplikasi dan semua resource-nya berhasil dihapus dari cluster.
Hasil yang berhasil diperlukan sebelum aplikasi dapat dipublikasikan ke Google Cloud Marketplace.
Untuk mengetahui detail tentang cara memaketkan, menjalankan, dan memverifikasi pengujian fungsi ini, ikuti dokumentasi tentang Integrasi verifikasi.
Persyaratan untuk panduan pengguna
Panduan pengguna Anda harus menyertakan informasi berikut:
Ringkasan
- Ringkasan aplikasi umum, yang mencakup fungsi dasar dan opsi konfigurasi. Bagian ini juga harus ditautkan ke produk yang dipublikasikan di Cloud Marketplace.
Penyiapan satu kali
- Mengonfigurasi alat klien seperti
kubectl
atau Helm. sesuai kebutuhan. - Menginstal CustomResourceDefinition (CRD) Aplikasi, sehingga cluster Anda dapat mengelola resource Aplikasi.
- Jika Anda menjual aplikasi komersial, langkah-langkah untuk mendapatkan dan men-deploy Secret lisensi dari Cloud Marketplace.
Penginstalan
- Perintah untuk men-deploy aplikasi.
- Meneruskan parameter yang tersedia di konfigurasi UI.
- Menyematkan referensi gambar ke ringkasan yang tidak dapat diubah.
Jika Anda menambahkan kolom input kustom ke skema deployer, tambahkan informasi tentang nilai yang diharapkan, jika ada.
Penggunaan Dasar
- Menghubungkan ke konsol admin (jika ada).
- Menghubungkan alat klien dan menjalankan contoh perintah (jika ada).
- Memodifikasi nama pengguna dan sandi.
- Mengaktifkan ingress dan menginstal sertifikat TLS (jika ada).
Pencadangan dan pemulihan
- Mencadangkan status aplikasi.
- Memulihkan status aplikasi dari cadangan.
Pembaruan gambar
- Memperbarui image aplikasi untuk patch atau update minor.
Penskalaan
- Menskalakan aplikasi (jika ada).
Penghapusan
- Menghapus aplikasi.
- Membersihkan resource yang mungkin sengaja dihapus, seperti PersistentVolumeClaims.