Persyaratan paket Helm
Helm adalah manajer paket untuk Kubernetes yang membantu Anda mengelola aplikasi Kubernetes. Paket Helm disebut bagan, dan terdiri dari beberapa file konfigurasi YAML dan beberapa templat yang dirender ke dalam file manifes Kubernetes. Bagan dapat digunakan kembali oleh siapa pun untuk lingkungan apa pun, yang mengurangi kompleksitas dan duplikat.
Jalur URL registri dan persyaratan imagepullsecrets
Saat mengembangkan paket helm, adalah umum untuk menyimpan URL server registri kontainer dalam nilai. Menjaga URL server registri kontainer dalam nilai berguna untuk memindahkan artefak di antara setiap registri kontainer lingkungan. Azure Operator Service Manager (AOSM) menggunakan layanan Network Function Manager (NFM) untuk menyebarkan Containerized Network Function (CNF). Network Function Manager (NFM) berisi fitur untuk menyuntikkan lokasi server registri kontainer dan imagepullsecrets ke dalam nilai helm selama penyebaran Fungsi Jaringan (NF). ImagePullSecret adalah token otorisasi, juga dikenal sebagai rahasia, yang menyimpan kredensial Docker yang digunakan untuk mengakses registri. Misalnya, jika Anda perlu menyebarkan aplikasi melalui penyebaran Kubernetes, Anda dapat menentukan penyebaran seperti contoh berikut:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
{{- if .Values.global.imagePullSecrets }}
imagePullSecrets: {{ toYaml .Values.global.imagePullSecrets | nindent 8 }}
{{- end }}
containers:
- name: contosoapp
image:{{ .Values.global.registryPath }}/contosoapp:1.14.2
ports:
- containerPort: 80
values.schema.json
adalah file yang memungkinkan Anda untuk dengan mudah menetapkan persyaratan nilai dan batasan dalam satu lokasi untuk bagan Helm. Dalam file ini, tentukan registryPath dan imagePullSecrets sebagai properti yang diperlukan.
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "StarterSchema",
"type": "object",
"required": ["global"],
"properties": {
"global" : {
"type": "object",
"properties": {
“registryPath”: {“type”: “string”},
“imagePullSecrets”: {“type”: “string”},
}
"required": [ "registryPath", "imagePullSecrets" ],
}
}
}
Payload permintaan NFDVersion menyediakan nilai berikut dalam registryValuesPaths:
"registryValuesPaths": [ "global.registryPath" ],
"imagePullSecretsValuesPaths": [ "global.imagePullSecrets" ],
Selama penyebaran NF, Network Function Operator (NFO) mengatur registriPath ke lokasi server Azure Container Registry (ACR) yang benar. Misalnya, NFO menjalankan perintah setara berikut:
$ helm install --set "global.registryPath=<registryURL>" --set "global.imagePullSecrets[0].name=<secretName>" releasename ./releasepackage
Catatan
RegistryPath diatur tanpa awalan seperti https:// atau oci://. Jika awalan diperlukan dalam paket helm, penerbit perlu menentukan ini dalam paket.
values.yaml
adalah file yang berisi nilai default untuk bagan Helm. Ini adalah file YAML yang menentukan nilai default untuk bagan. Dalam file values.yaml, dua jenis variabel harus ada; imagePullSecrets dan registryPath. Masing-masing dijelaskan dalam tabel.
global:
imagePullSecrets: []
registryPath: “”
Nama | Tipe | Deskripsi |
---|---|---|
imagePullSecrets | String | imagePullSecrets adalah array nama rahasia, yang digunakan untuk menarik gambar kontainer |
registryPath | String | registryPath adalah AzureContainerRegistry lokasi server |
imagePullSecrets dan registryPath harus disediakan dalam langkah membuat onboarding NFDVersion.
NFO yang berjalan di kluster mengisi kedua variabel ini (imagePullSecrets dan registryPath) selama rilis helm menggunakan perintah helm install –set.
Untuk informasi selengkapnya, lihat: pull-image-private-registry
Pembatasan kekekalan
Pembatasan kekekalan mencegah perubahan pada file atau direktori. Misalnya, file yang tidak dapat diubah tidak dapat diubah atau diganti namanya, dan file yang memungkinkan operasi penambahan tidak dapat dihapus, dimodifikasi, atau diganti namanya.
Hindari penggunaan tag yang dapat diubah
Pengguna harus menghindari penggunaan tag yang dapat diubah seperti terbaru, dev, atau stabil. Misalnya, jika deployment.yaml menggunakan 'terbaru' untuk . Values.image.tag penyebaran akan gagal.
image: "{{ .Values.global.registryPath }}/{{ .Values.image.repository }}:{{ .Values.image.tag}}“
Hindari referensi ke registri eksternal
Pengguna harus menghindari penggunaan referensi ke registri eksternal. Misalnya, jika deployment.yaml menggunakan jalur registri hardcoded atau referensi registri eksternal, itu gagal validasi.
image: http://myURL/{{ .Values.image.repository }}:{{ .Values.image.tag}}
Rekomendasi
Memisahkan deklarasi dan penggunaan Definisi Sumber Daya Kustom (CRD) ditambah menggunakan validasi manual adalah praktik yang direkomendasikan. Masing-masing dijelaskan di bagian berikut.
Pisahkan deklarasi dan penggunaan CRD
Sebaiknya bagi deklarasi dan penggunaan CRD menjadi bagan helm terpisah untuk mendukung pembaruan. Untuk informasi terperinci lihat: method-2-separate-charts
Validasi manual
Tinjau gambar dan spesifikasi kontainer yang dibuat untuk memastikan gambar memiliki awalan registriURL dan imagePullSecrets diisi dengan secretName.
helm template --set "global.imagePullSecrets[0].name=<secretName>" --set "global.registry.url=<registryURL>" <release-name> <chart-name> --dry-run
ATAU
helm install --set "global.imagePullSecrets[0].name=<secretName>" --set "global.registry.url=<registryURL>" <release-name> <chart-name> --dry-run
kubectl create secret <secretName> regcred --docker-server=<registryURL> --dockerusername=<regusername> --docker-password=<regpassword>
Repositori dan tag gambar statis
Setiap bagan helm harus berisi repositori dan tag gambar statis. Pengguna harus mengatur repositori gambar dan tag ke nilai statis. Nilai statis dapat diatur oleh:
- Dengan mengkodekan secara permanen di baris gambar atau,
- Mengatur Nilai dalam values.yaml dan tidak mengekspos nilai-nilai ini dalam Versi Desain Fungsi Jaringan (NFDV).
Versi Desain Fungsi Jaringan (NFDV) harus memetakan ke sekumpulan bagan dan gambar helm statis. Bagan dan gambar hanya diperbarui dengan menerbitkan Versi Desain Fungsi Jaringan (NFDV) baru.
image: "{{ .Values.global.registryPath }}/contosoapp:1.14.2“
atau
image: "{{ .Values.global.registryPath }}/{{ .Values.image.repository }}:{{ .Values.image.tag}}“
YAML values.yaml
image:
repository: contosoapp
tag: 1.14.2