Add Custom Devices Using ConfigMap

Introduction

  • Implements standardized definition and management of Kubernetes custom resources through ConfigMap, addressing:
  • Unified management of custom resource specifications to prevent configuration fragmentation
  • Standardized resource definition format for better maintainability
  • Multi-language description support and default value configuration
  • Suitable for scenarios requiring Kubernetes resource model extension (e.g., GPU resource management), providing a standardized resource definition framework

Features

  • Single-key resource definition specification
  • Multi-key associated resource definition
  • Standardized resource request interface
  • Chinese/English bilingual description support
  • Resource default value configuration mechanism

Advantages

  • Extensibility: Resource group management through labels
  • Security: Namespace isolation (kube-public)
  • Stability: Enforced format validation rules
  • Maintainability: Unified metadata label specifications

Function Module 1: ConfigMap Authoring Specifications

Core Rules

  1. Single Responsibility Principle: One ConfigMap per key definition

  2. Namespace: Fixed to namespace=kube-public

  3. Naming Convention:

    cf-crl-{customName}-{keyName}
    • cf-crl: Fixed prefix
    • customName: Custom valid name
    • keyName: Key identifier (special characters replaced with '-')
  4. Label Requirements:

    labels:
      features.alauda.io/type: CustomResourceLimitation  # Fixed value
      features.alauda.io/group: {resource-group}         # e.g., gpu-manager
      features.alauda.io/enabled: "true"               # Activation flag
    

Parameter Specification

ParameterRequiredDescription
name formatYesFollows cf-crl-{customName}-{keyName}
namespaceYesFixed as kube-public
label groupYesMust contain specified 3 feature labels

Function Module 2: Resource Value Definition

Single Key Example

apiVersion: v1
kind: ConfigMap
metadata:
  name: cf-crl-gpu-manager-vcuda-core
  namespace: kube-public
  labels:
    features.alauda.io/type: CustomResourceLimitation
    features.alauda.io/group: gpu-manager
    features.alauda.io/enabled: "true"
data:
  key: "tencent.com/vcuda-core"       # Resource key
  dataType: "integer"                # Value type
  defaultValue: "20"                 # Default value
  descriptionZh: "" # Chinese description
  descriptionEn: "GPU vcore count, 100 virtual cores equal 1 physical GPU core" # English description
  group: "gpu-manager"               # Resource group
  limits: "optional"                 # Limits field policy
  requests: "disabled"               # Requests field policy

Multi-key Association

metadata:
  name: cf-crl-gpu-manager-vcuda-core
  labels: [same group labels]

metadata:
  name: cf-crl-gpu-manager-vcuda-memory
  labels: [same group labels]  # Association through identical labels

Policy Specification

FieldAllowed ValuesDescription
limitsdisabled/required/optionalResource limits configuration
requestsdisabled/required/fromLimitsResource requests configuration