Working with Chart.yaml

1. Defining Chart Name and Version

FieldRulesExample
nameLowercase, alphanumeric + dashes, ≤63 chars, DNS-1123my-app
versionSemVer 2.0 (MAJOR.MINOR.PATCH); required for packaging1.4.2

2. Setting Application Version

Example: Quote appVersion

appVersion: "2.7.0"   # always quote — YAML may parse 1.10 as 1.1
FieldPurpose
appVersionVersion of the application packaged (free-form string)
Default image tagIf .Values.image.tag empty, helpers commonly fall back to .Chart.AppVersion

3. Declaring API Version

apiVersionCompatible HelmRequired
v2 CURRENT3.0+Yes for new charts
v1 LEGACY2.x (still readable by 3.x)No

4. Specifying Chart Type

typeInstallableUse
applicationYesDefault; produces a release
libraryNoReusable helpers; only consumed as a dependency

5. Adding Chart Description

Example: Description field

description: |
  Production-ready REST API service with Postgres, Redis cache,
  and built-in OpenTelemetry instrumentation.
TipReason
Keep ≤200 chars on one lineShown in helm search output
Use block scalar for longStill searchable; better readability

6. Adding Keywords and Sources

Example: Discoverability metadata

keywords:
  - api
  - rest
  - postgres
  - microservice
sources:
  - https://github.com/acme/api
  - https://github.com/acme/charts

7. Listing Chart Maintainers

FieldPurpose
namePerson or team (required)
emailContact email (optional)
urlGitHub profile / website (optional)

Example: maintainers block

maintainers:
  - name: Platform Team
    email: platform@acme.io
    url: https://github.com/acme

8. Setting Home URL

FieldUsage
homeProject landing page (rendered as link on Artifact Hub)

9. Adding Icon URL

FieldRequirements
iconHTTPS URL to SVG/PNG (≤200KB); square aspect ratio recommended

10. Marking Chart Deprecated

Example: Deprecate with migration note

deprecated: true
description: |
  DEPRECATED: use acme/api-v2 chart. Migration guide:
  https://docs.acme.io/charts/migrate-api-v2
Note: Repositories like Artifact Hub flag deprecated charts and hide them from default search.

11. Setting Kubernetes Version Constraint

ConstraintMeaning
kubeVersion: ">=1.27.0"Minimum cluster version
">=1.27.0-0 <1.31.0-0"Tested range; -0 includes pre-release
"~1.28"Patch-level changes only
Warning: Constraints without -0 exclude pre-release versions like v1.30.0-rc.1.