Resolve conflicts by combining inotify troubleshooting documentation with
all features from master-vnext integration branch:
- inotify troubleshooting docs (this branch)
- HTTPRoute support
- envFrom support
- Startup probe
- Cache persistence
- IPv6 dual-stack
- revisionHistoryLimit
- initContainers deprecation
Updated version to 3.0.0 and merged all changelog entries.
Regenerated README.md from template.
Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Aleksei Sviridkin <f@lex.la>
Resolve conflicts by combining NetworkPolicy feature with all features from
master-vnext integration branch:
- NetworkPolicy support (this branch)
- HTTPRoute support
- envFrom support
- Startup probe
- Cache persistence
- IPv6 dual-stack
- revisionHistoryLimit
- initContainers deprecation
Updated version to 3.0.0 and merged all changelog entries.
Regenerated README.md from template.
Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Aleksei Sviridkin <f@lex.la>
Automatically extract and format changelog from artifacthub.io/changes
annotations in Chart.yaml and update GitHub release notes.
Changes:
- Install yq for YAML parsing
- Add step to extract changelog from Chart.yaml
- Format changelog with emojis based on change kind (added, fixed, etc.)
- Build comprehensive release notes with:
- Chart and app versions
- Formatted changelog
- Installation and upgrade instructions
- Links to documentation
- Update release notes after chart-releaser creates the release
This addresses the issue where releases only contained "A Helm chart for
Jellyfin Media Server" without any information about what changed.
Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Aleksei Sviridkin <f@lex.la>
Add helm-unittest tests for revisionHistoryLimit:
- Default value (3) verification
- Custom values support (0, 1, 5, 100)
- Ability to disable revision history
Add NOTES.txt with revisionHistoryLimit information:
- Show configured revision history limit
- Warning when disabled (0)
- Note for minimal history (1)
- Rollback command example for normal values
This parameter controls how many old ReplicaSets are retained
for rollback purposes, reducing etcd storage usage.
Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Aleksei Sviridkin <f@lex.la>
Add revisionHistoryLimit parameter to control how many old ReplicaSets are
retained for rollback purposes, reducing etcd storage usage compared to
Kubernetes default of 10.
Changes:
- Add revisionHistoryLimit parameter in values.yaml (default: 3)
- Add revisionHistoryLimit to deployment.yaml spec
- Provide comprehensive documentation with recommendations
- Bump chart version 2.5.0 -> 2.5.1 (patch - minor enhancement)
- Add changelog annotation for Artifact Hub
Benefits:
- Reduce etcd storage usage (especially important in large clusters)
- Maintain reasonable rollback capability (3 previous versions)
- Allow customization based on deployment needs
- Can be set to null to use Kubernetes default (10)
Default rationale:
- 3 revisions provides sufficient rollback capability for most use cases
- Reduces cluster resource usage (etcd storage, API server load)
- Follows best practices from production Kubernetes deployments
- Users can override if they need more history
Example usage:
# Use default (3 revisions)
revisionHistoryLimit: 3
# Increase for critical deployments
revisionHistoryLimit: 10
# Use Kubernetes default (10)
revisionHistoryLimit: null
# Disable history (not recommended)
revisionHistoryLimit: 0
See: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#revision-history-limit
Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Aleksei Sviridkin <f@lex.la>
Add helm-unittest tests for envFrom functionality:
- No envFrom by default
- ConfigMap reference support
- Secret reference support
- Multiple envFrom sources
- Optional ConfigMap/Secret support
- Prefix support for variable namespacing
- Compatibility with regular env variables
Add NOTES.txt with envFrom information:
- Show count of envFrom sources
- List each source (ConfigMap or Secret)
- Display optional and prefix settings
Tests ensure envFrom works correctly for loading environment
variables from ConfigMaps and Secrets.
Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Aleksei Sviridkin <f@lex.la>
Add helm-unittest tests for init containers:
- No init containers by default
- extraInitContainers support (single and multiple)
- Full container spec preservation (command, args, volumeMounts, securityContext)
- Backward compatibility with deprecated initContainers parameter
- Merging of initContainers and extraInitContainers
- Correct ordering when both are specified
Add NOTES.txt with init containers information:
- Show count of configured init containers
- Deprecation warning when old initContainers parameter is used
- Migration guidance to extraInitContainers
This fixes the critical bug where extraInitContainers didn't work and
provides clear migration path from deprecated initContainers.
Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Aleksei Sviridkin <f@lex.la>
Add helm-unittest tests for startup probe:
- Default configuration verification (tcpSocket, timing)
- Custom timing parameters (initialDelaySeconds, periodSeconds, failureThreshold)
- Alternative probe types (httpGet)
- Custom port support
- Timeout window calculation
Add NOTES.txt with startup probe information:
- Display max startup time calculation
- Explain startup probe purpose for large libraries
- Warning for very long startup timeouts
Tests ensure startup probe works correctly for slow initial startup scenarios.
Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Aleksei Sviridkin <f@lex.la>
Add NOTES.txt with:
- Basic access instructions (Ingress or port-forward)
- Reference to troubleshooting documentation in README
- Links to Jellyfin documentation
This complements the inotify troubleshooting documentation added
in README.md.gotmpl, making users aware of available resources.
Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Aleksei Sviridkin <f@lex.la>
Add helm-unittest tests for IPv6 and dual-stack Service configuration:
- Default behavior (no ipFamilyPolicy/ipFamilies set)
- SingleStack, PreferDualStack, RequireDualStack policies
- IPv4 only, IPv6 only configurations
- Dual-stack with IPv4 primary and IPv6 primary
- Combined policy and families configurations
Add NOTES.txt with IPv6/dual-stack information:
- Display configured IP family policy
- Show IP families list
- Warning when IPv6 is primary (probe compatibility note)
- Warning when IPv6 used without policy
Tests ensure IPv6 and dual-stack work correctly for all scenarios.
Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Aleksei Sviridkin <f@lex.la>
Add helm-unittest test suite for HTTPRoute (Gateway API) covering:
- Not created by default (enabled: false)
- Created when enabled with required configuration
- Annotations support
- parentRefs configuration (name, namespace, sectionName)
- Hostnames support (single and multiple)
- Path matching rules (PathPrefix, Exact)
- Multiple rules and multiple matches per rule
- Backend references to Jellyfin service
- Custom service port handling
Add NOTES.txt with HTTPRoute-specific deployment information:
- Gateway references and configuration status
- Configured hostnames
- Number of routes
- Backend service details
- Access URLs when hostnames configured
- Warnings for missing parentRefs
Tests ensure HTTPRoute works correctly across all Gateway API scenarios.
Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Aleksei Sviridkin <f@lex.la>
Regenerate README.md from README.md.gotmpl template using helm-docs.
This adds the complete NetworkPolicy documentation section and updates
the values table with all networkPolicy configuration parameters.
The generated documentation includes:
- Updated version badge (2.6.0)
- Complete networkPolicy values table with descriptions
- Network Security section with examples and troubleshooting
- All parameters from values.yaml with auto-generated descriptions
Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Aleksei Sviridkin <f@lex.la>
Bump chart version from 2.5.0 to 2.6.0 (minor version) for new feature.
Added artifacthub.io/changes annotations:
- NetworkPolicy support for network isolation and security hardening
- NOTES.txt with deployment status and configuration summary
This is a backward-compatible change:
- NetworkPolicy is disabled by default
- Existing installations will not be affected
- Users can opt-in to NetworkPolicy by setting networkPolicy.enabled=true
The NetworkPolicy feature provides enterprise-grade network security
controls for Jellyfin deployments in Kubernetes environments with
CNI plugin support.
Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Aleksei Sviridkin <f@lex.la>
Add NOTES.txt template that displays helpful information after deployment:
- How to access Jellyfin (via Ingress or port-forward)
- NetworkPolicy status and configuration summary when enabled
- Ingress policy details (allowExternal, selectors, Prometheus)
- Egress policy details (DNS, internet access, restrictions)
- Warnings for misconfigurations (no selectors, DNS disabled)
- Compatibility note about CNI requirements
- Warning if NetworkPolicy + hostNetwork are both enabled
The NOTES provide immediate visibility into the deployment configuration
and help users quickly identify and troubleshoot network access issues.
Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Aleksei Sviridkin <f@lex.la>
Add networkPolicy section to values.yaml with comprehensive configuration options:
- enabled: boolean flag to enable/disable NetworkPolicy (default: false)
- policyTypes: configure Ingress and/or Egress policies
- ingress: control which pods/namespaces can access Jellyfin
- allowExternal: permit access from any namespace (default: true)
- podSelector/namespaceSelector: restrict access to specific pods/namespaces
- customRules: advanced ingress rules for complex scenarios
- egress: control outbound connections from Jellyfin
- allowDNS: permit DNS resolution (default: true, required)
- allowAllEgress: permit all internet access (default: true)
- restrictedEgress: high-security mode with HTTPS-only metadata access
- customRules: advanced egress rules
- metrics: automatic Prometheus integration configuration
All parameters include detailed documentation explaining:
- Purpose and usage
- Default values and recommended settings
- Examples for common scenarios
- Security implications
The configuration supports use cases from simple deployments to
zero-trust environments while maintaining sensible defaults.
Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Aleksei Sviridkin <f@lex.la>
Add comprehensive NetworkPolicy support for Jellyfin pod with:
- Ingress rules: configurable external access or namespace/pod selectors
- Egress rules: DNS resolution, metadata providers, custom rules
- Automatic Prometheus integration when metrics are enabled
- DLNA/hostNetwork detection with fail-safe error message
- Support for restrictedEgress mode for high-security environments
The NetworkPolicy is disabled by default to maintain backward compatibility.
When enabled, it provides fine-grained control over network traffic:
- Who can access Jellyfin (ingress)
- What external connections Jellyfin can make (egress)
NetworkPolicy requires CNI plugin support (Calico, Cilium, etc.) and
cannot be used with hostNetwork mode (DLNA). The template includes
validation to prevent misconfiguration.
Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Aleksei Sviridkin <f@lex.la>
Add support for loading environment variables from ConfigMap or Secret
resources using envFrom field, following Kubernetes best practices for
configuration management.
Changes:
- Add jellyfin.envFrom parameter in values.yaml
- Add envFrom section in deployment.yaml template (before env)
- Provide comprehensive documentation with examples
- Bump chart version 2.5.0 -> 2.6.0 (minor - new feature)
- Add changelog annotation for Artifact Hub
Use cases:
- Load multiple environment variables from ConfigMap without defining each one
- Load secrets from external secret management systems
- Separate configuration from chart values (12-factor app pattern)
- Simplify configuration for complex deployments
Example usage:
jellyfin:
envFrom:
- configMapRef:
name: jellyfin-config
- secretRef:
name: jellyfin-secrets
Follows standard Kubernetes patterns used by most community Helm charts.
Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Aleksei Sviridkin <f@lex.la>