Skip to content
This repository was archived by the owner on Jul 24, 2025. It is now read-only.
This repository was archived by the owner on Jul 24, 2025. It is now read-only.

Proposal: Replace ConfigMap-based deployment configuration with Custom Resource #216

@FogDong

Description

@FogDong

Is your feature request related to a problem? Please describe.
When testing llm-d, I encountered several issues with the current ConfigMap-based deployment configuration:

  • The configuration is hard to read and modify due to the ConfigMap merging behavior
  • Changes to ConfigMap don't automatically trigger deployment updates

In my testing environment with node taints, I had to:

  1. Manually modify the ConfigMap to add tolerations
  2. Delete the deployment to force the controller to reconcile
  3. Wait for the new deployment with updated configuration

Describe the solution approach you'd like
Replace ConfigMap with a dedicated Custom Resource for deployment configuration. Example:

apiVersion: llmd.ai/v1alpha1
kind: ModelServiceConfig
metadata:
  name: cfg
spec:
  modelId: gpt-35-turbo
  prefillDeployment: 
      replicas: 2,
      resources: 
          requests:
            cpu: "100m"
            memory: "128Mi"
      tolerations:
          - key: "nvidia.com/gpu"
            operator: "Exists"
            effect: "NoSchedule"

This approach would:

  • Provide better type safety and validation
  • Enable automatic reconciliation on changes with watching this CR
  • Improve configuration visibility and management
  • Allow direct JSON configuration through *runtime.RawExtension or just deployment struct

Describe alternatives you've considered

Additional context
The current ConfigMap approach makes it particularly challenging in environments with special requirements (like node taints or specific resource constraints). A Custom Resource would provide a more native Kubernetes experience and better integration with the operator pattern.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions