diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..6c15032 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 Jonas Juselius, Serit IT Partner Tromsø + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index 2b32256..cc4953c 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,28 @@ -# Kubernetes NixOps cluster setup +# NixOps Kubernetes clusters +This repository contains a batteries included, production ready, opinionated +Kubernetes cluster setup. It only requires editing two simple configuration +files to deploy a fully functional cluster using NixOps. + +Together, NixOS and Kubernetes is a powerful combination. NixOS enables +programmatic configuration of the base Kubernetes system services at the OS +level. Just enabling the basic service is still a long way from having a +production ready, multi node Kubernetes cluster up and running. Setting up a +cluster at the OS level gives you a functional system shell, lacking most of the +services needed for actually deploying, accessing and monitoring services. + +This project will do to things: It will configure the cluster at the OS level, +setting up services, networking, certificates, access tokens etc. It will then +bootstrap the running Kubernetes instance, fixing permissions and configuring +the following services: + +* Helm for deploying services +* Nginx-ingress for external access +* cert-manager with issuers (Let's encrypt, cluster-ca and self-sign) +* nfs-client-provisioner for automatic volume management +* kubernetes-dashboard for managing the cluster and services +* metrics-server for monitoring +* Prometheus, node exporters and grafana for monitoring ## Prerequisites @@ -25,3 +48,7 @@ vi default.nix # add nodes and ip:s, etc. ../../bin/deploy.sh cluster-1 ``` +## TODO + +* Self-provisioning NixOs iso image +* Terraform setup for provisioning a cluster