Go Report | Travis | CircleCI | Azure Test | Azure Release | License |
---|---|---|---|---|---|
oneinfra
is a Kubernetes as a Service platform. It empowers you to
provide or consume Kubernetes clusters at scale, on any platform or
service provider. You decide.
You can read more about its design here.
Kubernetes version | Deployable with | Default in | ||
---|---|---|---|---|
1.15.11 |
20.04.0-alpha1 |
|||
1.16.8 |
20.04.0-alpha1 |
|||
1.17.4 |
20.04.0-alpha1 |
|||
1.18.0 |
20.04.0-alpha1 |
20.04.0-alpha1 |
||
1.19.0-alpha.1 |
20.04.0-alpha1 |
Build has been tested with go versions 1.13 and 1.14.
$ GO111MODULE=on go get github.com/oneinfra/oneinfra/...@master
This should have installed the following binaries:
-
oi-local-cluster
: allows you to testoneinfra
locally in your machine, creating Docker containers as hypervisors. -
oi
: CLI tool that allows you to testoneinfra
locally in a standalone way, without requiring Kubernetes to store manifests. -
oi-manager
: Kubernetes set of controllers that reconcile defined clusters.
For the quick start you can either leverage Kubernetes as a management cluster, or you can go with the standalone approach if you don't want to use Kubernetes.
You can also read documentation on how to define
clusters
once you have set up oneinfra
.
- Requirements
- A Kubernetes cluster that will be the management cluster
- The management cluster needs to reach the hypervisors you create
- Docker, for creating fake local hypervisors
Install
kind
. If
you already have a Kubernetes cluster you can use, you can skip this
step.
$ kind create cluster
Deploy cert-manager
and oneinfra
.
$ kubectl apply --validate=false -f https://github.com/jetstack/cert-manager/releases/download/v0.14.1/cert-manager.yaml
$ kubectl wait --for=condition=Available deployment --timeout=2m -n cert-manager --all
$ kubectl apply -f https://raw.githubusercontent.com/oneinfra/oneinfra/master/config/generated/all.yaml
Create a local set of fake hypervisors, so oneinfra
can schedule
cluster control plane components somewhere. You can also define your
own set of
hypervisors
if you prefer.
$ oi-local-cluster cluster create --remote | kubectl apply -f -
Now, create a managed cluster:
$ kubectl apply -f https://raw.githubusercontent.com/oneinfra/oneinfra/master/config/samples/simple-cluster.yaml
$ kubectl wait --for=condition=ReconcileSucceeded --timeout=2m cluster simple-cluster
$ kubectl get cluster simple-cluster -o yaml | oi cluster admin-kubeconfig > simple-cluster.conf
And access it:
$ kubectl --kubeconfig=simple-cluster.conf cluster-info
Kubernetes master is running at https://172.17.0.5:30000
- Requirements
- Docker
If you don't want to deploy Kubernetes to test oneinfra
, you can try
the oi
CLI tool that will allow you to test the reconciliation
processes of oneinfra
without the need of a Kubernetes cluster.
$ mkdir ~/.kube
$ oi-local-cluster cluster create | \
oi cluster inject --name simple-cluster | \
oi component inject --name controlplane1 --role control-plane | \
oi component inject --name controlplane2 --role control-plane | \
oi component inject --name controlplane3 --role control-plane | \
oi component inject --name loadbalancer --role control-plane-ingress | \
oi reconcile | \
tee simple-cluster.conf | # so you can inspect the simple-cluster.conf afterwards :-) \
oi cluster admin-kubeconfig > ~/.kube/config
And access it:
$ kubectl cluster-info
Kubernetes master is running at https://172.17.0.4:30000
In this mode it's very important to understand that oi
will read
manifests from stdin
and output them into stdout
, make sure you
keep a file up to date with the latest reconciled resources -- this is
why this model is not suitable for production.
You can read more details about the worker joining process here.
oneinfra
is licensed under the terms of the Apache 2.0 license.
Copyright (C) 2020 Rafael Fernández López <[email protected]>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.