Rumah >pembangunan bahagian belakang >Golang >Memperkenalkan Helm CEL: Cara yang Lebih Ekspresif untuk Mengesahkan Carta Helm Anda

Memperkenalkan Helm CEL: Cara yang Lebih Ekspresif untuk Mengesahkan Carta Helm Anda

Barbara Streisand
Barbara Streisandasal
2024-11-22 16:35:16748semak imbas

Introducing Helm CEL: A More Expressive Way to Validate Your Helm Charts

Jika anda pernah menggunakan carta Helm, anda mungkin sudah biasa dengan cabaran mengesahkan nilai.yaml. Walaupun pengesahan JSON Schema terbina dalam Helm berfungsi, ia boleh menyusahkan dan mengehadkan. Hari ini, saya ingin memperkenalkan anda kepada Helm CEL, pemalam yang membawa kuasa Bahasa Ungkapan Biasa (CEL) Google kepada pengesahan carta Helm.

Apakah CEL?

Sebelum terjun, jom cepat-cepat cover apa itu CEL. Common Expression Language (CEL) ialah bahasa ungkapan ringkas yang dicipta oleh Google yang membolehkan anda menulis peraturan pengesahan yang ringkas dan berkuasa. Ia digunakan dalam pengesahan CRD Kubernetes, konfigurasi Istio dan banyak projek lain dalam ekosistem asli awan.

Mengapa Menggunakan CEL Daripada Skema JSON?

  1. Lebih Ekspresif: CEL membolehkan anda menulis peraturan pengesahan yang kompleks dengan cara yang lebih semula jadi dan boleh dibaca
  2. Sintaks Familiar: Jika anda datang daripada bahasa pengaturcaraan seperti Python atau JavaScript, sintaks CEL akan berasa semula jadi
  3. Selamat Jenis: CEL menyediakan pemeriksaan jenis yang kuat sambil kekal fleksibel
  4. Dibina untuk Cloud Native: CEL sudah digunakan di seluruh ekosistem Kubernetes

Bermula

Mula-mula, pasang pemalam:

helm plugin install https://github.com/idsulik/helm-cel

Daripada membuat values.schema.json, anda akan mencipta fail values.cel.yaml dalam direktori carta anda. Berikut ialah contoh mudah:

rules:
  - expr: "has(values.service) && has(values.service.port)"
    desc: "service port is required"

  - expr: "values.service.port >= 1 && values.service.port <= 65535"
    desc: "service port must be between 1 and 65535"

  - expr: "!(has(values.replicaCount)) || values.replicaCount >= 1"
    desc: "if replicaCount is set, it must be at least 1"

Untuk mengesahkan carta anda:

helm cel ./mychart

Contoh Dunia Nyata

Mari kita lihat beberapa corak pengesahan biasa dan cara ia dinyatakan dalam Skema JSON dan CEL.

1. Medan Diperlukan

Skema JSON:

{
  "required": ["service"],
  "properties": {
    "service": {
      "required": ["port"],
      "properties": {
        "port": {
          "type": "integer"
        }
      }
    }
  }
}

CEL:

rules:
  - expr: "has(values.service) && has(values.service.port)"
    desc: "service port is required"

2. Keperluan Bersyarat

Skema JSON:

{
  "if": {
    "properties": {
      "persistence": {
        "const": true
      }
    }
  },
  "then": {
    "required": ["storageClass"]
  }
}

CEL:

rules:
  - expr: "!has(values.persistence) || !values.persistence || has(values.storageClass)"
    desc: "storageClass is required when persistence is enabled"

3. Pengesahan Kompleks

Skema JSON boleh menjadi agak bertele-tele untuk pengesahan yang kompleks. Berikut ialah contoh CEL yang akan menjadi lebih rumit dalam Skema JSON:

rules:
  - expr: |
      !has(values.resources) || 
      (!has(values.resources.limits) && !has(values.resources.requests)) ||
      (has(values.resources.limits.memory) && has(values.resources.requests.memory) &&
       int(values.resources.requests.memory) <= int(values.resources.limits.memory))
    desc: "If resources are specified, memory request must not exceed memory limit"

Mesej Ralat Yang Masuk Akal

Salah satu ciri terbaik Helm CEL ialah mesej ralatnya yang jelas. Apabila pengesahan gagal, anda mendapat output berguna seperti ini:

❌ Validation failed: replica count must be at least 1
   Rule: values.replicaCount >= 1
   Path: replicaCount
   Current value: 0

Pertimbangan Prestasi

Ekspresi CEL disusun dan dinilai dengan cekap. Pemalam menambah overhed minimum pada aliran kerja Helm anda, menjadikannya sesuai untuk kedua-dua pembangunan dan saluran paip CI/CD.

Langkah Seterusnya

  1. Pasang pemalam: pasang pemalam helm https://github.com/idsulik/helm-cel
  2. Lihat repositori GitHub untuk mendapatkan lebih banyak contoh
  3. Mula menulis peraturan pengesahan anda sendiri!

Kesimpulan

Helm CEL membawa cara yang lebih ekspresif dan boleh diselenggara untuk mengesahkan carta Helm anda. Jika anda pernah mendapati diri anda bergelut dengan Skema JSON atau inginkan peraturan pengesahan yang lebih fleksibel, cubalah. Gabungan sintaks yang biasa, ungkapan kuat dan mesej ralat yang jelas menjadikannya tambahan yang berharga kepada mana-mana kit alat pengguna Helm.

Apakah corak pengesahan yang anda ingin lihat? Beritahu saya dalam ulasan di bawah!

Atas ialah kandungan terperinci Memperkenalkan Helm CEL: Cara yang Lebih Ekspresif untuk Mengesahkan Carta Helm Anda. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn