Uploaded image for project: 'OpenShift Kueue'
  1. OpenShift Kueue
  2. OCPKUEUE-418

[Kueue Operator] Central TLS Profile consistency

XMLWordPrintable

    • Icon: Epic Epic
    • Resolution: Unresolved
    • Icon: Major Major
    • None
    • None
    • [Kueue Operator] Central TLS Profile consistency
    • To Do
    • None
    • 65% To Do, 10% In Progress, 25% Done
    • False
    • Hide

      None

      Show
      None
    • False
    • None
    • None
    • None

      Implementation Guide

      TLS Security Profile Implementation Guide for Kueue Operator

      {warning}Release Blocker: TLS profile compliance is a release blocker as of OCP 4.22 GA. All OpenShift components must support centralized TLS profile configuration by this release.{warning}

      Epic Goal

      Implement configurable TLS security profiles for the Kueue Operator to:

      • Use the cluster's TLS security profile configuration as default (from APIServer.spec.tlsSecurityProfile)
      • Expose a standardized CRD interface (Kueue.spec.tlsSecurityProfile) to override TLS settings
      • Advertise TLS profile support via CSV annotation for OperatorHub discoverability
      • Upstream First: Contribute TLS profile support to upstream Kueue project before implementing in the operator

      Post-Quantum Cryptography (PQC) Readiness

      This platform-wide TLS profile consistency is a stepping stone in OpenShift's post-quantum cryptographic support journey:

      • PQC-resilient algorithms will be available in TLS 1.3 only
      • Components must dynamically inherit TLS settings from the designated global configuration source (API Server by default)
      • Customers can opt into PQC-resilient ciphers across the entire platform by adjusting the three documented configuration knobs
      • Customers in FSI and government sectors require custom TLS profiles that must be enforced platform-wide

      Goal: Set up a PQC-ready TLS profile in one pass by properly adhering to all aspects of the configured profile.

      Why is this important?

      • OpenShift supports cluster-wide TLS configuration for security compliance, but this currently doesn't extend to OLM-managed operators like Kueue
      • Customers require consistent cipher selection across all OpenShift components for regulatory compliance
      • Kueue Operator is part of the OpenShift value-add and should follow platform security standards
      • OCPSTRAT-284 mandates this for all layered products

      Scenarios

      1. Default behavior: Kueue Operator reads cluster TLS profile from APIServer.spec.tlsSecurityProfile and applies it to all HTTPS endpoints
      2. Intermediate profile (default): When no profile is configured, use Intermediate (TLS 1.2, 11 ciphers)
      3. Old profile: Support legacy clients with TLS 1.0 and 29 ciphers when cluster admin configures Old profile
      4. Modern profile: Maximum security with TLS 1.3 only (3 ciphers) when configured - PQC-ready
      5. Custom profile: Support user-defined TLS version and cipher suites
      6. Dynamic update: TLS profile changes take effect via rolling restart of operand pods

      Architecture Notes

      • Two-level operator: Kueue Operator manages the Kueue operand (upstream Kueue controller-manager)
      • Upstream dependency: Upstream Kueue currently has no TLS profile configuration - requires KEP and implementation
      • TLSOpts pattern: Controller-runtime's metricsserver.Options.TLSOpts and webhook.Options.TLSOpts accept []func(*tls.Config) for TLS customization
      • Three HTTPS endpoints: Metrics server (port 8443), Webhook server (port 9443), Visibility API server (port 8082)
      • ConfigMap-based config: Operator generates controller_manager_config.yaml ConfigMap with TLS settings for operand

      Acceptance Criteria

      • [ ] All local or hardcoded TLS configurations removed
      • [ ] Component fetches TLS policy from APIServer
      • [ ] TLS scanner confirms compliance with global policy
      • [ ] Service remains stable after changes
      • [ ] Component explicitly respects all TLS profile settings (not Go defaults)
      • [ ] Functional testing confirms only permitted TLS settings accepted
      • [ ] Component is PQC-ready through proper TLS profile adherence
      • [ ] CSV includes features.operators.openshift.io/tls-profiles: "true" annotation
      • [ ] RBAC includes permission to get/list/watch config.openshift.io/apiservers (already in place)

      Child Stories

      Upstream Kueue Contribution

      Key Summary
      OCPKUEUE-450 [Upstream] Create KEP for TLS Security Profile Support
      OCPKUEUE-451 [Upstream] Add TLS profile fields to Configuration API
      OCPKUEUE-452 [Upstream] Implement TLS profile for Metrics Server
      OCPKUEUE-453 [Upstream] Implement TLS profile for Webhook Server
      OCPKUEUE-454 [Upstream] Implement TLS profile for Visibility Server
      OCPKUEUE-455 [Upstream] Add unit tests for TLS profile configuration
      OCPKUEUE-456 [Upstream] Add e2e tests for TLS profile validation
      OCPKUEUE-457 [Upstream] Documentation for TLS profile configuration

      Kueue Operator (Downstream)

      Key Summary
      OCPKUEUE-458 Add tlsSecurityProfile field to Kueue CRD
      OCPKUEUE-459 Create TLS helper package in operator
      OCPKUEUE-460 Add APIServer informer and watcher
      OCPKUEUE-461 Generate TLS configuration in operand ConfigMap
      OCPKUEUE-462 Trigger operand rollout on TLS profile change
      OCPKUEUE-463 Add CSV annotation for TLS profile support
      OCPKUEUE-464 Unit tests for operator TLS functionality
      OCPKUEUE-465 E2E tests for TLS profile compliance
      OCPKUEUE-466 TLS scanner verification

      Documentation & Validation

      Key Summary
      OCPKUEUE-467 Document TLS profile configuration for Kueue Operator
      OCPKUEUE-468 Security scan and compliance validation

      Dependencies

      • OCPSTRAT-284 - Parent strategy for TLS security profiles
      • OCPSTRAT-2553 - Initiative for OLM content TLS compliance
      • github.com/openshift/api - TLS profile types (configv1.TLSSecurityProfile, configv1.TLSProfiles)
      • github.com/openshift/library-go - Cipher conversion (crypto.OpenSSLToIANACipherSuites)
      • github.com/openshift/client-go - OpenShift API client
      • kubernetes-sigs/kueue - Upstream Kueue (requires TLS profile contribution)

      Implementation Approach

      Pattern: Upstream-first with operator integration

      TLS Profile Resolution Order:

      1. Kueue.spec.tlsSecurityProfile (operator override)
      2. APIServer.spec.tlsSecurityProfile (cluster-wide)
      3. Intermediate profile (default)

      Components to Configure (Upstream Kueue):

      • Metrics Server (cmd/kueue/main.go) - uses metricsserver.Options.TLSOpts
      • Webhook Server (cmd/kueue/main.go) - uses webhook.Options.TLSOpts
      • Visibility API Server (pkg/visibility/server.go) - uses genericoptions.SecureServing

      Operator Files to Modify:

      • pkg/apis/kueueoperator/v1/types.go - Add TLSSecurityProfile field
      • pkg/tls/ (new) - TLS helper package
      • pkg/operator/starter.go - Add config client and informer
      • pkg/operator/target_config_reconciler.go - APIServer watch, ConfigMap generation
      • bundle/manifests/*.clusterserviceversion.yaml - CSV annotation

      Parallel Work Strategy

      Can Start Now (No Upstream Dependency):

      Blocked on Upstream:

      Getting Help

      References

      Future Work

      Key Summary Status
      OCPKUEUE-469 Add TLS curve preferences support when openshift/api#2583 merges BLOCKED
      {info}Note: OCPKUEUE-469 is blocked until openshift/api#2583 merges. The upstream KEP (OCPKUEUE-450) includes curve preferences in its design, so only the operator integration is blocked.{info}

      Done Checklist

      • [ ] Upstream KEP approved
      • [ ] Upstream TLS implementation merged
      • [ ] Operator code changes complete
      • [ ] Unit tests passing
      • [ ] E2E tests passing
      • [ ] TLS scanner verification complete
      • [ ] Documentation updated
      • [ ] Security validation complete
      • [ ] PR approved and merged

              harpatil@redhat.com Harshal Patil
              rh-ee-kehannon Kevin Hannon
              None
              None
              None
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated: