apiVersion: bke.bocloud.com/v1beta1
kind: KubeletConfig
metadata:
  name: bke-kubelet
  namespace: bke-kubelet
  labels:
    test: "true"
    component: "kubelet"
spec:

  kubeletConfig:
    kubelet.conf:
      raw: |
        apiVersion: kubelet.config.k8s.io/v1beta1
        kind: KubeletConfiguration
        authentication:
          anonymous:
            enabled: false
          webhook:
            cacheTTL: 0s
            enabled: true
          x509:
            clientCAFile: /etc/kubernetes/pki/ca.crt
        authorization:
          mode: Webhook
          webhook:
            cacheAuthorizedTTL: 0s
            cacheUnauthorizedTTL: 0s
        address: 0.0.0.0
        cgroupDriver: systemd
        clusterDNS:
          - "10.96.0.10"
        clusterDomain: "cluster.local"
        healthzBindAddress: 127.0.0.1
        healthzPort: 10248
        rotateCertificates: true
        staticPodPath: /etc/kubernetes/manifests
        streamingConnectionIdleTimeout: 4h0m0s
        syncFrequency: 1m0s
        volumeStatsAggPeriod: 1m0s

  kubeletService:
    enabled: true
    serviceName: "kubelet"
    unit:
      description: "Kubernetes Kubelet (Test)"
      documentation: "https://kubernetes.io/docs/concepts/overview/components/#kubelet"
      after:
        - "containerd.service"
        - "network-online.target"
      wants:
        - "network-online.target"
      requires:
        - "containerd.service"
    service:
      execStart: "/usr/bin/kubelet \
      --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf \
      --kubeconfig=/etc/kubernetes/kubelet.conf \
      --config=/var/lib/kubelet/config.yaml \
      --container-runtime-endpoint=unix:///run/containerd/containerd.sock \
      --pod-infra-container-image=registry.k8s.io/pause:3.9 \
      --cgroup-driver=systemd \
      --register-node=true \
      --v=2"
      restart: "always"
      restartSec: 10
      startLimitBurst: 5
      killMode: "process"
      standardOutput: "journal+console"
      standardError: "journal+console"
      syslogIdentifier: "kubelet-test"
      workingDirectory: "/var/lib/kubelet"
      user: "root"
      group: "root"

    install:
      wantedBy:
        - "multi-user.target"
      requiredBy: []

    variables:
      kubeletBinaryPath: "/usr/bin/kubelet"
      kubeletConfigPath: "/etc/kubernetes/kubelet.conf"
      nodeName: "test-node-01"
      nodeIP: "xx"
      containerdEndpoint: "unix:///run/containerd/containerd.sock"
      pauseImage: "registry.aliyuncs.com/google_containers/pause:3.9"


  files:
    - path: "/etc/kubernetes/test-kubelet-extra.conf"
      content: |
        maxPods: ${maxPods}
        logLevel: ${logLevel}
        clusterDomain: ${clusterDomain}
        nodeHostname: "${EXPR:hostname}"
        nodePrimaryIP: "${EXPR:hostname -I | awk '{print $1}'}"
      permissions: "0644"
      owner: "root:root"
    - path: "/var/lib/kubelet/test-config-flag.txt"
      content: |
        createdAt: ${EXPR:date +%Y-%m-%d_%H:%M:%S}
        configSource: test-kubelet-config
      permissions: "0600"
      owner: "root:root"

  commands:
    - command: "/bin/bash"
      args:
        - "-c"
        - |
          echo "=== KubeletConfig CR 测试命令执行 ===" >> /var/log/test-kubelet-commands.log
          echo "执行时间: $(date +%Y-%m-%d_%H:%M:%S)" >> /var/log/test-kubelet-commands.log
          echo "节点 IP: ${nodeIP}" >> /var/log/test-kubelet-commands.log
          echo "kubelet 配置路径: ${kubeletConfigPath}" >> /var/log/test-kubelet-commands.log
          if [ -f "${kubeletConfigPath}" ]; then
            echo "kubelet.conf 存在,大小: $(du -sh ${kubeletConfigPath} | awk '{print $1}')" >> /var/log/test-kubelet-commands.log
          else
            echo "警告:kubelet.conf 不存在" >> /var/log/test-kubelet-commands.log
          fi
      workingDir: "/var/log"
    - command: "/usr/bin/systemctl"
      args:
        - "is-active"
        - "containerd.service"
      workingDir: "/"