Skip to content

Implement Kubernetes recommended labels for all chart components - #17

Merged
djfarrelly merged 3 commits into
mainfrom
task/improve-common-label-usage
Feb 18, 2026
Merged

djfarrelly merged 3 commits into
mainfrom
task/improve-common-label-usage

Conversation

@djfarrelly

@djfarrelly djfarrelly commented Feb 12, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Implement proper semantic labeling following Kubernetes best practices
  • Add component-specific label helpers for inngest server, PostgreSQL, and Redis
  • Fix app.kubernetes.io/name to identify actual applications, not the chart name

Description

This PR updates the Helm chart to follow Kubernetes recommended labels conventions,
ensuring proper semantic labeling across all components.

Changes

Label Schema:

Component app.kubernetes.io/name app.kubernetes.io/component app.kubernetes.io/part-of
Inngest Server inngest server inngest
PostgreSQL postgresql database inngest
Redis redis queue inngest

New Helper Functions in _helpers.tpl:

  • inngest.server.labels / inngest.server.selectorLabels
  • inngest.postgresql.labels / inngest.postgresql.selectorLabels
  • inngest.redis.labels / inngest.redis.selectorLabels

Files Modified: 18 files across all template resources

Why This Matters

Previously, all components used the same app.kubernetes.io/name: inngest label, which:

  • Made it difficult to query/filter resources by actual application
  • Didn't follow Kubernetes semantics where name should identify the application
  • Required manual app.kubernetes.io/component additions that were inconsistent

Now each component has proper labels that enable:

  • Filtering all PostgreSQL resources: app.kubernetes.io/name=postgresql
  • Filtering all Inngest platform resources: app.kubernetes.io/part-of=inngest
  • Understanding component roles: app.kubernetes.io/component=database

⚠️ Breaking Change

This is a breaking change for existing deployments.

Changing app.kubernetes.io/name in selector labels causes Kubernetes to reject updates to existing Deployments because selector fields are immutable after creation.

Upgrade Path:

Users upgrading from previous versions must delete and recreate their deployments:

# Option 1: Delete specific deployments
kubectl delete deployment inngest inngest-postgresql inngest-redis -n inngest
helm upgrade <release-name> .

# Option 2: Full reinstall
helm uninstall <release-name>
helm install <release-name> .

@djfarrelly
djfarrelly marked this pull request as ready for review February 18, 2026 01:23
# Conflicts:
#	templates/deployment.yaml
Comment thread templates/service.yaml
# Route traffic to pods with matching labels
selector:
{{- include "inngest.selectorLabels" . | nindent 4 }}
{{- include "inngest.server.selectorLabels" . | nindent 4 }}

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ensure that traffic is routed to only the server pods, not any other pod like Redis.

@djfarrelly
djfarrelly merged commit 3662f75 into main Feb 18, 2026
4 checks passed
@djfarrelly
djfarrelly deleted the task/improve-common-label-usage branch February 18, 2026 17:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant