{
  "properties": {
    "apiVersion": {
      "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
      "type": "string"
    },
    "metadata": {
      "type": "object"
    },
    "spec": {
      "description": "KubeControllersConfigurationSpec contains the values of the Kubernetes controllers configuration.",
      "properties": {
        "controllers": {
          "description": "Controllers enables and configures individual Kubernetes controllers",
          "properties": {
            "loadBalancer": {
              "description": "LoadBalancer enables and configures the LoadBalancer controller. Enabled by default, set to nil to disable.",
              "properties": {
                "assignIPs": {
                  "default": "AllServices",
                  "description": "AssignIPs controls which LoadBalancer Service gets IP assigned from Calico IPAM.",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "namespace": {
              "description": "Namespace enables and configures the namespace controller. Enabled by default, set to nil to disable.",
              "properties": {
                "reconcilerPeriod": {
                  "description": "ReconcilerPeriod is the period to perform reconciliation with the Calico datastore. [Default: 5m]",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "node": {
              "description": "Node enables and configures the node controller. Enabled by default, set to nil to disable.",
              "properties": {
                "hostEndpoint": {
                  "description": "HostEndpoint controls syncing nodes to host endpoints. Disabled by default, set to nil to disable.",
                  "properties": {
                    "autoCreate": {
                      "description": "AutoCreate enables automatic creation of host endpoints for every node. [Default: Disabled]",
                      "type": "string"
                    },
                    "createDefaultHostEndpoint": {
                      "type": "string"
                    },
                    "templates": {
                      "description": "Templates contains definition for creating AutoHostEndpoints",
                      "items": {
                        "properties": {
                          "generateName": {
                            "description": "GenerateName is appended to the end of the generated AutoHostEndpoint name",
                            "type": "string"
                          },
                          "interfaceCIDRs": {
                            "description": "InterfaceCIDRs contains a list of CIRDs used for matching nodeIPs to the AutoHostEndpoint",
                            "items": {
                              "type": "string"
                            },
                            "type": "array"
                          },
                          "labels": {
                            "additionalProperties": {
                              "type": "string"
                            },
                            "description": "Labels adds the specified labels to the generated AutoHostEndpoint, labels from node with the same name will be overwritten by values from the template label",
                            "type": "object"
                          },
                          "nodeSelector": {
                            "description": "NodeSelector allows the AutoHostEndpoint to be created only for specific nodes",
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "type": "array"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "leakGracePeriod": {
                  "description": "LeakGracePeriod is the period used by the controller to determine if an IP address has been leaked.\nSet to 0 to disable IP garbage collection. [Default: 15m]",
                  "type": "string"
                },
                "reconcilerPeriod": {
                  "description": "ReconcilerPeriod is the period to perform reconciliation with the Calico datastore. [Default: 5m]",
                  "type": "string"
                },
                "syncLabels": {
                  "description": "SyncLabels controls whether to copy Kubernetes node labels to Calico nodes. [Default: Enabled]",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "policy": {
              "description": "Policy enables and configures the policy controller. Enabled by default, set to nil to disable.",
              "properties": {
                "reconcilerPeriod": {
                  "description": "ReconcilerPeriod is the period to perform reconciliation with the Calico datastore. [Default: 5m]",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "serviceAccount": {
              "description": "ServiceAccount enables and configures the service account controller. Enabled by default, set to nil to disable.",
              "properties": {
                "reconcilerPeriod": {
                  "description": "ReconcilerPeriod is the period to perform reconciliation with the Calico datastore. [Default: 5m]",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "workloadEndpoint": {
              "description": "WorkloadEndpoint enables and configures the workload endpoint controller. Enabled by default, set to nil to disable.",
              "properties": {
                "reconcilerPeriod": {
                  "description": "ReconcilerPeriod is the period to perform reconciliation with the Calico datastore. [Default: 5m]",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "debugProfilePort": {
          "description": "DebugProfilePort configures the port to serve memory and cpu profiles on. If not specified, profiling\nis disabled.",
          "format": "int32",
          "type": "integer"
        },
        "etcdV3CompactionPeriod": {
          "description": "EtcdV3CompactionPeriod is the period between etcdv3 compaction requests. Set to 0 to disable. [Default: 10m]",
          "type": "string"
        },
        "healthChecks": {
          "description": "HealthChecks enables or disables support for health checks [Default: Enabled]",
          "type": "string"
        },
        "logSeverityScreen": {
          "description": "LogSeverityScreen is the log severity above which logs are sent to the stdout. [Default: Info]",
          "type": "string"
        },
        "prometheusMetricsPort": {
          "description": "PrometheusMetricsPort is the TCP port that the Prometheus metrics server should bind to. Set to 0 to disable. [Default: 9094]",
          "type": "integer"
        }
      },
      "required": [
        "controllers"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "KubeControllersConfigurationStatus represents the status of the configuration. It's useful for admins to\nbe able to see the actual config that was applied, which can be modified by environment variables on the\nkube-controllers process.",
      "properties": {
        "environmentVars": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "EnvironmentVars contains the environment variables on the kube-controllers that influenced\nthe RunningConfig.",
          "type": "object"
        },
        "runningConfig": {
          "description": "RunningConfig contains the effective config that is running in the kube-controllers pod, after\nmerging the API resource with any environment variables.",
          "properties": {
            "controllers": {
              "description": "Controllers enables and configures individual Kubernetes controllers",
              "properties": {
                "loadBalancer": {
                  "description": "LoadBalancer enables and configures the LoadBalancer controller. Enabled by default, set to nil to disable.",
                  "properties": {
                    "assignIPs": {
                      "default": "AllServices",
                      "description": "AssignIPs controls which LoadBalancer Service gets IP assigned from Calico IPAM.",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "namespace": {
                  "description": "Namespace enables and configures the namespace controller. Enabled by default, set to nil to disable.",
                  "properties": {
                    "reconcilerPeriod": {
                      "description": "ReconcilerPeriod is the period to perform reconciliation with the Calico datastore. [Default: 5m]",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "node": {
                  "description": "Node enables and configures the node controller. Enabled by default, set to nil to disable.",
                  "properties": {
                    "hostEndpoint": {
                      "description": "HostEndpoint controls syncing nodes to host endpoints. Disabled by default, set to nil to disable.",
                      "properties": {
                        "autoCreate": {
                          "description": "AutoCreate enables automatic creation of host endpoints for every node. [Default: Disabled]",
                          "type": "string"
                        },
                        "createDefaultHostEndpoint": {
                          "type": "string"
                        },
                        "templates": {
                          "description": "Templates contains definition for creating AutoHostEndpoints",
                          "items": {
                            "properties": {
                              "generateName": {
                                "description": "GenerateName is appended to the end of the generated AutoHostEndpoint name",
                                "type": "string"
                              },
                              "interfaceCIDRs": {
                                "description": "InterfaceCIDRs contains a list of CIRDs used for matching nodeIPs to the AutoHostEndpoint",
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "labels": {
                                "additionalProperties": {
                                  "type": "string"
                                },
                                "description": "Labels adds the specified labels to the generated AutoHostEndpoint, labels from node with the same name will be overwritten by values from the template label",
                                "type": "object"
                              },
                              "nodeSelector": {
                                "description": "NodeSelector allows the AutoHostEndpoint to be created only for specific nodes",
                                "type": "string"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "type": "array"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "leakGracePeriod": {
                      "description": "LeakGracePeriod is the period used by the controller to determine if an IP address has been leaked.\nSet to 0 to disable IP garbage collection. [Default: 15m]",
                      "type": "string"
                    },
                    "reconcilerPeriod": {
                      "description": "ReconcilerPeriod is the period to perform reconciliation with the Calico datastore. [Default: 5m]",
                      "type": "string"
                    },
                    "syncLabels": {
                      "description": "SyncLabels controls whether to copy Kubernetes node labels to Calico nodes. [Default: Enabled]",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "policy": {
                  "description": "Policy enables and configures the policy controller. Enabled by default, set to nil to disable.",
                  "properties": {
                    "reconcilerPeriod": {
                      "description": "ReconcilerPeriod is the period to perform reconciliation with the Calico datastore. [Default: 5m]",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "serviceAccount": {
                  "description": "ServiceAccount enables and configures the service account controller. Enabled by default, set to nil to disable.",
                  "properties": {
                    "reconcilerPeriod": {
                      "description": "ReconcilerPeriod is the period to perform reconciliation with the Calico datastore. [Default: 5m]",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "workloadEndpoint": {
                  "description": "WorkloadEndpoint enables and configures the workload endpoint controller. Enabled by default, set to nil to disable.",
                  "properties": {
                    "reconcilerPeriod": {
                      "description": "ReconcilerPeriod is the period to perform reconciliation with the Calico datastore. [Default: 5m]",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "debugProfilePort": {
              "description": "DebugProfilePort configures the port to serve memory and cpu profiles on. If not specified, profiling\nis disabled.",
              "format": "int32",
              "type": "integer"
            },
            "etcdV3CompactionPeriod": {
              "description": "EtcdV3CompactionPeriod is the period between etcdv3 compaction requests. Set to 0 to disable. [Default: 10m]",
              "type": "string"
            },
            "healthChecks": {
              "description": "HealthChecks enables or disables support for health checks [Default: Enabled]",
              "type": "string"
            },
            "logSeverityScreen": {
              "description": "LogSeverityScreen is the log severity above which logs are sent to the stdout. [Default: Info]",
              "type": "string"
            },
            "prometheusMetricsPort": {
              "description": "PrometheusMetricsPort is the TCP port that the Prometheus metrics server should bind to. Set to 0 to disable. [Default: 9094]",
              "type": "integer"
            }
          },
          "required": [
            "controllers"
          ],
          "type": "object",
          "additionalProperties": false
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
