kubermatic

module
v2.14.13+incompatible Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 2, 2021 License: Apache-2.0

README

Kubermatic Kubernetes Platform

Overview / User Guides

Kubermatic Kubernetes Platform is in an open source project to centrally manage the global automation of thousands of Kubernetes clusters across multicloud, on-prem and edge with unparalleled density and resilience.

All user documentation is available at the Kubermatic Kubernetes Platform docs website.

Editions

There are two editions of Kubermatic Kubernetes Platform:

Kubermatic Kubernetes Platform Community Edition (CE) is available freely under the Apache License, Version 2.0. Kubermatic Kubernetes Platform Enterprise Edition (EE) includes premium features that are most useful for organizations with large-scale Kubernetes installations with more than 50 clusters. To access the Enterprise Edition and get official support please become a subscriber.

Licensing

See the LICENSE file for licensing information as it pertains to files in this repository.

Installation

We strongly recommend that you use an official release of Kubermatic Kubernetes Platform. Follow the instructions under the Installation section of our documentation to get started.

The code and sample YAML files in the master branch of the kubermatic repository are under active development and are not guaranteed to be stable. Use them at your own risk!

More information

The documentation provides a getting started guide, plus information about building from source, architecture, extending kubermatic, and more.

Please use the version selector at the top of the site to ensure you are using the appropriate documentation for your version of kubermatic.

Troubleshooting

If you encounter issues file an issue or talk to us on the #kubermatic channel on the Kubermatic Slack.

Contributing

Thanks for taking the time to join our community and start contributing!

Feedback and discussion are available on the mailing list.

Before you start
Repository layout
├── addons            # Default Kubernetes addons
├── api 							# All the code. If you are a dev, you can initially ignore everything else
├── CHANGELOG.md      # The changelog
├── config            # The Helm charts we use to deploy, gets exported to https://github.com/kubermatic/kubermatic-installer
├── containers        # Various utility container images
├── docs              # Some basic docs
├── openshift_addons  # Default Openshift addons
├── OWNERS
├── OWNERS_ALIASES
├── Procfile
└── README.md 
Pull requests
  • We welcome pull requests. Feel free to dig through the issues and jump in.

Changelog

See the list of releases to find out about feature changes.

Directories

Path Synopsis
api
cmd/kubermatic-api
Package classification Kubermatic API.
Package classification Kubermatic API.
pkg/controller
Package controller contains all our controllers.
Package controller contains all our controllers.
pkg/controller/kubeletdnat
Package kubeletdnat contains the kubeletdnat controller which: * Is needed for all controlplane components running in the seed that need to reach nodes * Is not needed if reaching the pods is sufficient * Must be used in conjunction with the openvpn client * Creates NAT rules for both the public and private node IP that tunnels access to them via the VPN * Its counterpart runs within the openvpn client pod in the usercluster, is part of the openvpn addon and written in bash
Package kubeletdnat contains the kubeletdnat controller which: * Is needed for all controlplane components running in the seed that need to reach nodes * Is not needed if reaching the pods is sufficient * Must be used in conjunction with the openvpn client * Creates NAT rules for both the public and private node IP that tunnels access to them via the VPN * Its counterpart runs within the openvpn client pod in the usercluster, is part of the openvpn addon and written in bash
pkg/controller/master-controller-manager
Package mastercontrollermanager contains all controllers that run within the master-controller-manager binary.
Package mastercontrollermanager contains all controllers that run within the master-controller-manager binary.
pkg/controller/master-controller-manager/project-label-synchronizer
Package projectlabelsynchronizer contains a controller that synchronizes labels from a project onto all the clusters that belong to the project, without allowing them to be overridden.
Package projectlabelsynchronizer contains a controller that synchronizes labels from a project onto all the clusters that belong to the project, without allowing them to be overridden.
pkg/controller/master-controller-manager/rbac
Package rbac contains a controller that is responsible for setting up RBAC to allow users to access the clusters they should be able to access.
Package rbac contains a controller that is responsible for setting up RBAC to allow users to access the clusters they should be able to access.
pkg/controller/master-controller-manager/seed-proxy
Package seedproxy contains a controller that is responsible for creating various resources in the master cluster to be able to access the other seeds clusters prometheus, leveraring `kubectl proxy` under the hood.
Package seedproxy contains a controller that is responsible for creating various resources in the master cluster to be able to access the other seeds clusters prometheus, leveraring `kubectl proxy` under the hood.
pkg/controller/master-controller-manager/seed-sync
Package seedsync contains a controller that is responsible for synchronizing the `Seed` custom resources onto the corresponding seed clusters, so that the seed-controller-manager can use them.
Package seedsync contains a controller that is responsible for synchronizing the `Seed` custom resources onto the corresponding seed clusters, so that the seed-controller-manager can use them.
pkg/controller/master-controller-manager/usersshkeyssynchronizer
The usersshkeyssynchronizer controller is responsible for synchronizing usersshkeys into a secret in the cluster namespace.
The usersshkeyssynchronizer controller is responsible for synchronizing usersshkeys into a secret in the cluster namespace.
pkg/controller/operator
Package operator contains all controllers that run within the kubermatic operator binary.
Package operator contains all controllers that run within the kubermatic operator binary.
pkg/controller/operator/seed/resources/nodeportproxy
Package nodeportproxy is responsible for reconciling a seed-cluster-wide proxy based on Envoy and a custom envoy-manager/lb-updater tools.
Package nodeportproxy is responsible for reconciling a seed-cluster-wide proxy based on Envoy and a custom envoy-manager/lb-updater tools.
pkg/controller/seed-controller-manager
Package seedcontrollermanager contains a package for each controller that runs within the seed controller manager binary.
Package seedcontrollermanager contains a package for each controller that runs within the seed controller manager binary.
pkg/controller/seed-controller-manager/addon
Package addon contains a controller that applies addons based on a Addon CRD.
Package addon contains a controller that applies addons based on a Addon CRD.
pkg/controller/seed-controller-manager/addoninstaller
Package addoninstaller contains a controller that is responsible for making sure a set of addons that are configured via a flag on the controller-manager and are required for basic cluster functionality exist for all clusters.
Package addoninstaller contains a controller that is responsible for making sure a set of addons that are configured via a flag on the controller-manager and are required for basic cluster functionality exist for all clusters.
pkg/controller/seed-controller-manager/backup
Package backup contains a controller that is responsible for creating backup-related resources.
Package backup contains a controller that is responsible for creating backup-related resources.
pkg/controller/seed-controller-manager/cloud
Package cloud contains a controller that is responsible for creating cluster-level resources at the cloud provider, like networks, subnets or security groups.
Package cloud contains a controller that is responsible for creating cluster-level resources at the cloud provider, like networks, subnets or security groups.
pkg/controller/seed-controller-manager/clustercomponentdefaulter
Package clustercomponentdefaulter contains a controller that is responsible for applying some defaults for various controlplane components, but never overwrites them to make out-of-tree customization is still possible.
Package clustercomponentdefaulter contains a controller that is responsible for applying some defaults for various controlplane components, but never overwrites them to make out-of-tree customization is still possible.
pkg/controller/seed-controller-manager/kubernetes
Package kubernetes contains a controller that reconciles all controlplane components in the seed needed for Kubernetes clusters.
Package kubernetes contains a controller that reconciles all controlplane components in the seed needed for Kubernetes clusters.
pkg/controller/seed-controller-manager/monitoring
Package monitoring contains a controller that reconciles all monitoring-related components for all cluster types in the seed.
Package monitoring contains a controller that reconciles all monitoring-related components for all cluster types in the seed.
pkg/controller/seed-controller-manager/openshift
Package openshift contains a controller that reconciles all controlplane components in the seed needed for Openshift clusters.
Package openshift contains a controller that reconciles all controlplane components in the seed needed for Openshift clusters.
pkg/controller/seed-controller-manager/rancher
Package rancher contains a controller responsible for reconciling all rancher-related resources in the seed for Kubernetes clusters, as Rancher doesn't support openshift.
Package rancher contains a controller responsible for reconciling all rancher-related resources in the seed for Kubernetes clusters, as Rancher doesn't support openshift.
pkg/controller/seed-controller-manager/seedresourcesuptodatecondition
Package seedresourcesuptodatecondition contains a controller that is responsible for: * Setting a condition on the cluster object when all Deployments and Statefulsets were fully rolled out * This condition serves the purpose of limiting the load imposed on the seed * All controllers that create Deployments or Statefulsets in the seed must respect it via `controllerutil.ClusterAvailableForReconciling`
Package seedresourcesuptodatecondition contains a controller that is responsible for: * Setting a condition on the cluster object when all Deployments and Statefulsets were fully rolled out * This condition serves the purpose of limiting the load imposed on the seed * All controllers that create Deployments or Statefulsets in the seed must respect it via `controllerutil.ClusterAvailableForReconciling`
pkg/controller/seed-controller-manager/update
Package update contains a controller that auto applies updates to both the cluster version and the machine version based on a configuration file.
Package update contains a controller that auto applies updates to both the cluster version and the machine version based on a configuration file.
pkg/controller/shared
Package shared contains all controllers that are imported by more than one controller-manager
Package shared contains all controllers that are imported by more than one controller-manager
pkg/controller/user-cluster-controller-manager
Package userclustercontrollermanager contains all controllers running in the usercluster controller manager binary.
Package userclustercontrollermanager contains all controllers running in the usercluster controller manager binary.
pkg/controller/user-cluster-controller-manager/cluster-role-labeler
Package clusterrolelabeler contains a controller that is responsible for ensuring that the viewer, editor and admin clusterroles have a `component: userClusterRole` label associated.
Package clusterrolelabeler contains a controller that is responsible for ensuring that the viewer, editor and admin clusterroles have a `component: userClusterRole` label associated.
pkg/controller/user-cluster-controller-manager/container-linux
Package containerlinux contains the containerlinux controller that is responsible for deploying the [Container Linux Update Operator](https://github.com/coreos/container-linux-update-operator) operator and DaemonSet
Package containerlinux contains the containerlinux controller that is responsible for deploying the [Container Linux Update Operator](https://github.com/coreos/container-linux-update-operator) operator and DaemonSet
pkg/controller/user-cluster-controller-manager/ipam
Package ipam contains a controller responsible for assigning IP addresses from a configured pool to machines that have an annotation keyed `machine-controller.kubermatic.io/initializers` which contains the value ipam.
Package ipam contains a controller responsible for assigning IP addresses from a configured pool to machines that have an annotation keyed `machine-controller.kubermatic.io/initializers` which contains the value ipam.
pkg/controller/user-cluster-controller-manager/node-labeler
Package nodelabeler contains a controller that ensures Nodes have various labels present at all times: * A `x-kubernetes.io/distribution` label with a value of `centos`, `ubuntu`, `container-linux`, `rhel` or `sles` * A set of labels configured on the controller via a flag that are inherited from the cluster object
Package nodelabeler contains a controller that ensures Nodes have various labels present at all times: * A `x-kubernetes.io/distribution` label with a value of `centos`, `ubuntu`, `container-linux`, `rhel` or `sles` * A set of labels configured on the controller via a flag that are inherited from the cluster object
pkg/controller/user-cluster-controller-manager/nodecsrapprover
Package nodecsrapprover contains a controller responsible for autoapproving CSRs created by nodes for serving certificates.
Package nodecsrapprover contains a controller responsible for autoapproving CSRs created by nodes for serving certificates.
pkg/controller/user-cluster-controller-manager/openshift-master-node-labeler
Package openshiftmasternodelabeler contains a controller that makes sure there is always one randomly selected nodes with a `node-role.kubernetes.io/master` label on it.
Package openshiftmasternodelabeler contains a controller that makes sure there is always one randomly selected nodes with a `node-role.kubernetes.io/master` label on it.
pkg/controller/user-cluster-controller-manager/openshift-seed-syncer
The openshiftseedsyncer controller is responsible for syncing resources from Openshift userclusters into the seed cluster namespace.
The openshiftseedsyncer controller is responsible for syncing resources from Openshift userclusters into the seed cluster namespace.
pkg/controller/user-cluster-controller-manager/owner-binding-creator
The ownerbindingcreator controller is responsible for making sure that the binding exists and if it doesn't, will create it and use the cluster owner as subject.
The ownerbindingcreator controller is responsible for making sure that the binding exists and if it doesn't, will create it and use the cluster owner as subject.
pkg/controller/user-cluster-controller-manager/resources
Package resources contains the resources controller responsible for making sure the various Kubernetes resources we need in the usercluster like RBAC, Deployments, ServiceAccounts and much more are present.
Package resources contains the resources controller responsible for making sure the various Kubernetes resources we need in the usercluster like RBAC, Deployments, ServiceAccounts and much more are present.
pkg/controller/user-cluster-controller-manager/role-cloner
Package rolecloner contains a controller that duplicates all roles with the `component=userClusterRole` label that are in the kube-system namespace into all other namespaces.
Package rolecloner contains a controller that duplicates all roles with the `component=userClusterRole` label that are in the kube-system namespace into all other namespaces.
pkg/controller/usersshkeysagent
Package usersshkeysagent contains the usersshkeysagent controller, which is deployed as a DaemonSet on all usercluster nodes and responsible for synchronizing the `$HOME/.ssh/authorized_keys` file for all users we know about (root, core, ubuntu, centos) and that exist with the content of a secret.
Package usersshkeysagent contains the usersshkeysagent controller, which is deployed as a DaemonSet on all usercluster nodes and responsible for synchronizing the `$HOME/.ssh/authorized_keys` file for all users we know about (root, core, ubuntu, centos) and that exist with the content of a secret.
pkg/controller/util
Package util contains helpers for building controllers.
Package util contains helpers for building controllers.
pkg/crd/client/clientset/versioned
This package has the automatically generated clientset.
This package has the automatically generated clientset.
pkg/crd/client/clientset/versioned/fake
This package has the automatically generated fake clientset.
This package has the automatically generated fake clientset.
pkg/crd/client/clientset/versioned/scheme
This package contains the scheme of the automatically generated clientset.
This package contains the scheme of the automatically generated clientset.
pkg/crd/client/clientset/versioned/typed/kubermatic/v1
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
pkg/crd/client/clientset/versioned/typed/kubermatic/v1/fake
Package fake has the automatically generated clients.
Package fake has the automatically generated clients.
pkg/crd/kubermatic/v1
+groupName=kubermatic.k8s.io
+groupName=kubermatic.k8s.io
pkg/crd/operator/v1alpha1
+groupName=operator.kubermatic.io
+groupName=operator.kubermatic.io
pkg/provider
Package provider contains abstract cloud provider types and interfaces.
Package provider contains abstract cloud provider types and interfaces.
pkg/resources/certificates/triple
Package triple generates key-certificate pairs for the triple (CA, Server, Client).
Package triple generates key-certificate pairs for the triple (CA, Server, Client).
pkg/resources/reconciling
This file is generated.
This file is generated.
pkg/test/e2e/api/utils
TODO(2.13): Package utils is deprecated and only used for upgrade tests from pre 2.13 releases.
TODO(2.13): Package utils is deprecated and only used for upgrade tests from pre 2.13 releases.
pkg/test/e2e/api/utils/oidc-proxy-client
DISCLAIMER: this code is based on https://github.com/dexidp/dex/tree/master/cmd/example-app
DISCLAIMER: this code is based on https://github.com/dexidp/dex/tree/master/cmd/example-app

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL