apiVersion: v1
kind: Namespace
metadata:
  labels:
    cluster.x-k8s.io/provider: infrastructure-bke
    control-plane: controller-manager
  name: cluster-system
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.19.0
  name: clusterversions.config.openfuyao.com
spec:
  group: config.openfuyao.com
  names:
    kind: ClusterVersion
    listKind: ClusterVersionList
    plural: clusterversions
    shortNames:
      - cv
    singular: clusterversion
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .spec.desiredVersion
          name: Desired
          type: string
        - jsonPath: .status.currentVersion
          name: Current
          type: string
        - jsonPath: .status.phase
          name: Phase
          type: string
      name: v1alpha1
      schema:
        openAPIV3Schema:
          description: ClusterVersion tracks desired and current openFuyao cluster version.
          properties:
            apiVersion:
              type: string
            kind:
              type: string
            metadata:
              type: object
            spec:
              description: ClusterVersionSpec defines the desired cluster version state.
              properties:
                desiredVersion:
                  description: DesiredVersion is the target openFuyao version for the cluster.
                  type: string
              type: object
            status:
              description: ClusterVersionStatus defines the observed cluster version state.
              properties:
                conditions:
                  items:
                    description: ClusterVersionCondition reports fine-grained readiness.
                    properties:
                      lastTransitionTime:
                        format: date-time
                        type: string
                      message:
                        type: string
                      reason:
                        type: string
                      status:
                        type: string
                      type:
                        type: string
                    type: object
                  type: array
                currentVersion:
                  type: string
                phase:
                  description: ClusterVersionPhase is the lifecycle phase of a ClusterVersion.
                  enum:
                    - Pending
                    - Installing
                    - Installed
                    - Ready
                    - PreChecking
                    - Upgrading
                    - Upgraded
                    - Blocked
                    - PreCheckFailed
                    - Failed
                  type: string
                upgradeHistory:
                  items:
                    description: ClusterUpgradeRecord records one upgrade attempt.
                    properties:
                      completedAt:
                        format: date-time
                        type: string
                      from:
                        type: string
                      startedAt:
                        format: date-time
                        type: string
                      status:
                        description: ClusterUpgradeRecordStatus is the result of an upgrade record.
                        enum:
                          - Succeeded
                          - Failed
                          - RolledBack
                        type: string
                      to:
                        type: string
                    type: object
                  type: array
              type: object
          type: object
      served: true
      storage: true
      subresources:
        status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.20.0
  name: componentversions.config.openfuyao.com
spec:
  group: config.openfuyao.com
  names:
    kind: ComponentVersion
    listKind: ComponentVersionList
    plural: componentversions
    singular: componentversion
  scope: Namespaced
  versions:
    - name: v1alpha1
      schema:
        openAPIV3Schema:
          description: ComponentVersion is the Schema for the componentversions API
          properties:
            apiVersion:
              description: |-
                APIVersion defines the versioned schema of this representation of an object.
                Servers should convert recognized schemas to the latest internal value, and
                may reject unrecognized values.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
              type: string
            kind:
              description: |-
                Kind is a string value representing the REST resource this object represents.
                Servers may infer this from the endpoint the client submits requests to.
                Cannot be updated.
                In CamelCase.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
              type: string
            metadata:
              type: object
            spec:
              description: ComponentVersionSpec defines the desired state of ComponentVersion
              properties:
                compatibility:
                  description: CompatibilitySpec defines compatibility constraints
                  properties:
                    constraints:
                      items:
                        description: Constraint defines a single compatibility constraint
                        properties:
                          component:
                            type: string
                          rule:
                            type: string
                        required:
                          - component
                          - rule
                        type: object
                      type: array
                  type: object
                dependencies:
                  items:
                    description: Dependency defines a dependency on another component
                    properties:
                      name:
                        type: string
                      phase:
                        type: string
                    required:
                      - name
                    type: object
                  type: array
                inline:
                  description: InlineSpec defines the inline handler configuration
                  properties:
                    handler:
                      type: string
                    version:
                      type: string
                  required:
                    - handler
                    - version
                  type: object
                name:
                  type: string
                resources:
                  items:
                    description: ResourceSpec defines a Kubernetes resource to be applied
                    properties:
                      apiVersion:
                        type: string
                      data:
                        additionalProperties:
                          type: string
                        type: object
                      kind:
                        type: string
                      labels:
                        additionalProperties:
                          type: string
                        type: object
                      manifest:
                        type: string
                      name:
                        type: string
                      namespace:
                        type: string
                      stringData:
                        additionalProperties:
                          type: string
                        type: object
                    required:
                      - apiVersion
                      - kind
                      - name
                    type: object
                  type: array
                subComponents:
                  items:
                    description: SubComponent defines a sub-component reference
                    properties:
                      name:
                        type: string
                      version:
                        type: string
                    required:
                      - name
                      - version
                    type: object
                  type: array
                type:
                  description: ComponentType defines the type of component installation
                  type: string
                upgradeStrategy:
                  description: UpgradeStrategySpec defines the upgrade strategy for
                    the component
                  properties:
                    batchSize:
                      type: integer
                    failurePolicy:
                      type: string
                    mode:
                      type: string
                    timeout:
                      type: string
                  type: object
                version:
                  type: string
              required:
                - name
                - type
                - version
              type: object
            status:
              description: ComponentVersionStatus defines the observed state of ComponentVersion
              properties:
                conditions:
                  items:
                    description: Condition contains details for one aspect of the current
                      state of this API Resource.
                    properties:
                      lastTransitionTime:
                        description: |-
                          lastTransitionTime is the last time the condition transitioned from one status to another.
                          This should be when the underlying condition changed.  If that is not known, then using the time when the API field changed is acceptable.
                        format: date-time
                        type: string
                      message:
                        description: |-
                          message is a human readable message indicating details about the transition.
                          This may be an empty string.
                        maxLength: 32768
                        type: string
                      observedGeneration:
                        description: |-
                          observedGeneration represents the .metadata.generation that the condition was set based upon.
                          For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
                          with respect to the current state of the instance.
                        format: int64
                        minimum: 0
                        type: integer
                      reason:
                        description: |-
                          reason contains a programmatic identifier indicating the reason for the condition's last transition.
                          Producers of specific condition types may define expected values and meanings for this field,
                          and whether the values are considered a guaranteed API.
                          The value should be a CamelCase string.
                          This field may not be empty.
                        maxLength: 1024
                        minLength: 1
                        pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
                        type: string
                      status:
                        description: status of the condition, one of True, False, Unknown.
                        enum:
                          - "True"
                          - "False"
                          - Unknown
                        type: string
                      type:
                        description: type of condition in CamelCase or in foo.example.com/CamelCase.
                        maxLength: 316
                        pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
                        type: string
                    required:
                      - lastTransitionTime
                      - message
                      - reason
                      - status
                      - type
                    type: object
                  type: array
                phase:
                  type: string
              type: object
          type: object
      served: true
      storage: true
      subresources:
        status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.20.0
  name: releaseimages.config.openfuyao.com
spec:
  group: config.openfuyao.com
  names:
    kind: ReleaseImage
    listKind: ReleaseImageList
    plural: releaseimages
    shortNames:
      - ri
    singular: releaseimage
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .spec.version
          name: Version
          type: string
        - jsonPath: .status.phase
          name: Phase
          type: string
      name: v1alpha1
      schema:
        openAPIV3Schema:
          description: ReleaseImage describes an OCI release image and its install/upgrade
            component manifests.
          properties:
            apiVersion:
              description: |-
                APIVersion defines the versioned schema of this representation of an object.
                Servers should convert recognized schemas to the latest internal value, and
                may reject unrecognized values.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
              type: string
            kind:
              description: |-
                Kind is a string value representing the REST resource this object represents.
                Servers may infer this from the endpoint the client submits requests to.
                Cannot be updated.
                In CamelCase.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
              type: string
            metadata:
              type: object
            spec:
              description: ReleaseImageSpec defines the desired release image state.
              properties:
                allowCacheFallback:
                  type: boolean
                digest:
                  type: string
                install:
                  description: ReleaseImageInstallSpec lists components to install from
                    the release image.
                  properties:
                    components:
                      items:
                        description: ReleaseImageInstallComponent is one installable
                          component.
                        properties:
                          name:
                            type: string
                          version:
                            type: string
                        type: object
                      type: array
                  type: object
                signatureKey:
                  type: string
                upgrade:
                  description: ReleaseImageUpgradeSpec lists components and upgrade
                    handlers for a release.
                  properties:
                    components:
                      items:
                        description: ReleaseImageUpgradeComponent is one upgradable
                          component, optionally with an inline handler.
                        properties:
                          inline:
                            description: ReleaseImageUpgradeInline references an inline
                              upgrade handler implementation.
                            properties:
                              handler:
                                type: string
                              version:
                                type: string
                            type: object
                          name:
                            type: string
                          version:
                            type: string
                        type: object
                      type: array
                  type: object
                verifySignature:
                  type: boolean
                version:
                  type: string
              type: object
            status:
              description: ReleaseImageStatus defines the observed release image state.
              properties:
                cacheFallback:
                  type: boolean
                compatibilityReport:
                  type: string
                componentCount:
                  type: integer
                digest:
                  type: string
                message:
                  type: string
                phase:
                  description: ReleaseImagePhase is the validation/lifecycle phase of
                    a ReleaseImage.
                  enum:
                    - Valid
                    - Invalid
                    - ManifestMissing
                    - CompatibilityFailed
                  type: string
                source:
                  type: string
                validatedAt:
                  format: date-time
                  type: string
              type: object
          type: object
      served: true
      storage: true
      subresources:
        status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.20.0
  name: upgradepaths.config.openfuyao.com
spec:
  group: config.openfuyao.com
  names:
    kind: UpgradePath
    listKind: UpgradePathList
    plural: upgradepaths
    shortNames:
      - up
    singular: upgradepath
  scope: Cluster
  versions:
    - additionalPrinterColumns:
        - jsonPath: .status.phase
          name: Phase
          type: string
        - jsonPath: .status.pathCount
          name: Paths
          type: integer
      name: v1alpha1
      schema:
        openAPIV3Schema:
          description: UpgradePath defines allowed version upgrade routes loaded from
            an OCI artifact.
          properties:
            apiVersion:
              description: |-
                APIVersion defines the versioned schema of this representation of an object.
                Servers should convert recognized schemas to the latest internal value, and
                may reject unrecognized values.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
              type: string
            kind:
              description: |-
                Kind is a string value representing the REST resource this object represents.
                Servers may infer this from the endpoint the client submits requests to.
                Cannot be updated.
                In CamelCase.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
              type: string
            metadata:
              type: object
            spec:
              description: UpgradePathSpec defines the desired upgrade path catalog.
              properties:
                paths:
                  items:
                    description: UpgradePathRule is one directed upgrade edge between
                      versions.
                    properties:
                      blocked:
                        type: boolean
                      deprecated:
                        type: boolean
                      from:
                        type: string
                      notes:
                        type: string
                      postCheck:
                        items:
                          description: CheckStep describes a upgrade validation step.
                          properties:
                            name:
                              type: string
                            required:
                              type: boolean
                          type: object
                        type: array
                      preCheck:
                        items:
                          description: CheckStep describes a upgrade validation step.
                          properties:
                            name:
                              type: string
                            required:
                              type: boolean
                          type: object
                        type: array
                      to:
                        type: string
                    type: object
                  type: array
                versions:
                  items:
                    description: VersionEntry defines version info.
                    properties:
                      deprecated:
                        type: boolean
                      installable:
                        type: boolean
                      notes:
                        type: string
                      version:
                        type: string
                    type: object
                  type: array
              type: object
            status:
              description: UpgradePathStatus defines the observed upgrade path catalog
                state.
              properties:
                conditions:
                  items:
                    description: Condition contains details for one aspect of the current
                      state of this API Resource.
                    properties:
                      lastTransitionTime:
                        description: |-
                          lastTransitionTime is the last time the condition transitioned from one status to another.
                          This should be when the underlying condition changed.  If that is not known, then using the time when the API field changed is acceptable.
                        format: date-time
                        type: string
                      message:
                        description: |-
                          message is a human readable message indicating details about the transition.
                          This may be an empty string.
                        maxLength: 32768
                        type: string
                      observedGeneration:
                        description: |-
                          observedGeneration represents the .metadata.generation that the condition was set based upon.
                          For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
                          with respect to the current state of the instance.
                        format: int64
                        minimum: 0
                        type: integer
                      reason:
                        description: |-
                          reason contains a programmatic identifier indicating the reason for the condition's last transition.
                          Producers of specific condition types may define expected values and meanings for this field,
                          and whether the values are considered a guaranteed API.
                          The value should be a CamelCase string.
                          This field may not be empty.
                        maxLength: 1024
                        minLength: 1
                        pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
                        type: string
                      status:
                        description: status of the condition, one of True, False, Unknown.
                        enum:
                          - "True"
                          - "False"
                          - Unknown
                        type: string
                      type:
                        description: type of condition in CamelCase or in foo.example.com/CamelCase.
                        maxLength: 316
                        pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
                        type: string
                    required:
                      - lastTransitionTime
                      - message
                      - reason
                      - status
                      - type
                    type: object
                  type: array
                lastCheckedAt:
                  format: date-time
                  type: string
                lastDigest:
                  type: string
                pathCount:
                  type: integer
                phase:
                  description: UpgradePathPhase is the validation/lifecycle phase of
                    an UpgradePath.
                  enum:
                    - Active
                    - Blocked
                    - Invalid
                  type: string
              type: object
          type: object
      served: true
      storage: true
      subresources:
        status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.19.0
  labels:
    cluster.x-k8s.io/provider: infrastructure-bke
    cluster.x-k8s.io/v1beta1: v1beta1
  name: bkeclusters.bke.bocloud.com
spec:
  group: bke.bocloud.com
  names:
    kind: BKECluster
    listKind: BKEClusterList
    plural: bkeclusters
    shortNames:
      - bc
    singular: bkecluster
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .status.phase
          name: PHASE
          type: string
        - jsonPath: .status.clusterHealthState
          name: STATE
          type: string
        - jsonPath: .status.clusterStatus
          name: CLUSTER STATUS
          type: string
        - jsonPath: .spec.controlPlaneEndpoint.host
          name: ENDPOINT
          type: string
        - jsonPath: .spec.controlPlaneEndpoint.port
          name: ENDPOINT PORT
          type: string
        - jsonPath: .status.kubernetesVersion
          name: VERSION
          type: string
        - jsonPath: .status.agentStatus.status
          name: AGENT STATUS
          type: string
        - jsonPath: .spec.clusterConfig.cluster.containerRuntime.cri
          name: CONTAINER RUNTIME
          priority: 1
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: AGE
          type: date
      name: v1beta1
      schema:
        openAPIV3Schema:
          description: BKECluster is the Schema for the bkeclusters API
          properties:
            apiVersion:
              description: |-
                APIVersion defines the versioned schema of this representation of an object.
                Servers should convert recognized schemas to the latest internal value, and
                may reject unrecognized values.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
              type: string
            kind:
              description: |-
                Kind is a string value representing the REST resource this object represents.
                Servers may infer this from the endpoint the client submits requests to.
                Cannot be updated.
                In CamelCase.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
              type: string
            metadata:
              type: object
            spec:
              description: BKEClusterSpec defines the desired state of BKECluster
              properties:
                KubeletConfigRef:
                  description: KubeletConfigRef references a KubeletConfig to use for
                    kubelet configuration
                  properties:
                    name:
                      type: string
                    namespace:
                      type: string
                  type: object
                clusterConfig:
                  description: ClusterConfig defines the cluster config
                  properties:
                    addons:
                      description: Addons defines the addons that the target cluster
                        will install after deployment
                      items:
                        properties:
                          block:
                            default: false
                            description: Block defines fully wait for the Product to
                              be deployed successfully
                            type: boolean
                          name:
                            type: string
                          namespace:
                            description: |-
                              Namespace defines the namespace of the chart
                              If empty, use the default configuration of chart
                            type: string
                          param:
                            additionalProperties:
                              type: string
                            type: object
                          releaseName:
                            description: |-
                              ReleaseName defines the release name of the chart
                              If empty, defaults to the product name
                            type: string
                          timeout:
                            description: |-
                              Timeout defines the timeout for the Product to be deployed\removed\upgraded successfully
                              If empty, defaults to 300 seconds
                            type: integer
                          type:
                            description: |-
                              Type defines the product type, such as "chart", "yaml"
                              If empty, defaults to "yaml"
                            enum:
                              - yaml
                              - chart
                            type: string
                          valuesConfigMapRef:
                            description: |-
                              ValuesConfigMapRef references a ConfigMap containing the values.yaml for the chart
                              If empty, use the default configuration of chart
                            properties:
                              name:
                                description: Name of the ValuesConfigMapRef resource
                                type: string
                              namespace:
                                description: |-
                                  Namespace of the ValuesConfigMapRef resource
                                  If empty, defaults to the same namespace as the Cluster resource
                                type: string
                              valuesKey:
                                description: |-
                                  ValuesKey is the key name that stores the values.yaml in the ConfigMap
                                  If empty, defaults to "values.yaml"
                                type: string
                            required:
                              - name
                            type: object
                          version:
                            type: string
                        required:
                          - name
                        type: object
                      type: array
                    cluster:
                      description: Cluster defines the configuration of the target cluster
                      properties:
                        agentHealthPort:
                          description: AgentHealthPort defines the agent health port
                          type: string
                        apiServer:
                          description: APIServer contains additional settings for the
                            API server component
                          properties:
                            certSANs:
                              description: CertSANs sets extra Subject Alternative Names
                                for the API Server signing certificate
                              items:
                                type: string
                              type: array
                            extraArgs:
                              additionalProperties:
                                type: string
                              description: ExtraArgs specifies additional command line
                                flags to pass to the control plane component
                              type: object
                            extraVolumes:
                              description: ExtraVolumes specifies additional host volumes
                                to mount to the control plane component
                              items:
                                description: HostPathMount describes volumes that are
                                  mounted from the host into pods
                                properties:
                                  hostPath:
                                    description: HostPath specifies the path on the
                                      host that will be mounted into the pod
                                    type: string
                                  mountPath:
                                    description: MountPath specifies the path inside
                                      the pod where the hostPath will be mounted
                                    type: string
                                  name:
                                    description: Name specifies the name of the volume
                                      within the pod template
                                    type: string
                                  pathType:
                                    description: PathType specifies the type of the
                                      HostPath
                                    type: string
                                  readOnly:
                                    description: ReadOnly specifies whether the volume
                                      should be mounted as read-only
                                    type: boolean
                                type: object
                              type: array
                            host:
                              description: Host sets the Host for the API server to
                                advertise.
                              type: string
                            port:
                              description: Port sets the secure port for the API Server
                                to bind to. Defaults to 6443.
                              format: int32
                              type: integer
                          type: object
                        certificatesDir:
                          description: CertificatesDir defines the directory path for
                            storing or locating all required certificates.
                          type: string
                        chartRepo:
                          description: ChartRepo defines the global chart repository
                            of the deployment target cluster
                          properties:
                            authSecretRef:
                              description: AuthSecretRef defines the secret name, namespace
                                and other information for authentication
                              properties:
                                name:
                                  description: Name of the AuthSecretRef resource
                                  type: string
                                namespace:
                                  description: |-
                                    Namespace of the AuthSecretRef resource
                                    If empty, defaults to the same namespace as the Cluster resource
                                  type: string
                                passwordKey:
                                  description: |-
                                    PasswordKey is the key name that stores the password in the secret
                                    If empty, defaults to "password"
                                  type: string
                                usernameKey:
                                  description: |-
                                    UsernameKey is the key name that stores the username in the secret
                                    If empty, defaults to "username"
                                  type: string
                              required:
                                - name
                              type: object
                            domain:
                              description: Domain defines the Repo domain name
                              type: string
                            insecureSkipTLSVerify:
                              description: |-
                                InsecureSkipTLSVerify defines whether to skip TLS verification when connecting to the repo
                                If empty, defaults to false
                              type: boolean
                            ip:
                              description: Ip defines the Repo ip
                              type: string
                            port:
                              description: Port defines the number of port to connect
                                to the Repo
                              type: string
                            prefix:
                              description: Prefix defines the kubernetes image address
                              type: string
                            tlsSecretRef:
                              description: TlsSecretRef defines the secret name, namespace
                                and other information for TLS certificates
                              properties:
                                caKey:
                                  description: |-
                                    CaKey is the key name that stores the ca.crt in the secret
                                    If empty, defaults to "ca.crt"
                                  type: string
                                certKey:
                                  description: |-
                                    CertKey is the key name that stores the cert.crt in the secret
                                    If empty, defaults to "cert.crt"
                                  type: string
                                keyKey:
                                  description: |-
                                    KeyKey is the key name that stores the key.key in the secret
                                    If empty, defaults to "key.key"
                                  type: string
                                name:
                                  description: Name of the TlsSecretRef resource
                                  type: string
                                namespace:
                                  description: |-
                                    Namespace of the TlsSecretRef resource
                                    If empty, defaults to the same namespace as the Cluster resource
                                  type: string
                              required:
                                - name
                              type: object
                          type: object
                        containerRuntime:
                          description: ContainerRuntime defines the container runtime
                            of the target cluster
                          properties:
                            cri:
                              description: CRI defines the name of the runtime
                              enum:
                                - docker
                                - containerd
                              type: string
                            param:
                              additionalProperties:
                                type: string
                              description: Param defines the param of the runtime
                              type: object
                            runtime:
                              description: Runtime defines the lower runtime of the
                                runtime
                              enum:
                                - runc
                                - richrunc
                                - kata
                              type: string
                          type: object
                        containerdConfigRef:
                          description: |-
                            ContainerdConfigRef references a ContainerdConfig custom resource for advanced containerd configuration
                            If specified, this will override the default containerd configuration
                          properties:
                            name:
                              description: Name of the ContainerdConfig resource
                              type: string
                            namespace:
                              description: |-
                                Namespace of the ContainerdConfig resource
                                If empty, defaults to the same namespace as the Cluster resource
                              type: string
                          required:
                            - name
                          type: object
                        containerdVersion:
                          type: string
                        controllerManager:
                          description: ControllerManager contains additional settings
                            for the controller manager component
                          properties:
                            extraArgs:
                              additionalProperties:
                                type: string
                              description: ExtraArgs specifies additional command line
                                flags to pass to the control plane component
                              type: object
                            extraVolumes:
                              description: ExtraVolumes specifies additional host volumes
                                to mount to the control plane component
                              items:
                                description: HostPathMount describes volumes that are
                                  mounted from the host into pods
                                properties:
                                  hostPath:
                                    description: HostPath specifies the path on the
                                      host that will be mounted into the pod
                                    type: string
                                  mountPath:
                                    description: MountPath specifies the path inside
                                      the pod where the hostPath will be mounted
                                    type: string
                                  name:
                                    description: Name specifies the name of the volume
                                      within the pod template
                                    type: string
                                  pathType:
                                    description: PathType specifies the type of the
                                      HostPath
                                    type: string
                                  readOnly:
                                    description: ReadOnly specifies whether the volume
                                      should be mounted as read-only
                                    type: boolean
                                type: object
                              type: array
                          type: object
                        etcd:
                          description: Etcd contains configuration for etcd
                          properties:
                            dataDir:
                              description: |-
                                DataDir specifies the directory path where etcd will store its data.
                                If not specified, defaults to "/var/lib/openFuyao/etcd".
                              type: string
                            extraArgs:
                              additionalProperties:
                                type: string
                              description: ExtraArgs specifies additional command line
                                flags to pass to the control plane component
                              type: object
                            extraVolumes:
                              description: ExtraVolumes specifies additional host volumes
                                to mount to the control plane component
                              items:
                                description: HostPathMount describes volumes that are
                                  mounted from the host into pods
                                properties:
                                  hostPath:
                                    description: HostPath specifies the path on the
                                      host that will be mounted into the pod
                                    type: string
                                  mountPath:
                                    description: MountPath specifies the path inside
                                      the pod where the hostPath will be mounted
                                    type: string
                                  name:
                                    description: Name specifies the name of the volume
                                      within the pod template
                                    type: string
                                  pathType:
                                    description: PathType specifies the type of the
                                      HostPath
                                    type: string
                                  readOnly:
                                    description: ReadOnly specifies whether the volume
                                      should be mounted as read-only
                                    type: boolean
                                type: object
                              type: array
                            peerCertSANs:
                              description: PeerCertSANs defines additional Subject Alternative
                                Names (SANs) for the etcd peer-to-peer communication
                                certificate.
                              items:
                                type: string
                              type: array
                            serverCertSANs:
                              description: ServerCertSANs defines additional Subject
                                Alternative Names (SANs) for the etcd server certificate.
                              items:
                                type: string
                              type: array
                          type: object
                        etcdVersion:
                          description: EtcdVersion defines the Etcd version of the target
                            cluster
                          type: string
                        httpRepo:
                          description: |-
                            HTTPRepo defines the HTTP repository to use when deploying
                            rpm / deb / http server
                          properties:
                            authSecretRef:
                              description: AuthSecretRef defines the secret name, namespace
                                and other information for authentication
                              properties:
                                name:
                                  description: Name of the AuthSecretRef resource
                                  type: string
                                namespace:
                                  description: |-
                                    Namespace of the AuthSecretRef resource
                                    If empty, defaults to the same namespace as the Cluster resource
                                  type: string
                                passwordKey:
                                  description: |-
                                    PasswordKey is the key name that stores the password in the secret
                                    If empty, defaults to "password"
                                  type: string
                                usernameKey:
                                  description: |-
                                    UsernameKey is the key name that stores the username in the secret
                                    If empty, defaults to "username"
                                  type: string
                              required:
                                - name
                              type: object
                            domain:
                              description: Domain defines the Repo domain name
                              type: string
                            insecureSkipTLSVerify:
                              description: |-
                                InsecureSkipTLSVerify defines whether to skip TLS verification when connecting to the repo
                                If empty, defaults to false
                              type: boolean
                            ip:
                              description: Ip defines the Repo ip
                              type: string
                            port:
                              description: Port defines the number of port to connect
                                to the Repo
                              type: string
                            prefix:
                              description: Prefix defines the kubernetes image address
                              type: string
                            tlsSecretRef:
                              description: TlsSecretRef defines the secret name, namespace
                                and other information for TLS certificates
                              properties:
                                caKey:
                                  description: |-
                                    CaKey is the key name that stores the ca.crt in the secret
                                    If empty, defaults to "ca.crt"
                                  type: string
                                certKey:
                                  description: |-
                                    CertKey is the key name that stores the cert.crt in the secret
                                    If empty, defaults to "cert.crt"
                                  type: string
                                keyKey:
                                  description: |-
                                    KeyKey is the key name that stores the key.key in the secret
                                    If empty, defaults to "key.key"
                                  type: string
                                name:
                                  description: Name of the TlsSecretRef resource
                                  type: string
                                namespace:
                                  description: |-
                                    Namespace of the TlsSecretRef resource
                                    If empty, defaults to the same namespace as the Cluster resource
                                  type: string
                              required:
                                - name
                              type: object
                          type: object
                        imageRepo:
                          description: ImageRepo defines the global image repository
                            of the deployment target cluster
                          properties:
                            authSecretRef:
                              description: AuthSecretRef defines the secret name, namespace
                                and other information for authentication
                              properties:
                                name:
                                  description: Name of the AuthSecretRef resource
                                  type: string
                                namespace:
                                  description: |-
                                    Namespace of the AuthSecretRef resource
                                    If empty, defaults to the same namespace as the Cluster resource
                                  type: string
                                passwordKey:
                                  description: |-
                                    PasswordKey is the key name that stores the password in the secret
                                    If empty, defaults to "password"
                                  type: string
                                usernameKey:
                                  description: |-
                                    UsernameKey is the key name that stores the username in the secret
                                    If empty, defaults to "username"
                                  type: string
                              required:
                                - name
                              type: object
                            domain:
                              description: Domain defines the Repo domain name
                              type: string
                            insecureSkipTLSVerify:
                              description: |-
                                InsecureSkipTLSVerify defines whether to skip TLS verification when connecting to the repo
                                If empty, defaults to false
                              type: boolean
                            ip:
                              description: Ip defines the Repo ip
                              type: string
                            port:
                              description: Port defines the number of port to connect
                                to the Repo
                              type: string
                            prefix:
                              description: Prefix defines the kubernetes image address
                              type: string
                            tlsSecretRef:
                              description: TlsSecretRef defines the secret name, namespace
                                and other information for TLS certificates
                              properties:
                                caKey:
                                  description: |-
                                    CaKey is the key name that stores the ca.crt in the secret
                                    If empty, defaults to "ca.crt"
                                  type: string
                                certKey:
                                  description: |-
                                    CertKey is the key name that stores the cert.crt in the secret
                                    If empty, defaults to "cert.crt"
                                  type: string
                                keyKey:
                                  description: |-
                                    KeyKey is the key name that stores the key.key in the secret
                                    If empty, defaults to "key.key"
                                  type: string
                                name:
                                  description: Name of the TlsSecretRef resource
                                  type: string
                                namespace:
                                  description: |-
                                    Namespace of the TlsSecretRef resource
                                    If empty, defaults to the same namespace as the Cluster resource
                                  type: string
                              required:
                                - name
                              type: object
                          type: object
                        kubelet:
                          description: Kubelet define kubelet configuration for all
                            nodes in the target cluster
                          properties:
                            extraArgs:
                              additionalProperties:
                                type: string
                              description: ExtraArgs specifies additional command line
                                flags to pass to the control plane component
                              type: object
                            extraVolumes:
                              description: ExtraVolumes specifies additional host volumes
                                to mount to the control plane component
                              items:
                                description: HostPathMount describes volumes that are
                                  mounted from the host into pods
                                properties:
                                  hostPath:
                                    description: HostPath specifies the path on the
                                      host that will be mounted into the pod
                                    type: string
                                  mountPath:
                                    description: MountPath specifies the path inside
                                      the pod where the hostPath will be mounted
                                    type: string
                                  name:
                                    description: Name specifies the name of the volume
                                      within the pod template
                                    type: string
                                  pathType:
                                    description: PathType specifies the type of the
                                      HostPath
                                    type: string
                                  readOnly:
                                    description: ReadOnly specifies whether the volume
                                      should be mounted as read-only
                                    type: boolean
                                type: object
                              type: array
                            manifestsDir:
                              description: ManifestsDir is the directory where kubelet
                                will store manifests
                              type: string
                          type: object
                        kubernetesVersion:
                          description: |-
                            KubernetesVersion defines the Kubernetes version of the target cluster
                            support up to v1.25.6 in bke
                          type: string
                        labels:
                          description: Global node labels
                          items:
                            description: Label represents a key-value pair used for
                              setting labels on Kubernetes nodes
                            properties:
                              key:
                                type: string
                              value:
                                type: string
                            type: object
                          type: array
                        networking:
                          description: Networking defines the configuration of target
                            cluster network
                          properties:
                            dnsDomain:
                              description: |-
                                DNSDomain specifies the DNS domain suffix for Kubernetes services.
                                If not specified, defaults to "cluster.local".
                              type: string
                            podSubnet:
                              description: PodSubnet specifies the CIDR block for Pod
                                IP addresses.
                              type: string
                            serviceSubnet:
                              description: |-
                                ServiceSubnet specifies the CIDR block for Kubernetes services.
                                If not specified, defaults to "10.96.0.0/12".
                              type: string
                          type: object
                        ntpServer:
                          description: NTPServer defines the ntp server information
                            used for time synchronization
                          type: string
                        openFuyaoVersion:
                          type: string
                        scheduler:
                          description: Scheduler contains additional settings for the
                            scheduler component
                          properties:
                            extraArgs:
                              additionalProperties:
                                type: string
                              description: ExtraArgs specifies additional command line
                                flags to pass to the control plane component
                              type: object
                            extraVolumes:
                              description: ExtraVolumes specifies additional host volumes
                                to mount to the control plane component
                              items:
                                description: HostPathMount describes volumes that are
                                  mounted from the host into pods
                                properties:
                                  hostPath:
                                    description: HostPath specifies the path on the
                                      host that will be mounted into the pod
                                    type: string
                                  mountPath:
                                    description: MountPath specifies the path inside
                                      the pod where the hostPath will be mounted
                                    type: string
                                  name:
                                    description: Name specifies the name of the volume
                                      within the pod template
                                    type: string
                                  pathType:
                                    description: PathType specifies the type of the
                                      HostPath
                                    type: string
                                  readOnly:
                                    description: ReadOnly specifies whether the volume
                                      should be mounted as read-only
                                    type: boolean
                                type: object
                              type: array
                          type: object
                      required:
                        - ntpServer
                      type: object
                    customExtra:
                      additionalProperties:
                        type: string
                      description: CustomArgs defines the custom args
                      type: object
                  type: object
                controlPlaneEndpoint:
                  description: ControlPlaneEndpoint represents the endpoint used to
                    communicate with the control plane.
                  properties:
                    host:
                      description: Host sets the Host for the API server to advertise.
                      type: string
                    port:
                      description: Port sets the secure port for the API Server to bind
                        to. Defaults to 6443.
                      format: int32
                      type: integer
                  type: object
                dryRun:
                  description: DryRun is used to dry run the BKECluster, it also dries
                    run the BKECluster's machines.
                  type: boolean
                pause:
                  description: Pause is used to pause reconciliation of the BKECluster,
                    it also pauses the BKECluster's machines.
                  type: boolean
                reset:
                  description: Reset is used to reset the BKECluster, it also resets
                    the BKECluster's machines, include cluster-api Cluster Machine etc.
                  type: boolean
              type: object
            status:
              description: BKEClusterStatus defines the observed state of BKECluster
              properties:
                addonStatus:
                  description: AddonStatus is the current status of the addons.
                  items:
                    properties:
                      block:
                        default: false
                        description: Block defines fully wait for the Product to be
                          deployed successfully
                        type: boolean
                      name:
                        type: string
                      namespace:
                        description: |-
                          Namespace defines the namespace of the chart
                          If empty, use the default configuration of chart
                        type: string
                      param:
                        additionalProperties:
                          type: string
                        type: object
                      releaseName:
                        description: |-
                          ReleaseName defines the release name of the chart
                          If empty, defaults to the product name
                        type: string
                      timeout:
                        description: |-
                          Timeout defines the timeout for the Product to be deployed\removed\upgraded successfully
                          If empty, defaults to 300 seconds
                        type: integer
                      type:
                        description: |-
                          Type defines the product type, such as "chart", "yaml"
                          If empty, defaults to "yaml"
                        enum:
                          - yaml
                          - chart
                        type: string
                      valuesConfigMapRef:
                        description: |-
                          ValuesConfigMapRef references a ConfigMap containing the values.yaml for the chart
                          If empty, use the default configuration of chart
                        properties:
                          name:
                            description: Name of the ValuesConfigMapRef resource
                            type: string
                          namespace:
                            description: |-
                              Namespace of the ValuesConfigMapRef resource
                              If empty, defaults to the same namespace as the Cluster resource
                            type: string
                          valuesKey:
                            description: |-
                              ValuesKey is the key name that stores the values.yaml in the ConfigMap
                              If empty, defaults to "values.yaml"
                            type: string
                        required:
                          - name
                        type: object
                      version:
                        type: string
                    required:
                      - name
                    type: object
                  type: array
                agentStatus:
                  properties:
                    replies:
                      default: 0
                      format: int32
                      type: integer
                    status:
                      default: 0/0
                      type: string
                    unavailableReplies:
                      default: 0
                      format: int32
                      type: integer
                  type: object
                clusterHealthState:
                  description: ClusterHealthState
                  type: string
                clusterStatus:
                  description: ClusterStatus is the current operate status of the cluster.
                  type: string
                conditions:
                  items:
                    properties:
                      addonName:
                        description: AddonName is the name of the current reconcile
                          addon
                        type: string
                      lastTransitionTime:
                        description: |-
                          Last time the condition transitioned from one status to another.
                          This should be when the underlying condition changed. If that is not known, then using the time when
                          the API field changed is acceptable.
                        format: date-time
                        type: string
                      message:
                        description: |-
                          A human readable message indicating details about the transition.
                          This field may be empty.
                        type: string
                      reason:
                        description: |-
                          The reason for the condition's last transition in CamelCase.
                          The specific API may choose whether or not this field is considered a guaranteed API.
                          This field may not be empty.
                        type: string
                      status:
                        description: Status of the condition, one of True, False, Unknown.
                        type: string
                      type:
                        type: string
                    required:
                      - status
                      - type
                    type: object
                  type: array
                containerdVersion:
                  type: string
                declarativeUpgrade:
                  description: DeclarativeUpgrade holds progress for declarative DAG
                    upgrades.
                  properties:
                    completed:
                      description: Completed holds component completion records for
                        this TargetVersion.
                      items:
                        properties:
                          completedAt:
                            description: CompletedAt is the time the component finished
                              successfully.
                            format: date-time
                            type: string
                          name:
                            description: Name is the declarative upgrade component name
                              (DAG node name).
                            type: string
                          version:
                            description: Version is the component version key used in
                              the DAG node.
                            type: string
                        required:
                          - completedAt
                          - name
                        type: object
                      type: array
                    finishedAt:
                      description: FinishedAt marks when the upgrade plan completed
                        successfully.
                      format: date-time
                      type: string
                    lastFailure:
                      description: |-
                        LastFailure records the last failed component for this TargetVersion, for easier debugging.
                        It must NOT be used for skip decisions.
                      properties:
                        attempt:
                          description: Attempt is a best-effort counter for consecutive failures of the same component+version.
                          format: int32
                          type: integer
                        error:
                          description: Error is a short error message for the failure.
                          type: string
                        failedAt:
                          description: FailedAt is the time the component execution failed.
                          format: date-time
                          type: string
                        name:
                          description: Name is the declarative upgrade component name (DAG node name).
                          type: string
                        version:
                          description: Version is the component version key used in the DAG node.
                          type: string
                      required:
                        - failedAt
                        - name
                      type: object
                    lastError:
                      description: LastError records the last observed error during
                        DAG execution for this TargetVersion.
                      type: string
                    startedAt:
                      description: StartedAt marks the first time we initialized progress
                        for TargetVersion.
                      format: date-time
                      type: string
                    targetVersion:
                      description: |-
                        TargetVersion is the desired ClusterVersion for this upgrade execution plan.
                        When it changes, Completed should be reset.
                      type: string
                  type: object
                etcdVersion:
                  type: string
                kubernetesVersion:
                  type: string
                openFuyaoVersion:
                  type: string
                phase:
                  description: Phase is the current phase of the cluster.
                  type: string
                phaseStatus:
                  items:
                    properties:
                      endTime:
                        description: EndTime is the end time of the phase
                        format: date-time
                        type: string
                      message:
                        description: Message is the message of the phase
                        type: string
                      name:
                        description: Name is the name of the phase name
                        type: string
                      startTime:
                        description: StartTime is the start time of the phase
                        format: date-time
                        type: string
                      status:
                        description: Status is the status of the phase
                        type: string
                    required:
                      - name
                      - status
                    type: object
                  type: array
                ready:
                  description: |-
                    INSERT ADDITIONAL STATUS FIELD - define observed state of cluster
                    Important: Run "make" to regenerate code after modifying this file
                  type: boolean
              type: object
          type: object
      served: true
      storage: true
      subresources:
        status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.19.0
  labels:
    cluster.x-k8s.io/provider: infrastructure-bke
    cluster.x-k8s.io/v1beta1: v1beta1
  name: bkenodes.bke.bocloud.com
spec:
  group: bke.bocloud.com
  names:
    kind: BKENode
    listKind: BKENodeList
    plural: bkenodes
    shortNames:
      - bn
    singular: bkenode
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .spec.ip
          name: IP
          type: string
        - jsonPath: .spec.hostname
          name: Hostname
          type: string
        - jsonPath: .spec.role
          name: Role
          type: string
        - jsonPath: .status.state
          name: State
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v1beta1
      schema:
        openAPIV3Schema:
          description: BKENode is the Schema for the bkenodes API
          properties:
            apiVersion:
              description: |-
                APIVersion defines the versioned schema of this representation of an object.
                Servers should convert recognized schemas to the latest internal value, and
                may reject unrecognized values.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
              type: string
            kind:
              description: |-
                Kind is a string value representing the REST resource this object represents.
                Servers may infer this from the endpoint the client submits requests to.
                Cannot be updated.
                In CamelCase.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
              type: string
            metadata:
              type: object
            spec:
              description: BKENodeSpec defines the desired state of BKENode
              properties:
                apiServer:
                  description: APIServer contains additional settings for the API server
                    component
                  properties:
                    certSANs:
                      description: CertSANs sets extra Subject Alternative Names for
                        the API Server signing certificate
                      items:
                        type: string
                      type: array
                    extraArgs:
                      additionalProperties:
                        type: string
                      description: ExtraArgs specifies additional command line flags
                        to pass to the control plane component
                      type: object
                    extraVolumes:
                      description: ExtraVolumes specifies additional host volumes to
                        mount to the control plane component
                      items:
                        description: HostPathMount describes volumes that are mounted
                          from the host into pods
                        properties:
                          hostPath:
                            description: HostPath specifies the path on the host that
                              will be mounted into the pod
                            type: string
                          mountPath:
                            description: MountPath specifies the path inside the pod
                              where the hostPath will be mounted
                            type: string
                          name:
                            description: Name specifies the name of the volume within
                              the pod template
                            type: string
                          pathType:
                            description: PathType specifies the type of the HostPath
                            type: string
                          readOnly:
                            description: ReadOnly specifies whether the volume should
                              be mounted as read-only
                            type: boolean
                        type: object
                      type: array
                    host:
                      description: Host sets the Host for the API server to advertise.
                      type: string
                    port:
                      description: Port sets the secure port for the API Server to bind
                        to. Defaults to 6443.
                      format: int32
                      type: integer
                  type: object
                controllerManager:
                  description: ControllerManager contains additional settings for the
                    controller manager component
                  properties:
                    extraArgs:
                      additionalProperties:
                        type: string
                      description: ExtraArgs specifies additional command line flags
                        to pass to the control plane component
                      type: object
                    extraVolumes:
                      description: ExtraVolumes specifies additional host volumes to
                        mount to the control plane component
                      items:
                        description: HostPathMount describes volumes that are mounted
                          from the host into pods
                        properties:
                          hostPath:
                            description: HostPath specifies the path on the host that
                              will be mounted into the pod
                            type: string
                          mountPath:
                            description: MountPath specifies the path inside the pod
                              where the hostPath will be mounted
                            type: string
                          name:
                            description: Name specifies the name of the volume within
                              the pod template
                            type: string
                          pathType:
                            description: PathType specifies the type of the HostPath
                            type: string
                          readOnly:
                            description: ReadOnly specifies whether the volume should
                              be mounted as read-only
                            type: boolean
                        type: object
                      type: array
                  type: object
                etcd:
                  description: Etcd contains configuration for etcd
                  properties:
                    dataDir:
                      description: |-
                        DataDir specifies the directory path where etcd will store its data.
                        If not specified, defaults to "/var/lib/openFuyao/etcd".
                      type: string
                    extraArgs:
                      additionalProperties:
                        type: string
                      description: ExtraArgs specifies additional command line flags
                        to pass to the control plane component
                      type: object
                    extraVolumes:
                      description: ExtraVolumes specifies additional host volumes to
                        mount to the control plane component
                      items:
                        description: HostPathMount describes volumes that are mounted
                          from the host into pods
                        properties:
                          hostPath:
                            description: HostPath specifies the path on the host that
                              will be mounted into the pod
                            type: string
                          mountPath:
                            description: MountPath specifies the path inside the pod
                              where the hostPath will be mounted
                            type: string
                          name:
                            description: Name specifies the name of the volume within
                              the pod template
                            type: string
                          pathType:
                            description: PathType specifies the type of the HostPath
                            type: string
                          readOnly:
                            description: ReadOnly specifies whether the volume should
                              be mounted as read-only
                            type: boolean
                        type: object
                      type: array
                    peerCertSANs:
                      description: PeerCertSANs defines additional Subject Alternative
                        Names (SANs) for the etcd peer-to-peer communication certificate.
                      items:
                        type: string
                      type: array
                    serverCertSANs:
                      description: ServerCertSANs defines additional Subject Alternative
                        Names (SANs) for the etcd server certificate.
                      items:
                        type: string
                      type: array
                  type: object
                hostname:
                  description: Hostname specifies the hostname of the node
                  type: string
                ip:
                  description: IP node IP
                  type: string
                kubelet:
                  description: Kubelet rewrite the cluster's Kubelet configuration
                  properties:
                    extraArgs:
                      additionalProperties:
                        type: string
                      description: ExtraArgs specifies additional command line flags
                        to pass to the control plane component
                      type: object
                    extraVolumes:
                      description: ExtraVolumes specifies additional host volumes to
                        mount to the control plane component
                      items:
                        description: HostPathMount describes volumes that are mounted
                          from the host into pods
                        properties:
                          hostPath:
                            description: HostPath specifies the path on the host that
                              will be mounted into the pod
                            type: string
                          mountPath:
                            description: MountPath specifies the path inside the pod
                              where the hostPath will be mounted
                            type: string
                          name:
                            description: Name specifies the name of the volume within
                              the pod template
                            type: string
                          pathType:
                            description: PathType specifies the type of the HostPath
                            type: string
                          readOnly:
                            description: ReadOnly specifies whether the volume should
                              be mounted as read-only
                            type: boolean
                        type: object
                      type: array
                    manifestsDir:
                      description: ManifestsDir is the directory where kubelet will
                        store manifests
                      type: string
                  type: object
                labels:
                  description: Labels defines the node labels
                  items:
                    description: Label represents a key-value pair used for setting
                      labels on Kubernetes nodes
                    properties:
                      key:
                        type: string
                      value:
                        type: string
                    type: object
                  type: array
                password:
                  description: Password node Password used for SSH (encrypted)
                  type: string
                port:
                  description: Port node Port used for SSH
                  type: string
                role:
                  description: Role defines the role of the node in target cluster
                  items:
                    type: string
                  type: array
                scheduler:
                  description: Scheduler contains additional settings for the scheduler
                    component
                  properties:
                    extraArgs:
                      additionalProperties:
                        type: string
                      description: ExtraArgs specifies additional command line flags
                        to pass to the control plane component
                      type: object
                    extraVolumes:
                      description: ExtraVolumes specifies additional host volumes to
                        mount to the control plane component
                      items:
                        description: HostPathMount describes volumes that are mounted
                          from the host into pods
                        properties:
                          hostPath:
                            description: HostPath specifies the path on the host that
                              will be mounted into the pod
                            type: string
                          mountPath:
                            description: MountPath specifies the path inside the pod
                              where the hostPath will be mounted
                            type: string
                          name:
                            description: Name specifies the name of the volume within
                              the pod template
                            type: string
                          pathType:
                            description: PathType specifies the type of the HostPath
                            type: string
                          readOnly:
                            description: ReadOnly specifies whether the volume should
                              be mounted as read-only
                            type: boolean
                        type: object
                      type: array
                  type: object
                username:
                  description: Username node Username used for SSH
                  type: string
              required:
                - ip
              type: object
            status:
              description: BKENodeStatus defines the observed state of BKENode
              properties:
                message:
                  description: Message is a human-readable message indicating details
                    about the node state
                  type: string
                needSkip:
                  description: NeedSkip indicates whether this node should be skipped
                    during operations
                  type: boolean
                state:
                  description: State is the current state of the node
                  type: string
                stateCode:
                  description: StateCode is the bit flag representing the node state
                  type: integer
              type: object
          type: object
      served: true
      storage: true
      subresources:
        status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.19.0
  labels:
    cluster.x-k8s.io/provider: infrastructure-bke
    cluster.x-k8s.io/v1beta1: v1beta1
  name: bkeclustertemplates.bke.bocloud.com
spec:
  group: bke.bocloud.com
  names:
    kind: BKEClusterTemplate
    listKind: BKEClusterTemplateList
    plural: bkeclustertemplates
    singular: bkeclustertemplate
  scope: Namespaced
  versions:
    - name: v1beta1
      schema:
        openAPIV3Schema:
          description: BKEClusterTemplate is the Schema for the bkeclustertemplates
            API
          properties:
            apiVersion:
              description: |-
                APIVersion defines the versioned schema of this representation of an object.
                Servers should convert recognized schemas to the latest internal value, and
                may reject unrecognized values.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
              type: string
            kind:
              description: |-
                Kind is a string value representing the REST resource this object represents.
                Servers may infer this from the endpoint the client submits requests to.
                Cannot be updated.
                In CamelCase.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
              type: string
            metadata:
              type: object
            spec:
              description: |-
                EDIT THIS FILE!  THIS IS SCAFFOLDING FOR YOU TO OWN!
                NOTE: json tags are required.  Any new fields you add must have json tags for the fields to be serialized.
                BKEClusterTemplateSpec defines the desired state of BKEClusterTemplate
              properties:
                template:
                  properties:
                    metadata:
                      description: |-
                        Standard object's metadata.
                        More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
                      properties:
                        annotations:
                          additionalProperties:
                            type: string
                          description: |-
                            Annotations is an unstructured key value map stored with a resource that may be
                            set by external tools to store and retrieve arbitrary metadata. They are not
                            queryable and should be preserved when modifying objects.
                            More info: http://kubernetes.io/docs/user-guide/annotations
                          type: object
                        labels:
                          additionalProperties:
                            type: string
                          description: |-
                            Map of string keys and values that can be used to organize and categorize
                            (scope and select) objects. May match selectors of replication controllers
                            and services.
                            More info: http://kubernetes.io/docs/user-guide/labels
                          type: object
                      type: object
                    spec:
                      description: BKEClusterSpec defines the desired state of BKECluster
                      properties:
                        clusterConfig:
                          description: ClusterConfig defines the cluster config
                          properties:
                            addons:
                              description: Addons defines the addons that the target
                                cluster will install after deployment
                              items:
                                properties:
                                  block:
                                    default: false
                                    description: Block defines fully wait for the Product
                                      to be deployed successfully
                                    type: boolean
                                  name:
                                    type: string
                                  namespace:
                                    description: |-
                                      Namespace defines the namespace of the chart
                                      If empty, use the default configuration of chart
                                    type: string
                                  param:
                                    additionalProperties:
                                      type: string
                                    type: object
                                  releaseName:
                                    description: |-
                                      ReleaseName defines the release name of the chart
                                      If empty, defaults to the product name
                                    type: string
                                  timeout:
                                    description: |-
                                      Timeout defines the timeout for the Product to be deployed\removed\upgraded successfully
                                      If empty, defaults to 300 seconds
                                    type: integer
                                  type:
                                    description: |-
                                      Type defines the product type, such as "chart", "yaml"
                                      If empty, defaults to "yaml"
                                    enum:
                                      - yaml
                                      - chart
                                    type: string
                                  valuesConfigMapRef:
                                    description: |-
                                      ValuesConfigMapRef references a ConfigMap containing the values.yaml for the chart
                                      If empty, use the default configuration of chart
                                    properties:
                                      name:
                                        description: Name of the ValuesConfigMapRef
                                          resource
                                        type: string
                                      namespace:
                                        description: |-
                                          Namespace of the ValuesConfigMapRef resource
                                          If empty, defaults to the same namespace as the Cluster resource
                                        type: string
                                      valuesKey:
                                        description: |-
                                          ValuesKey is the key name that stores the values.yaml in the ConfigMap
                                          If empty, defaults to "values.yaml"
                                        type: string
                                    required:
                                      - name
                                    type: object
                                  version:
                                    type: string
                                required:
                                  - name
                                type: object
                              type: array
                            cluster:
                              description: Cluster defines the configuration of the
                                target cluster
                              properties:
                                apiServer:
                                  description: APIServer contains additional settings
                                    for the API server component
                                  properties:
                                    certSANs:
                                      description: CertSANs sets extra Subject Alternative
                                        Names for the API Server signing certificate
                                      items:
                                        type: string
                                      type: array
                                    extraArgs:
                                      additionalProperties:
                                        type: string
                                      description: ExtraArgs specifies additional command
                                        line flags to pass to the control plane component
                                      type: object
                                    extraVolumes:
                                      description: ExtraVolumes specifies additional
                                        host volumes to mount to the control plane component
                                      items:
                                        description: HostPathMount describes volumes
                                          that are mounted from the host into pods
                                        properties:
                                          hostPath:
                                            description: HostPath specifies the path
                                              on the host that will be mounted into
                                              the pod
                                            type: string
                                          mountPath:
                                            description: MountPath specifies the path
                                              inside the pod where the hostPath will
                                              be mounted
                                            type: string
                                          name:
                                            description: Name specifies the name of
                                              the volume within the pod template
                                            type: string
                                          pathType:
                                            description: PathType specifies the type
                                              of the HostPath
                                            type: string
                                          readOnly:
                                            description: ReadOnly specifies whether
                                              the volume should be mounted as read-only
                                            type: boolean
                                        type: object
                                      type: array
                                    host:
                                      description: Host sets the Host for the API server
                                        to advertise.
                                      type: string
                                    port:
                                      description: Port sets the secure port for the
                                        API Server to bind to. Defaults to 6443.
                                      format: int32
                                      type: integer
                                  type: object
                                certificatesDir:
                                  description: CertificatesDir defines the directory
                                    path for storing or locating all required certificates.
                                  type: string
                                chartRepo:
                                  description: ChartRepo defines the global chart repository
                                    of the deployment target cluster
                                  properties:
                                    authSecretRef:
                                      description: AuthSecretRef defines the secret
                                        name, namespace and other information for authentication
                                      properties:
                                        name:
                                          description: Name of the AuthSecretRef resource
                                          type: string
                                        namespace:
                                          description: |-
                                            Namespace of the AuthSecretRef resource
                                            If empty, defaults to the same namespace as the Cluster resource
                                          type: string
                                        passwordKey:
                                          description: |-
                                            PasswordKey is the key name that stores the password in the secret
                                            If empty, defaults to "password"
                                          type: string
                                        usernameKey:
                                          description: |-
                                            UsernameKey is the key name that stores the username in the secret
                                            If empty, defaults to "username"
                                          type: string
                                      required:
                                        - name
                                      type: object
                                    domain:
                                      description: Domain defines the Repo domain name
                                      type: string
                                    insecureSkipTLSVerify:
                                      description: |-
                                        InsecureSkipTLSVerify defines whether to skip TLS verification when connecting to the repo
                                        If empty, defaults to false
                                      type: boolean
                                    ip:
                                      description: Ip defines the Repo ip
                                      type: string
                                    port:
                                      description: Port defines the number of port to
                                        connect to the Repo
                                      type: string
                                    prefix:
                                      description: Prefix defines the kubernetes image
                                        address
                                      type: string
                                    tlsSecretRef:
                                      description: TlsSecretRef defines the secret name,
                                        namespace and other information for TLS certificates
                                      properties:
                                        caKey:
                                          description: |-
                                            CaKey is the key name that stores the ca.crt in the secret
                                            If empty, defaults to "ca.crt"
                                          type: string
                                        certKey:
                                          description: |-
                                            CertKey is the key name that stores the cert.crt in the secret
                                            If empty, defaults to "cert.crt"
                                          type: string
                                        keyKey:
                                          description: |-
                                            KeyKey is the key name that stores the key.key in the secret
                                            If empty, defaults to "key.key"
                                          type: string
                                        name:
                                          description: Name of the TlsSecretRef resource
                                          type: string
                                        namespace:
                                          description: |-
                                            Namespace of the TlsSecretRef resource
                                            If empty, defaults to the same namespace as the Cluster resource
                                          type: string
                                      required:
                                        - name
                                      type: object
                                  type: object
                                containerRuntime:
                                  description: ContainerRuntime defines the container
                                    runtime of the target cluster
                                  properties:
                                    cri:
                                      description: CRI defines the name of the runtime
                                      enum:
                                        - docker
                                        - containerd
                                      type: string
                                    param:
                                      additionalProperties:
                                        type: string
                                      description: Param defines the param of the runtime
                                      type: object
                                    runtime:
                                      description: Runtime defines the lower runtime
                                        of the runtime
                                      enum:
                                        - runc
                                        - richrunc
                                        - kata
                                      type: string
                                  type: object
                                containerdConfigRef:
                                  description: |-
                                    ContainerdConfigRef references a ContainerdConfig custom resource for advanced containerd configuration
                                    If specified, this will override the default containerd configuration
                                  properties:
                                    name:
                                      description: Name of the ContainerdConfig resource
                                      type: string
                                    namespace:
                                      description: |-
                                        Namespace of the ContainerdConfig resource
                                        If empty, defaults to the same namespace as the Cluster resource
                                      type: string
                                  required:
                                    - name
                                  type: object
                                containerdVersion:
                                  type: string
                                controllerManager:
                                  description: ControllerManager contains additional
                                    settings for the controller manager component
                                  properties:
                                    extraArgs:
                                      additionalProperties:
                                        type: string
                                      description: ExtraArgs specifies additional command
                                        line flags to pass to the control plane component
                                      type: object
                                    extraVolumes:
                                      description: ExtraVolumes specifies additional
                                        host volumes to mount to the control plane component
                                      items:
                                        description: HostPathMount describes volumes
                                          that are mounted from the host into pods
                                        properties:
                                          hostPath:
                                            description: HostPath specifies the path
                                              on the host that will be mounted into
                                              the pod
                                            type: string
                                          mountPath:
                                            description: MountPath specifies the path
                                              inside the pod where the hostPath will
                                              be mounted
                                            type: string
                                          name:
                                            description: Name specifies the name of
                                              the volume within the pod template
                                            type: string
                                          pathType:
                                            description: PathType specifies the type
                                              of the HostPath
                                            type: string
                                          readOnly:
                                            description: ReadOnly specifies whether
                                              the volume should be mounted as read-only
                                            type: boolean
                                        type: object
                                      type: array
                                  type: object
                                etcd:
                                  description: Etcd contains configuration for etcd
                                  properties:
                                    dataDir:
                                      description: |-
                                        DataDir specifies the directory path where etcd will store its data.
                                        If not specified, defaults to "/var/lib/openFuyao/etcd".
                                      type: string
                                    extraArgs:
                                      additionalProperties:
                                        type: string
                                      description: ExtraArgs specifies additional command
                                        line flags to pass to the control plane component
                                      type: object
                                    extraVolumes:
                                      description: ExtraVolumes specifies additional
                                        host volumes to mount to the control plane component
                                      items:
                                        description: HostPathMount describes volumes
                                          that are mounted from the host into pods
                                        properties:
                                          hostPath:
                                            description: HostPath specifies the path
                                              on the host that will be mounted into
                                              the pod
                                            type: string
                                          mountPath:
                                            description: MountPath specifies the path
                                              inside the pod where the hostPath will
                                              be mounted
                                            type: string
                                          name:
                                            description: Name specifies the name of
                                              the volume within the pod template
                                            type: string
                                          pathType:
                                            description: PathType specifies the type
                                              of the HostPath
                                            type: string
                                          readOnly:
                                            description: ReadOnly specifies whether
                                              the volume should be mounted as read-only
                                            type: boolean
                                        type: object
                                      type: array
                                    peerCertSANs:
                                      description: PeerCertSANs defines additional Subject
                                        Alternative Names (SANs) for the etcd peer-to-peer
                                        communication certificate.
                                      items:
                                        type: string
                                      type: array
                                    serverCertSANs:
                                      description: ServerCertSANs defines additional
                                        Subject Alternative Names (SANs) for the etcd
                                        server certificate.
                                      items:
                                        type: string
                                      type: array
                                  type: object
                                etcdVersion:
                                  description: EtcdVersion defines the Etcd version
                                    of the target cluster
                                  type: string
                                httpRepo:
                                  description: |-
                                    HTTPRepo defines the HTTP repository to use when deploying
                                    rpm / deb / http server
                                  properties:
                                    authSecretRef:
                                      description: AuthSecretRef defines the secret
                                        name, namespace and other information for authentication
                                      properties:
                                        name:
                                          description: Name of the AuthSecretRef resource
                                          type: string
                                        namespace:
                                          description: |-
                                            Namespace of the AuthSecretRef resource
                                            If empty, defaults to the same namespace as the Cluster resource
                                          type: string
                                        passwordKey:
                                          description: |-
                                            PasswordKey is the key name that stores the password in the secret
                                            If empty, defaults to "password"
                                          type: string
                                        usernameKey:
                                          description: |-
                                            UsernameKey is the key name that stores the username in the secret
                                            If empty, defaults to "username"
                                          type: string
                                      required:
                                        - name
                                      type: object
                                    domain:
                                      description: Domain defines the Repo domain name
                                      type: string
                                    insecureSkipTLSVerify:
                                      description: |-
                                        InsecureSkipTLSVerify defines whether to skip TLS verification when connecting to the repo
                                        If empty, defaults to false
                                      type: boolean
                                    ip:
                                      description: Ip defines the Repo ip
                                      type: string
                                    port:
                                      description: Port defines the number of port to
                                        connect to the Repo
                                      type: string
                                    prefix:
                                      description: Prefix defines the kubernetes image
                                        address
                                      type: string
                                    tlsSecretRef:
                                      description: TlsSecretRef defines the secret name,
                                        namespace and other information for TLS certificates
                                      properties:
                                        caKey:
                                          description: |-
                                            CaKey is the key name that stores the ca.crt in the secret
                                            If empty, defaults to "ca.crt"
                                          type: string
                                        certKey:
                                          description: |-
                                            CertKey is the key name that stores the cert.crt in the secret
                                            If empty, defaults to "cert.crt"
                                          type: string
                                        keyKey:
                                          description: |-
                                            KeyKey is the key name that stores the key.key in the secret
                                            If empty, defaults to "key.key"
                                          type: string
                                        name:
                                          description: Name of the TlsSecretRef resource
                                          type: string
                                        namespace:
                                          description: |-
                                            Namespace of the TlsSecretRef resource
                                            If empty, defaults to the same namespace as the Cluster resource
                                          type: string
                                      required:
                                        - name
                                      type: object
                                  type: object
                                imageRepo:
                                  description: ImageRepo defines the global image repository
                                    of the deployment target cluster
                                  properties:
                                    authSecretRef:
                                      description: AuthSecretRef defines the secret
                                        name, namespace and other information for authentication
                                      properties:
                                        name:
                                          description: Name of the AuthSecretRef resource
                                          type: string
                                        namespace:
                                          description: |-
                                            Namespace of the AuthSecretRef resource
                                            If empty, defaults to the same namespace as the Cluster resource
                                          type: string
                                        passwordKey:
                                          description: |-
                                            PasswordKey is the key name that stores the password in the secret
                                            If empty, defaults to "password"
                                          type: string
                                        usernameKey:
                                          description: |-
                                            UsernameKey is the key name that stores the username in the secret
                                            If empty, defaults to "username"
                                          type: string
                                      required:
                                        - name
                                      type: object
                                    domain:
                                      description: Domain defines the Repo domain name
                                      type: string
                                    insecureSkipTLSVerify:
                                      description: |-
                                        InsecureSkipTLSVerify defines whether to skip TLS verification when connecting to the repo
                                        If empty, defaults to false
                                      type: boolean
                                    ip:
                                      description: Ip defines the Repo ip
                                      type: string
                                    port:
                                      description: Port defines the number of port to
                                        connect to the Repo
                                      type: string
                                    prefix:
                                      description: Prefix defines the kubernetes image
                                        address
                                      type: string
                                    tlsSecretRef:
                                      description: TlsSecretRef defines the secret name,
                                        namespace and other information for TLS certificates
                                      properties:
                                        caKey:
                                          description: |-
                                            CaKey is the key name that stores the ca.crt in the secret
                                            If empty, defaults to "ca.crt"
                                          type: string
                                        certKey:
                                          description: |-
                                            CertKey is the key name that stores the cert.crt in the secret
                                            If empty, defaults to "cert.crt"
                                          type: string
                                        keyKey:
                                          description: |-
                                            KeyKey is the key name that stores the key.key in the secret
                                            If empty, defaults to "key.key"
                                          type: string
                                        name:
                                          description: Name of the TlsSecretRef resource
                                          type: string
                                        namespace:
                                          description: |-
                                            Namespace of the TlsSecretRef resource
                                            If empty, defaults to the same namespace as the Cluster resource
                                          type: string
                                      required:
                                        - name
                                      type: object
                                  type: object
                                kubelet:
                                  description: Kubelet define kubelet configuration
                                    for all nodes in the target cluster
                                  properties:
                                    extraArgs:
                                      additionalProperties:
                                        type: string
                                      description: ExtraArgs specifies additional command
                                        line flags to pass to the control plane component
                                      type: object
                                    extraVolumes:
                                      description: ExtraVolumes specifies additional
                                        host volumes to mount to the control plane component
                                      items:
                                        description: HostPathMount describes volumes
                                          that are mounted from the host into pods
                                        properties:
                                          hostPath:
                                            description: HostPath specifies the path
                                              on the host that will be mounted into
                                              the pod
                                            type: string
                                          mountPath:
                                            description: MountPath specifies the path
                                              inside the pod where the hostPath will
                                              be mounted
                                            type: string
                                          name:
                                            description: Name specifies the name of
                                              the volume within the pod template
                                            type: string
                                          pathType:
                                            description: PathType specifies the type
                                              of the HostPath
                                            type: string
                                          readOnly:
                                            description: ReadOnly specifies whether
                                              the volume should be mounted as read-only
                                            type: boolean
                                        type: object
                                      type: array
                                    manifestsDir:
                                      description: ManifestsDir is the directory where
                                        kubelet will store manifests
                                      type: string
                                  type: object
                                kubernetesVersion:
                                  description: |-
                                    KubernetesVersion defines the Kubernetes version of the target cluster
                                    support up to v1.25.6 in bke
                                  type: string
                                labels:
                                  description: Global node labels
                                  items:
                                    description: Label represents a key-value pair used
                                      for setting labels on Kubernetes nodes
                                    properties:
                                      key:
                                        type: string
                                      value:
                                        type: string
                                    type: object
                                  type: array
                                networking:
                                  description: Networking defines the configuration
                                    of target cluster network
                                  properties:
                                    dnsDomain:
                                      description: |-
                                        DNSDomain specifies the DNS domain suffix for Kubernetes services.
                                        If not specified, defaults to "cluster.local".
                                      type: string
                                    podSubnet:
                                      description: PodSubnet specifies the CIDR block
                                        for Pod IP addresses.
                                      type: string
                                    serviceSubnet:
                                      description: |-
                                        ServiceSubnet specifies the CIDR block for Kubernetes services.
                                        If not specified, defaults to "10.96.0.0/12".
                                      type: string
                                  type: object
                                ntpServer:
                                  description: NTPServer defines the ntp server information
                                    used for time synchronization
                                  type: string
                                openFuyaoVersion:
                                  type: string
                                scheduler:
                                  description: Scheduler contains additional settings
                                    for the scheduler component
                                  properties:
                                    extraArgs:
                                      additionalProperties:
                                        type: string
                                      description: ExtraArgs specifies additional command
                                        line flags to pass to the control plane component
                                      type: object
                                    extraVolumes:
                                      description: ExtraVolumes specifies additional
                                        host volumes to mount to the control plane component
                                      items:
                                        description: HostPathMount describes volumes
                                          that are mounted from the host into pods
                                        properties:
                                          hostPath:
                                            description: HostPath specifies the path
                                              on the host that will be mounted into
                                              the pod
                                            type: string
                                          mountPath:
                                            description: MountPath specifies the path
                                              inside the pod where the hostPath will
                                              be mounted
                                            type: string
                                          name:
                                            description: Name specifies the name of
                                              the volume within the pod template
                                            type: string
                                          pathType:
                                            description: PathType specifies the type
                                              of the HostPath
                                            type: string
                                          readOnly:
                                            description: ReadOnly specifies whether
                                              the volume should be mounted as read-only
                                            type: boolean
                                        type: object
                                      type: array
                                  type: object
                              required:
                                - ntpServer
                              type: object
                            customExtra:
                              additionalProperties:
                                type: string
                              description: CustomArgs defines the custom args
                              type: object
                          type: object
                        controlPlaneEndpoint:
                          description: ControlPlaneEndpoint represents the endpoint
                            used to communicate with the control plane.
                          properties:
                            host:
                              description: Host sets the Host for the API server to
                                advertise.
                              type: string
                            port:
                              description: Port sets the secure port for the API Server
                                to bind to. Defaults to 6443.
                              format: int32
                              type: integer
                          type: object
                        dryRun:
                          description: DryRun is used to dry run the BKECluster, it
                            also dries run the BKECluster's machines.
                          type: boolean
                        pause:
                          description: Pause is used to pause reconciliation of the
                            BKECluster, it also pauses the BKECluster's machines.
                          type: boolean
                        reset:
                          description: Reset is used to reset the BKECluster, it also
                            resets the BKECluster's machines, include cluster-api Cluster
                            Machine etc.
                          type: boolean
                      type: object
                  required:
                    - spec
                  type: object
              required:
                - template
              type: object
          type: object
      served: true
      storage: true
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.16.5
  labels:
    cluster.x-k8s.io/provider: infrastructure-bke
    cluster.x-k8s.io/v1beta1: v1beta1
  name: bkemachines.bke.bocloud.com
spec:
  group: bke.bocloud.com
  names:
    kind: BKEMachine
    listKind: BKEMachineList
    plural: bkemachines
    singular: bkemachine
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - description: The hostname of the machine
          jsonPath: .status.node.hostname
          name: HOSTNAME
          type: string
        - description: The ip of the machine
          jsonPath: .status.node.ip
          name: IP
          type: string
        - jsonPath: .spec.providerID
          name: PROVIDER-ID
          type: string
        - jsonPath: .status.bootstrapped
          name: BOOTSTRAPPED
          type: boolean
      name: v1beta1
      schema:
        openAPIV3Schema:
          description: BKEMachine is the Schema for the bkemachines API
          properties:
            apiVersion:
              description: |-
                APIVersion defines the versioned schema of this representation of an object.
                Servers should convert recognized schemas to the latest internal value, and
                may reject unrecognized values.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
              type: string
            kind:
              description: |-
                Kind is a string value representing the REST resource this object represents.
                Servers may infer this from the endpoint the client submits requests to.
                Cannot be updated.
                In CamelCase.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
              type: string
            metadata:
              type: object
            spec:
              description: BKEMachineSpec defines the desired state of BKEMachine
              properties:
                dryRun:
                  description: DryRun is used to dry run the BKEMachine.
                  type: boolean
                pause:
                  description: Pause is used to pause reconciliation of the BKEMachine.
                  type: boolean
                providerID:
                  description: 标识唯一的主机 cluster-api需要的参数,可以用hostname或者ip填充
                  type: string
              type: object
            status:
              description: BKEMachineStatus defines the observed state of BKEMachine
              properties:
                addresses:
                  items:
                    description: MachineAddress contains information for the node's
                      address.
                    properties:
                      address:
                        description: The machine address.
                        type: string
                      type:
                        description: Machine address type, one of Hostname, ExternalIP
                          or InternalIP.
                        type: string
                    required:
                      - address
                      - type
                    type: object
                  type: array
                bootstrapped:
                  description: Bootstrapped means that the machine already has bootstrapped
                  type: boolean
                conditions:
                  description: Conditions provide observations of the operational state
                    of a Cluster API resource.
                  items:
                    description: Condition defines an observation of a Cluster API resource
                      operational state.
                    properties:
                      lastTransitionTime:
                        description: |-
                          Last time the condition transitioned from one status to another.
                          This should be when the underlying condition changed. If that is not known, then using the time when
                          the API field changed is acceptable.
                        format: date-time
                        type: string
                      message:
                        description: |-
                          A human readable message indicating details about the transition.
                          This field may be empty.
                        type: string
                      reason:
                        description: |-
                          The reason for the condition's last transition in CamelCase.
                          The specific API may choose whether or not this field is considered a guaranteed API.
                          This field may not be empty.
                        type: string
                      severity:
                        description: |-
                          Severity provides an explicit classification of Reason code, so the users or machines can immediately
                          understand the current situation and act accordingly.
                          The Severity field MUST be set only when Status=False.
                        type: string
                      status:
                        description: Status of the condition, one of True, False, Unknown.
                        type: string
                      type:
                        description: |-
                          Type of condition in CamelCase or in foo.example.com/CamelCase.
                          Many .condition.type values are consistent across resources like Available, but because arbitrary conditions
                          can be useful (see .node.status.conditions), the ability to deconflict is important.
                        type: string
                    required:
                      - lastTransitionTime
                      - status
                      - type
                    type: object
                  type: array
                node:
                  properties:
                    apiServer:
                      description: APIServer contains extra settings for the api server
                        control plane component
                      properties:
                        certSANs:
                          description: CertSANs sets extra Subject Alternative Names
                            for the API Server signing cert.
                          items:
                            type: string
                          type: array
                        extraArgs:
                          additionalProperties:
                            type: string
                          description: ExtraArgs is an extra set of flags to pass to
                            the control plane component.
                          type: object
                        extraVolumes:
                          description: ExtraVolumes is an extra set of host volumes,
                            mounted to the control plane component.
                          items:
                            description: |-
                              HostPathMount contains elements describing volumes that are mounted from the
                              host.
                            properties:
                              hostPath:
                                description: |-
                                  HostPath is the path in the host that will be mounted inside
                                  the pod.
                                type: string
                              mountPath:
                                description: MountPath is the path inside the pod where
                                  hostPath will be mounted.
                                type: string
                              name:
                                description: Name of the volume inside the pod template.
                                type: string
                              pathType:
                                description: PathType is the type of the HostPath.
                                type: string
                              readOnly:
                                description: ReadOnly controls write access to the volume
                                type: boolean
                            type: object
                          type: array
                        host:
                          description: AdvertiseAddress sets the IP address for the
                            API server to advertise.
                          type: string
                        port:
                          description: |-
                            BindPort sets the secure port for the API Server to bind to.
                            Defaults to 6443.
                          format: int32
                          type: integer
                      type: object
                    controllerManager:
                      description: ControllerManager contains extra settings for the
                        controller manager control plane component
                      properties:
                        extraArgs:
                          additionalProperties:
                            type: string
                          description: ExtraArgs is an extra set of flags to pass to
                            the control plane component.
                          type: object
                        extraVolumes:
                          description: ExtraVolumes is an extra set of host volumes,
                            mounted to the control plane component.
                          items:
                            description: |-
                              HostPathMount contains elements describing volumes that are mounted from the
                              host.
                            properties:
                              hostPath:
                                description: |-
                                  HostPath is the path in the host that will be mounted inside
                                  the pod.
                                type: string
                              mountPath:
                                description: MountPath is the path inside the pod where
                                  hostPath will be mounted.
                                type: string
                              name:
                                description: Name of the volume inside the pod template.
                                type: string
                              pathType:
                                description: PathType is the type of the HostPath.
                                type: string
                              readOnly:
                                description: ReadOnly controls write access to the volume
                                type: boolean
                            type: object
                          type: array
                      type: object
                    etcd:
                      description: Etcd holds configuration for etcd
                      properties:
                        dataDir:
                          description: |-
                            DataDir is the directory etcd will place its data.
                            Defaults to "/var/lib/openFuyao/etcd".
                          type: string
                        extraArgs:
                          additionalProperties:
                            type: string
                          description: ExtraArgs is an extra set of flags to pass to
                            the control plane component.
                          type: object
                        extraVolumes:
                          description: ExtraVolumes is an extra set of host volumes,
                            mounted to the control plane component.
                          items:
                            description: |-
                              HostPathMount contains elements describing volumes that are mounted from the
                              host.
                            properties:
                              hostPath:
                                description: |-
                                  HostPath is the path in the host that will be mounted inside
                                  the pod.
                                type: string
                              mountPath:
                                description: MountPath is the path inside the pod where
                                  hostPath will be mounted.
                                type: string
                              name:
                                description: Name of the volume inside the pod template.
                                type: string
                              pathType:
                                description: PathType is the type of the HostPath.
                                type: string
                              readOnly:
                                description: ReadOnly controls write access to the volume
                                type: boolean
                            type: object
                          type: array
                        peerCertSANs:
                          description: PeerCertSANs sets extra Subject Alternative Names
                            for the etcd peer signing cert.
                          items:
                            type: string
                          type: array
                        serverCertSANs:
                          description: ServerCertSANs sets extra Subject Alternative
                            Names for the etcd server signing cert.
                          items:
                            type: string
                          type: array
                      type: object
                    hostname:
                      description: Hostname specifies the hostname of the node
                      type: string
                    ip:
                      description: IP node IP
                      type: string
                    kubelet:
                      description: Kubelet rewrite the cluster's Kubelet configuration'
                      properties:
                        extraArgs:
                          additionalProperties:
                            type: string
                          description: ExtraArgs is an extra set of flags to pass to
                            the control plane component.
                          type: object
                        extraVolumes:
                          description: ExtraVolumes is an extra set of host volumes,
                            mounted to the control plane component.
                          items:
                            description: |-
                              HostPathMount contains elements describing volumes that are mounted from the
                              host.
                            properties:
                              hostPath:
                                description: |-
                                  HostPath is the path in the host that will be mounted inside
                                  the pod.
                                type: string
                              mountPath:
                                description: MountPath is the path inside the pod where
                                  hostPath will be mounted.
                                type: string
                              name:
                                description: Name of the volume inside the pod template.
                                type: string
                              pathType:
                                description: PathType is the type of the HostPath.
                                type: string
                              readOnly:
                                description: ReadOnly controls write access to the volume
                                type: boolean
                            type: object
                          type: array
                        manifestsDir:
                          description: ManifestsDir is the directory where kubelet will
                            store manifests
                          type: string
                      type: object
                    labels:
                      description: Node Labels
                      items:
                        properties:
                          key:
                            type: string
                          value:
                            type: string
                        type: object
                      type: array
                    password:
                      description: Password node Password used for SSH
                      type: string
                    port:
                      description: Port node Port used for SSH
                      type: string
                    role:
                      description: Role defines the role of the node in target cluster
                      items:
                        type: string
                      type: array
                    scheduler:
                      description: Scheduler contains extra settings for the scheduler
                        control plane component
                      properties:
                        extraArgs:
                          additionalProperties:
                            type: string
                          description: ExtraArgs is an extra set of flags to pass to
                            the control plane component.
                          type: object
                        extraVolumes:
                          description: ExtraVolumes is an extra set of host volumes,
                            mounted to the control plane component.
                          items:
                            description: |-
                              HostPathMount contains elements describing volumes that are mounted from the
                              host.
                            properties:
                              hostPath:
                                description: |-
                                  HostPath is the path in the host that will be mounted inside
                                  the pod.
                                type: string
                              mountPath:
                                description: MountPath is the path inside the pod where
                                  hostPath will be mounted.
                                type: string
                              name:
                                description: Name of the volume inside the pod template.
                                type: string
                              pathType:
                                description: PathType is the type of the HostPath.
                                type: string
                              readOnly:
                                description: ReadOnly controls write access to the volume
                                type: boolean
                            type: object
                          type: array
                      type: object
                    username:
                      description: Username node Username used for SSH
                      type: string
                  type: object
                ready:
                  description: |-
                    INSERT ADDITIONAL STATUS FIELD - define observed state of cluster
                    Important: Run "make" to regenerate code after modifying this file
                    Ready denotes that the machine is ready
                  type: boolean
              type: object
          type: object
      served: true
      storage: true
      subresources:
        status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.16.5
  labels:
    cluster.x-k8s.io/provider: infrastructure-bke
    cluster.x-k8s.io/v1beta1: v1beta1
  name: bkemachinetemplates.bke.bocloud.com
spec:
  group: bke.bocloud.com
  names:
    kind: BKEMachineTemplate
    listKind: BKEMachineTemplateList
    plural: bkemachinetemplates
    singular: bkemachinetemplate
  scope: Namespaced
  versions:
    - name: v1beta1
      schema:
        openAPIV3Schema:
          description: BKEMachineTemplate is the Schema for the bkemachinetemplates
            API
          properties:
            apiVersion:
              description: |-
                APIVersion defines the versioned schema of this representation of an object.
                Servers should convert recognized schemas to the latest internal value, and
                may reject unrecognized values.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
              type: string
            kind:
              description: |-
                Kind is a string value representing the REST resource this object represents.
                Servers may infer this from the endpoint the client submits requests to.
                Cannot be updated.
                In CamelCase.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
              type: string
            metadata:
              type: object
            spec:
              description: BKEMachineTemplateSpec defines the desired state of BKEMachineTemplate
              properties:
                template:
                  properties:
                    metadata:
                      description: |-
                        Standard object's metadata.
                        More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
                      properties:
                        annotations:
                          additionalProperties:
                            type: string
                          description: |-
                            Annotations is an unstructured key value map stored with a resource that may be
                            set by external tools to store and retrieve arbitrary metadata. They are not
                            queryable and should be preserved when modifying objects.
                            More info: http://kubernetes.io/docs/user-guide/annotations
                          type: object
                        labels:
                          additionalProperties:
                            type: string
                          description: |-
                            Map of string keys and values that can be used to organize and categorize
                            (scope and select) objects. May match selectors of replication controllers
                            and services.
                            More info: http://kubernetes.io/docs/user-guide/labels
                          type: object
                      type: object
                    spec:
                      description: Spec is the specification of the desired behavior
                        of the machine.
                      properties:
                        dryRun:
                          description: DryRun is used to dry run the BKEMachine.
                          type: boolean
                        pause:
                          description: Pause is used to pause reconciliation of the
                            BKEMachine.
                          type: boolean
                        providerID:
                          description: 标识唯一的主机 cluster-api需要的参数,可以用hostname或者ip填充
                          type: string
                      type: object
                  required:
                    - spec
                  type: object
              required:
                - template
              type: object
          type: object
      served: true
      storage: true
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.9.0
  creationTimestamp: null
  labels:
    cluster.x-k8s.io/provider: infrastructure-bke
    cluster.x-k8s.io/v1beta1: v1beta1
  name: commands.bkeagent.bocloud.com
spec:
  group: bkeagent.bocloud.com
  names:
    kind: Command
    listKind: CommandList
    plural: commands
    shortNames:
      - cmd
    singular: command
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .spec.nodeName
          name: NODENAME
          type: string
        - jsonPath: .spec.suspend
          name: SUSPEND
          type: boolean
        - jsonPath: .spec.backoffLimit
          name: BACKOFFLIMIT
          type: integer
        - jsonPath: .spec.ttlSecondsAfterFinished
          name: TTLSECONDSAFTERFINISHED
          type: integer
      name: v1beta1
      schema:
        openAPIV3Schema:
          description: Command is the Schema for the commands API
          properties:
            apiVersion:
              description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
              type: string
            kind:
              description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
              type: string
            metadata:
              type: object
            spec:
              description: CommandSpec defines the desired state of Command
              properties:
                activeDeadlineSecond:
                  description: 超过此时间后,不在执行。默认600 当该任务暂停后,重新启动时将重新计时
                  type: integer
                backoffLimit:
                  description: 当某个命令执行失败时, 最大重试次数
                  type: integer
                commands:
                  description: 这里的指令会按照数组顺序执行,如果上个不成功则下个不会执行,除非设置了失败跳过 对于指令书写错误的直接标识失败
                  items:
                    properties:
                      backoffDelay:
                        description: 命令执行失败时, 重试间隔时间 默认为0
                        type: integer
                      backoffIgnore:
                        description: 当该条指令执行失败,并且达到失败重试次数时,为true则运行跳过,默认false
                        type: boolean
                      command:
                        description: '这里要根据命令类型进行不同的指令解析 Type: BuiltIn,是Agent内置实现指令,比如节点Ipv4开启等, 示例[]string{ipv4, dockerStorageCapacity},将检查ipv4转发是否开启, docker目录/var/lib/docker是否大于300G Type: Shell,这个是要Agent执行具体的指令 示例[]string{"iptables", "--table", "nat", "--list", ">", "/tmp/iptables.rule"},获取iptables规则并写入文件 Type: Kubernetes,这个是要获取K8s中资源或者执行里边的指令 固定格式: [configmap|secret]:ns/name:ro:/tmp/secret.json 只支持[configmap|secret], ns/name标识唯一资源,只有[ro|rx|rw]三个值标识[configmap|secret]资源是[只读|执行|写入] 最后一个为宿主机目录,当rx时最后一个为任意值 示例[]string{"secret:ns/name:ro:/tmp/secret.json"} 获取secret/ns/name资源并写入/tmp/secret.json文件 示例[]string{"configmap:ns/name:rx:shell"} 获取configmap/ns/name中的资源,在agent以shell方式执行 示例[]string{"configmap:ns/name:rw:/tmp/iptables.rule"} 读取/tmp/iptables.rule中的内容并写入configmap/ns/name'
                        items:
                          type: string
                        type: array
                      id:
                        description: 每条指令都必须有唯一的ID
                        type: string
                      type:
                        description: 指令类型
                        type: string
                    required:
                      - command
                      - id
                      - type
                    type: object
                  type: array
                nodeName:
                  description: 命令执行节点
                  type: string
                nodeSelector:
                  description: 选定某些节点执行,NodeName需要为空
                  properties:
                    matchExpressions:
                      description: matchExpressions is a list of label selector requirements. The requirements are ANDed.
                      items:
                        description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
                        properties:
                          key:
                            description: key is the label key that the selector applies to.
                            type: string
                          operator:
                            description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
                            type: string
                          values:
                            description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
                            items:
                              type: string
                            type: array
                        required:
                          - key
                          - operator
                        type: object
                      type: array
                    matchLabels:
                      additionalProperties:
                        type: string
                      description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
                      type: object
                  type: object
                suspend:
                  description: 挂起暂不执行,可阻止下个执行的指令
                  type: boolean
                ttlSecondsAfterFinished:
                  description: 运行完成后,超过此清理的时间则清理该任务,不设置不删除
                  type: integer
              type: object
            status:
              additionalProperties:
                description: CommandStatus defines the observed state of Command
                properties:
                  completionTime:
                    description: Represents time when the job was completed. It is not guaranteed to be set in happens-before order across separate operations. It is represented in RFC3339 form and is in UTC. The completion time is only set when the job finishes successfully.
                    format: date-time
                    type: string
                  conditions:
                    items:
                      properties:
                        count:
                          description: 执行次数
                          type: integer
                        id:
                          description: 每条指令都必须有唯一的ID
                          type: string
                        lastStartTime:
                          format: date-time
                          type: string
                        phase:
                          description: 该命令所在阶段
                          type: string
                        status:
                          description: 该命令执行的结果
                          type: string
                        stdErr:
                          items:
                            type: string
                          type: array
                        stdOut:
                          items:
                            type: string
                          type: array
                      required:
                        - id
                      type: object
                    type: array
                  failed:
                    description: The number of pods which reached phase Failed.
                    type: integer
                  lastStartTime:
                    description: 这个时间在两处更新,一处该CRD刚刚要被处理时,由agent来更新 当该任务暂停后,在磁被启动的时候要cluster-api-provider-metal来同时更新此字段 spec.activeDeadlineSecond 依据此字段做判断
                    format: date-time
                    type: string
                  phase:
                    description: 执行阶段
                    type: string
                  status:
                    description: 执行结果
                    type: string
                  succeeded:
                    description: The number of pods which reached phase Succeeded.
                    type: integer
                type: object
              type: object
          type: object
      served: true
      storage: true
      subresources:
        status: {}
---
apiVersion: v1
kind: ServiceAccount
metadata:
  labels:
    cluster.x-k8s.io/provider: infrastructure-bke
  name: bke-controller-manager
  namespace: cluster-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  labels:
    cluster.x-k8s.io/provider: infrastructure-bke
  name: bke-leader-election-role
  namespace: cluster-system
rules:
  - apiGroups:
      - ""
    resources:
      - configmaps
    verbs:
      - get
      - list
      - watch
      - create
      - update
      - patch
      - delete
  - apiGroups:
      - coordination.k8s.io
    resources:
      - leases
    verbs:
      - get
      - list
      - watch
      - create
      - update
      - patch
      - delete
  - apiGroups:
      - ""
    resources:
      - events
    verbs:
      - create
      - patch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  labels:
    cluster.x-k8s.io/provider: infrastructure-bke
  name: bke-manager-role
rules:
  - apiGroups:
      - ""
    resources:
      - configmaps
      - events
      - namespaces
      - secrets
      - pods
      - pods/status
      - services
      - replicationcontrollers
      - persistentvolumeclaims
    verbs:
      - create
      - delete
      - get
      - list
      - patch
      - update
      - watch
      - deletecollection
  - apiGroups:
      - apps
    resources:
      - deployments
      - deployments/status
      - daemonsets
      - daemonsets/status
      - replicasets
      - replicasets/status
      - statefulsets
      - statefulsets/status
    verbs:
      - create
      - delete
      - get
      - list
      - patch
      - update
      - watch
  - apiGroups:
      - batch
    resources:
      - jobs
      - jobs/status
    verbs:
      - create
      - delete
      - get
      - list
      - patch
      - update
      - watch
  - apiGroups:
      - apiextensions.k8s.io
    resources:
      - customresourcedefinitions
      - customresourcedefinitions/status
    verbs:
      - create
      - delete
      - get
      - list
      - patch
      - update
      - watch
  - apiGroups:
      - bke.bocloud.com
    resources:
      - '*'
    verbs:
      - create
      - delete
      - get
      - list
      - patch
      - update
      - watch
  - apiGroups:
      - bkeagent.bocloud.com
    resources:
      - commands
    verbs:
      - create
      - delete
      - get
      - list
      - patch
      - update
      - watch
  - apiGroups:
      - bootstrap.cluster.x-k8s.io
      - cluster.x-k8s.io
      - controlplane.cluster.x-k8s.io
    resources:
      - '*'
    verbs:
      - create
      - delete
      - get
      - list
      - patch
      - update
      - watch
  - apiGroups:
      - config.openfuyao.com
    resources:
      - upgradepaths
      - releaseimages
      - clusterversions
    verbs:
      - get
      - list
      - watch
      - create
      - update
      - patch
      - delete
  - apiGroups:
      - config.openfuyao.com
    resources:
      - upgradepaths/status
      - releaseimages/status
      - clusterversions/status
    verbs:
      - get
      - patch
      - update
  - apiGroups:
      - apiextensions.k8s.io
    resources:
      - customresourcedefinitions
    verbs:
      - get
      - list
      - watch
      - create
      - update
      - patch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  labels:
    cluster.x-k8s.io/provider: infrastructure-bke
  name: bke-leader-election-rolebinding
  namespace: cluster-system
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: bke-leader-election-role
subjects:
  - kind: ServiceAccount
    name: bke-controller-manager
    namespace: cluster-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  labels:
    cluster.x-k8s.io/provider: infrastructure-bke
  name: bke-cluster-api-rolebinding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: bke-manager-role
subjects:
  - apiGroup: rbac.authorization.k8s.io
    kind: Group
    name: system:serviceaccounts:cluster-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  labels:
    cluster.x-k8s.io/provider: infrastructure-bke
  name: bke-manager-rolebinding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: bke-manager-role
subjects:
  - kind: ServiceAccount
    name: bke-controller-manager
    namespace: cluster-system
---
apiVersion: v1
kind: Service
metadata:
  labels:
    cluster.x-k8s.io/provider: infrastructure-bke
    control-plane: controller-manager
  name: bke-controller-manager-metrics-service
  namespace: cluster-system
spec:
  ports:
    - name: metrics
      port: 8080
      protocol: TCP
      targetPort: 8080
  selector:
    cluster.x-k8s.io/provider: infrastructure-bke
    control-plane: controller-manager
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app.kubernetes.io/component: webhook
    app.kubernetes.io/created-by: cluster-api-provider-bke
    app.kubernetes.io/instance: webhook-service
    app.kubernetes.io/managed-by: kustomize
    app.kubernetes.io/name: service
    app.kubernetes.io/part-of: cluster-api-provider-bke
    cluster.x-k8s.io/provider: infrastructure-bke
  name: bke-webhook-service
  namespace: cluster-system
spec:
  ports:
    - port: 443
      protocol: TCP
      targetPort: 9443
  selector:
    cluster.x-k8s.io/provider: infrastructure-bke
    control-plane: controller-manager
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    cluster.x-k8s.io/provider: infrastructure-bke
    control-plane: controller-manager
  name: bke-controller-manager
  namespace: cluster-system
spec:
  replicas: 1
  selector:
    matchLabels:
      cluster.x-k8s.io/provider: infrastructure-bke
      control-plane: controller-manager
  template:
    metadata:
      annotations:
        kubectl.kubernetes.io/default-container: manager
        prometheus.io/port: "8080"
        prometheus.io/scrape: "true"
      labels:
        cluster.x-k8s.io/provider: infrastructure-bke
        control-plane: controller-manager
    spec:
      dnsConfig:
        nameservers:
          - 8.8.8.8
          - 8.8.4.4
      containers:
        - command:
            - /manager
            - --metrics-bind-address=:8080
            - --leader-elect=true
            - --health-probe-bind-address=:8081
            - --health-probe-scheme=http
          env:
            - name: container
              value: "true"
            - name: DEBUG
              value: "true"
            - name: ALLOWED_FAILED_COUNT
              value: "3"
          image: {{ if .repo }}{{ .repo }}{{ else }}cr.openfuyao.cn/openfuyao/{{ end }}cluster-api-provider-bke:{{.providerVersion}}
          imagePullPolicy: Always
          livenessProbe:
            httpGet:
              path: /healthz
              port: 8081
              scheme: HTTP
            initialDelaySeconds: 15
            periodSeconds: 20
          name: manager
          ports:
            - containerPort: 9443
              name: webhook-server
              protocol: TCP
          readinessProbe:
            httpGet:
              path: /readyz
              port: 8081
              scheme: HTTP
            initialDelaySeconds: 5
            periodSeconds: 10
          resources:
            limits:
              cpu: 500m
              memory: 1Gi
            requests:
              cpu: 100m
              memory: 200Mi
          securityContext:
            allowPrivilegeEscalation: true
          volumeMounts:
            - mountPath: /tmp/k8s-webhook-server/serving-certs
              name: cert
              readOnly: true
            - mountPath: /var/log
              name: log
            - mountPath: /etc/localtime
              name: localtime
            - mountPath: /manifests
              name: manifests
            - mountPath: /var/lib/bke/release-cache
              name: release-cache
            - mountPath: /etc/openFuyao
              name: repo-cert
              readOnly: true
      initContainers:
        - command:
            - /bin/sh
            - -c
            - cp -rf . /manifests
          image: {{ if .repo }}{{ .repo }}{{ else }}cr.openfuyao.cn/openfuyao/{{ end }}bke-manifests:{{.manifestsVersion}}
          imagePullPolicy: Always
          name: manifests
          volumeMounts:
            - mountPath: /manifests
              name: manifests
      securityContext:
        runAsNonRoot: false
      serviceAccountName: bke-controller-manager
      terminationGracePeriodSeconds: 10
      volumes:
        - name: cert
          secret:
            defaultMode: 420
            secretName: bke-webhook-secret
        - hostPath:
            path: /var/log
            type: Directory
          name: log
        - hostPath:
            path: /etc/localtime
          name: localtime
        - hostPath:
            path: /etc/openFuyao
            type: DirectoryOrCreate
          name: repo-cert
        - hostPath:
            path: /etc/openFuyao/addons/manifests
            type: Directory
          name: manifests
        - hostPath:
            path: /var/lib/bke/release-cache
            type: DirectoryOrCreate
          name: release-cache
#---
#apiVersion: monitoring.coreos.com/v1
#kind: ServiceMonitor
#metadata:
#  labels:
#    cluster.x-k8s.io/provider: infrastructure-bke
#    control-plane: controller-manager
#  name: bke-controller-manager-metrics-monitor
#  namespace: cluster-system
#spec:
#  endpoints:
#    - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
#      path: /metrics
#      port: metrics
#  selector:
#    matchLabels:
#      cluster.x-k8s.io/provider: infrastructure-bke
#      control-plane: controller-manager
---
apiVersion: admissionregistration.k8s.io/v1
kind: MutatingWebhookConfiguration
metadata:
  annotations:
    cert-manager.io/inject-ca-from: cluster-system/bke-serving-cert
  labels:
    app.kubernetes.io/component: webhook
    app.kubernetes.io/created-by: cluster-api-provider-bke
    app.kubernetes.io/instance: mutating-webhook-configuration
    app.kubernetes.io/managed-by: kustomize
    app.kubernetes.io/name: mutatingwebhookconfiguration
    app.kubernetes.io/part-of: cluster-api-provider-bke
    cluster.x-k8s.io/provider: infrastructure-bke
  name: bke-mutating-webhook-configuration
webhooks:
  - admissionReviewVersions:
      - v1
    clientConfig:
      caBundle: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJkekNDQVJ5Z0F3SUJBZ0lSQUxNaVpPME02MFk5U0NpbjdWYlVPV2N3Q2dZSUtvWkl6ajBFQXdJd0R6RU4KTUFzR0ExVUVDaE1FYm1sc01UQWdGdzB5TXpFeU1qWXdNalU0TlRGYUdBOHlNVEl6TVRJd01qQXlOVGcxTVZvdwpEekVOTUFzR0ExVUVDaE1FYm1sc01UQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJMaDdNTFRvCm9LL2pGNXdXdkcrTGphUER6K2pJZG9XQkE0MVp2V3F6eDJ2NkZVb2dmWnRpa2RNNENvM0ZneTJTWEVIa25MWEYKNU9xWUVEQ0JVSHhlLzBPalZ6QlZNQTRHQTFVZER3RUIvd1FFQXdJQ0JEQVRCZ05WSFNVRUREQUtCZ2dyQmdFRgpCUWNEQVRBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJTUURGS2dsUWRicWhNTVdGSW94b1BIClI1Q1RSREFLQmdncWhrak9QUVFEQWdOSkFEQkdBaUVBZ1E4L0s5aEdlWjZwNGJZU3A4bE9KQVo2M1dxMHNNLzMKcmh4djAvT1BCdElDSVFDR056czVIbFZ0OVdQbFJ1S0RSVUIxblBGTklVMkUzbncwRFlhbWVsajFGZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
      service:
        name: bke-webhook-service
        namespace: cluster-system
        path: /mutate-bke-bocloud-com-v1beta1-bkecluster
    failurePolicy: Fail
    name: mbkecluster.kb.io
    rules:
      - apiGroups:
          - bke.bocloud.com
        apiVersions:
          - v1beta1
        operations:
          - CREATE
          - UPDATE
        resources:
          - bkeclusters
    sideEffects: None
---
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
  annotations:
    cert-manager.io/inject-ca-from: cluster-system/bke-serving-cert
  labels:
    app.kubernetes.io/component: webhook
    app.kubernetes.io/created-by: cluster-api-provider-bke
    app.kubernetes.io/instance: validating-webhook-configuration
    app.kubernetes.io/managed-by: kustomize
    app.kubernetes.io/name: validatingwebhookconfiguration
    app.kubernetes.io/part-of: cluster-api-provider-bke
    cluster.x-k8s.io/provider: infrastructure-bke
  name: bke-validating-webhook-configuration
webhooks:
  - admissionReviewVersions:
      - v1
    clientConfig:
      caBundle: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJkekNDQVJ5Z0F3SUJBZ0lSQUxNaVpPME02MFk5U0NpbjdWYlVPV2N3Q2dZSUtvWkl6ajBFQXdJd0R6RU4KTUFzR0ExVUVDaE1FYm1sc01UQWdGdzB5TXpFeU1qWXdNalU0TlRGYUdBOHlNVEl6TVRJd01qQXlOVGcxTVZvdwpEekVOTUFzR0ExVUVDaE1FYm1sc01UQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJMaDdNTFRvCm9LL2pGNXdXdkcrTGphUER6K2pJZG9XQkE0MVp2V3F6eDJ2NkZVb2dmWnRpa2RNNENvM0ZneTJTWEVIa25MWEYKNU9xWUVEQ0JVSHhlLzBPalZ6QlZNQTRHQTFVZER3RUIvd1FFQXdJQ0JEQVRCZ05WSFNVRUREQUtCZ2dyQmdFRgpCUWNEQVRBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJTUURGS2dsUWRicWhNTVdGSW94b1BIClI1Q1RSREFLQmdncWhrak9QUVFEQWdOSkFEQkdBaUVBZ1E4L0s5aEdlWjZwNGJZU3A4bE9KQVo2M1dxMHNNLzMKcmh4djAvT1BCdElDSVFDR056czVIbFZ0OVdQbFJ1S0RSVUIxblBGTklVMkUzbncwRFlhbWVsajFGZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
      service:
        name: bke-webhook-service
        namespace: cluster-system
        path: /validate-bke-bocloud-com-v1beta1-bkecluster
    failurePolicy: Fail
    name: vbkecluster.kb.io
    rules:
      - apiGroups:
          - bke.bocloud.com
        apiVersions:
          - v1beta1
        operations:
          - CREATE
          - UPDATE
        resources:
          - bkeclusters
    sideEffects: None
  - admissionReviewVersions:
      - v1
    clientConfig:
      caBundle: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJkekNDQVJ5Z0F3SUJBZ0lSQUxNaVpPME02MFk5U0NpbjdWYlVPV2N3Q2dZSUtvWkl6ajBFQXdJd0R6RU4KTUFzR0ExVUVDaE1FYm1sc01UQWdGdzB5TXpFeU1qWXdNalU0TlRGYUdBOHlNVEl6TVRJd01qQXlOVGcxTVZvdwpEekVOTUFzR0ExVUVDaE1FYm1sc01UQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJMaDdNTFRvCm9LL2pGNXdXdkcrTGphUER6K2pJZG9XQkE0MVp2V3F6eDJ2NkZVb2dmWnRpa2RNNENvM0ZneTJTWEVIa25MWEYKNU9xWUVEQ0JVSHhlLzBPalZ6QlZNQTRHQTFVZER3RUIvd1FFQXdJQ0JEQVRCZ05WSFNVRUREQUtCZ2dyQmdFRgpCUWNEQVRBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJTUURGS2dsUWRicWhNTVdGSW94b1BIClI1Q1RSREFLQmdncWhrak9QUVFEQWdOSkFEQkdBaUVBZ1E4L0s5aEdlWjZwNGJZU3A4bE9KQVo2M1dxMHNNLzMKcmh4djAvT1BCdElDSVFDR056czVIbFZ0OVdQbFJ1S0RSVUIxblBGTklVMkUzbncwRFlhbWVsajFGZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
      service:
        name: bke-webhook-service
        namespace: cluster-system
        path: /validate-config-openfuyao-com-v1alpha1-upgradepath
    failurePolicy: Fail
    name: vupgradepath.kb.io
    rules:
      - apiGroups:
          - config.openfuyao.com
        apiVersions:
          - v1alpha1
        operations:
          - CREATE
          - UPDATE
          - DELETE
        resources:
          - upgradepaths
    sideEffects: None