Commit Graph
4 Commits
  • 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>