Commit Graph
6 Commits
  • chore(chart): bump version to 2.6.0 with NetworkPolicy support
    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>
  • docs(readme): add comprehensive NetworkPolicy documentation
    Add "Network Security" section to README.md.gotmpl with:
    
    Requirements:
    - CNI plugin support (Calico, Cilium, Weave, Canal)
    - DLNA incompatibility explanation
    
    Configuration examples:
    - Basic usage (default settings)
    - Production configuration (Ingress controller only)
    - High security (restricted egress)
    - Monitoring integration (Prometheus)
    - Advanced scenarios (multiple namespaces, custom rules)
    
    Security considerations:
    - Metadata provider requirements (TMDB, TheTVDB, OpenSubtitles)
    - DNS access importance
    - Local metadata alternative
    - Testing recommendations
    
    Troubleshooting guide:
    - Metadata download issues
    - Web interface access problems
    - Prometheus scraping failures
    - Deployment validation errors
    
    The documentation provides complete guidance for users to implement
    NetworkPolicy according to their security requirements, from basic
    isolation to zero-trust configurations.
    
    Co-Authored-By: Claude <noreply@anthropic.com>
    Signed-off-by: Aleksei Sviridkin <f@lex.la>
  • test(networkpolicy): add comprehensive helm-unittest test suite
    Add 20+ unit tests for NetworkPolicy template covering:
    
    Creation conditions:
    - Not created by default (enabled: false)
    - Created when enabled: true
    - Fails with clear error when hostNetwork + NetworkPolicy enabled
    - Fails when DLNA + NetworkPolicy enabled
    
    Ingress rules:
    - Default allowExternal behavior (no 'from' restriction)
    - Restricted access with podSelector/namespaceSelector
    - Custom ingress rules application
    - Automatic Prometheus ingress when metrics enabled
    - Prometheus namespace selector when specified
    
    Egress rules:
    - DNS egress with default kube-system/kube-dns
    - Custom DNS namespace and pod selector
    - AllowAllEgress default behavior
    - Restricted egress modes (metadata, in-cluster)
    - Custom CIDR blocks
    - Custom egress rules application
    - DNS disabled scenario
    
    Policy configuration:
    - Correct policyTypes (Ingress, Egress)
    - Pod selector labels matching chart labels
    
    Tests ensure NetworkPolicy works correctly across all supported
    configurations and fails safely when misconfigured.
    
    Co-Authored-By: Claude <noreply@anthropic.com>
    Signed-off-by: Aleksei Sviridkin <f@lex.la>
  • feat(templates): add NOTES.txt with deployment status information
    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>
  • feat(values): add networkPolicy configuration section
    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>
  • feat(templates): add NetworkPolicy template with ingress/egress rules
    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>