| title | Lokomotive component |
|---|---|
| weight | 10 |
A Lokomotive component is a Kubernetes workload which adds functionality to a Lokomotive cluster. Without components, a Lokomotive cluster is just a barebone Kubernetes cluster. In some cases (e.g. bare metal environments), a Lokomotive cluster may even be unusable without certain components. Components take care of tasks such as load balancing, monitoring, authentication, storage and others.
lokoctl is a command line interface for Lokomotive and its components.
Lokomotive provides the Dex and Gangway components for user authentication via OpenID Connect (OIDC). With these components, you can securely manage access to the Kubernetes cluster and resources.
Lokomotive also provides the cert-manager component for automating the management and issuance of TLS certificates from various issuing sources.
Lokomotive provides a prometheus-operator component that creates, configures and manages Prometheus atop Kubernetes.
Lokomotive also provides a metrics-server component responsible for collecting resource metrics from nodes and pods and exposing them in the Kubernetes API server through the metrics API.
Lokomotive provides the openebs-operator and openebs-storage-class components to use OpenEBS as the block storage solution for the cluster.
Lokomotive also provides the rook and rook-ceph components for using Rook as the storage solution for Lokomotive cluster.
Lokomotive provides the MetalLB component for load balancing in platforms without network load-balancers and Contour component for Ingress control.
Lokomotive also provides the external-dns component for automatic management of DNS entries for Ingress resources.
Lokomotive provides the cluster-autoscaler component for adjusting the size of Lokomotive cluster.
Lokomotive provides the flatcar-linux-update-operator component for orchestrating updates of the Flatcar Container Linux OS on cluster nodes.
To list available Lokomotive components, run the following command:
lokoctl component list
Sample output:
Available components:
aws-ebs-csi-driver
cert-manager
cluster-autoscaler
contour
dex
experimental-istio-operator
experimental-linkerd
external-dns
flatcar-linux-update-operator
gangway
web-ui
httpbin
inspektor-gadget
metallb
metrics-server
node-problem-detector
openebs-operator
openebs-storage-class
prometheus-operator
rook
rook-ceph
velero
To install a Lokomotive component add it to a .lokocfg file:
component "flatcar-linux-update-operator" {}
component "contour" {}Then you can apply a particular component:
lokoctl component apply <component_name>If this command is executed in the directory containing cluster configuration,
lokoctlwill try to install the component on configured cluster. If no configuration is found, the configuration fromKUBECONFIGenvironment variable will be used. If the environment variable is empty,~/.kube/configfile will be used.
To use specific
kubeconfigfile,--kubeconfigflag can be used.
You can pass configuration parameters to components, check the component reference documentation for details.
To install all the components listed in a .lokocfg file, omit the component name:
lokoctl component applyNOTE:
lokoctlautomatically detects all.lokocfgfiles in the working directory. This can be used to organize component configuration in separate files.
Installing a Lokomotive component is the same operation as applying its latest configuration, so if
you change the configuration in a .lokocfg file you can run apply again to apply the new
configuration to the cluster.
Sometimes it can be useful to render a component's manifests without actually applying them to a cluster, for example in order to verify what is going to be applied to a cluster. To render a component's manifests, run the following command:
lokoctl component render-manifest <component_name>Alternatively, omit the component name to render the manifests for all the components listed in
.lokocfg files (while templating them with any specified configuration parameters).