Configuring Operating System Manager

Configuring Operating System Manager

OSM can be configured using the following command line flags:

FlagsTypeRequiredDefaultDescription
kubeconfigstringfalse""Path to a kubeconfig. Only required if out-of-cluster.
worker-cluster-kubeconfigstringfalse""Path to kubeconfig of cluster where provisioning secrets are created.
namespacestringtrue""The namespace where the OSC controller will run.
container-runtimestringfalsecontainerdContainer runtime to deploy.
external-cloud-providerboolfalsefalseCloud-provider Kubelet flag set to external..
cluster-dnsstringfalse10.10.10.10Comma-separated list of DNS server IP address.
pause-imagestringfalse""Pause image to use in Kubelet.
initial-taintsstringfalse""Taints to use when creating the node.
node-kubelet-feature-gatesstringfalseRotateKubeletServerCertificate=trueFeature gates to set on the kubelet. If user overrides the value, RotateKubeletServerCertificate=true is appended by OSM in the feature gates.
node-http-proxystringfalse""If set, it configures the ‘HTTP_PROXY’ & ‘HTTPS_PROXY’ environment variable on the nodes.
node-no-proxystringfalse.svc,.cluster.local,localhost,127.0.0.1If set, it configures the ‘NO_PROXY’ environment variable on the nodes.
node-insecure-registriesstringfalse""Comma separated list of registries which should be configured as insecure on the container runtime.
node-http-proxystringfalse""If set, it configures the ‘HTTP_PROXY’ & ‘HTTPS_PROXY’ environment variable on the nodes.
node-registry-mirrorsstringfalse""Comma separated list of Docker image mirrors.
node-containerd-registry-mirrorsstringfalse""Configure registry mirrors endpoints. Can be used multiple times to specify multiple mirrors.
node-registry-credentials-secretstringfalse""A Secret object reference, that contains auth info for image registry in namespace/secret-name form, example: kube-system/registry-credentials. See doc at https://github.com/kubermaric/machine-controller/blob/master/docs/registry-authentication.md.
health-probe-addressstringfalse127.0.0.1:8085The address on which the liveness check on /healthz and readiness check on /readyz will be available.
metrics-addressstringfalse127.0.0.1:8080The address on which Prometheus metrics will be available under /metrics.
worker-health-probe-addressstringfalse127.0.0.1:8086For worker manager, the address on which the liveness check on /healthz and readiness check on /readyz will be available.
worker-metrics-addressstringfalse127.0.0.1:8081For worker manager, the address on which Prometheus metrics will be available under /metrics.
leader-electboolfalsetrueEnable leader election for controller manager.
override-bootstrap-kubelet-apiserverstringfalse""Override for the API server address used in worker nodes bootstrap-kubelet.conf.
bootstrap-token-service-account-namestringfalse""When set use the service account token from this SA as bootstrap token instead of creating a temporary one. Passed in namespace/name format.
worker-countintfalse10Number of workers which process reconciliation in parallel.
ca-bundlestringfalse""Path to a file containing all PEM-encoded CA certificates. Will be used for Kubernetes CA certificates.

Configuring Operating System Profile

To generate bootstrapping and provisioning configurations, OSM uses the OSP(template) and values from MachineDeployment and command line flags. These values are substituted dynamically to generate the configurations.

Following is the list of the variables accessible inside an OSP:

VariableTypeDescription
KubeVersionstringKubernetes version to use, picked from the MachineDeployment.
InTreeCCMAvailableboolTrue if in-tree CCM is available for the cloud provider.
ClusterDNSIPs[]stringList of Cluster DNS IP, picked from flags.
KubernetesCACertstringCA certificate for the worker machine. Set at /etc/kubernetes/pki/ca.crt.
CloudConfigstringCloud config for the machine.
ContainerRuntimestringName of the container runtime to use.
CloudProviderNamestringName of the cloud provider.
ExternalCloudProviderboolExternal CCM should be used for the cloud provider.
PauseImagestringImage for the pause container, specified using --pod-infra-container for the kubelet.
InitialTaintsstringRegister the node with the given list of taints.
HTTPProxystringConfiguration for HTTP_PROXY, HTTPS_PROXY
NoProxystringConfiguration for NO_PROXY
ContainerRuntimeConfigstringConfiguration for NO_PROXY
ContainerRuntimeAuthConfigstringConfiguration for NO_PROXY
KubeletFeatureGatesstringFeature gates for kubelet
NetworkIPFamilystringType of Network IP family; IPv4, IPv6 or IPv4+IPv6
NetworkConfigstringStatic networking configuration, picked from the MachineDeployment.
KubeReservedmap[string]stringPicked up from annotations on MachineDeployment.
SystemReservedmap[string]stringPicked up from annotations on MachineDeployment.
EvictionHardmap[string]stringPicked up from annotations on MachineDeployment.
MaxPodsint32Picked up from annotations on MachineDeployment.
ContainerLogMaxSizestringPicked up from annotations on MachineDeployment.
ContainerLogMaxFilesstringPicked up from annotations on MachineDeployment.