title: ungleich production cluster #1 --- pub_date: 2021-07-05 --- author: ungleich --- twitter_handle: ungleich --- _hidden: no --- _discoverable: no --- abstract: In this blog article we describe our way to our first production kubernetes cluster. --- body: ## Introduction This article is WIP to describe all steps required for our first production kubernetes cluster and the services that we run in it. ## Setup ### Bootstrapping * All nodes are running [Alpine Linux](https://alpinelinux.org) * All nodes are configured using [cdist](https://cdi.st) * Mainly installing kubeadm, kubectl, crio *and* docker * At the moment we try to use crio * The cluster is initalised using **kubeadm init --config k8s/c2/kubeadm.yaml** from the [ungleich-k8s repo](https://code.ungleich.ch/ungleich-public/ungleich-k8s) ### CNI/Networking * Calico is installed using **kubectl apply -f cni-calico/calico.yaml** from the [ungleich-k8s repo](https://code.ungleich.ch/ungleich-public/ungleich-k8s) * Installing calicoctl using **kubectl apply -f https://docs.projectcalico.org/manifests/calicoctl.yaml** * Aliasing calicoctl: **alias calicoctl="kubectl exec -i -n kube-system calicoctl -- /calicoctl"** * All nodes BGP peer with our infrastructure using **calicoctl create -f - < cni-calico/bgp-c2.yaml** ### Persistent Volume Claim support * Provided by rook * Using customized manifests to support IPv6 from ungleich-k8s ``` for yaml in crds common operator cluster storageclass-cephfs storageclass-rbd toolbox; do kubectl apply -f ${yaml}.yaml done ``` ### Flux Starting with the 2nd cluster? ## Follow up If you are interesting in continuing the discussion, we are there for you in **the #kubernetes:ungleich.ch Matrix channel** [you can signup here if you don't have an account](https://chat.with.ungleich.ch). Or if you are interested in an IPv6 only kubernetes cluster, drop a mail to **support**-at-**ungleich.ch**.