Code Monkey home page Code Monkey logo

kubernetes-diverse's Introduction

naisible · nais · PRs Welcome

Naisable is a collection of ansible playbooks used to build, test and tear down NAIS kubernetes cluster.

Prerequisites

Building and testing an environment

ansible-playbook -i inventory-file setup-playbook.yaml &&\
ansible-playbook -i inventory-file test-playbook.yaml
## Removing NAIS from hosts
ansible-playbook -i inventory-file teardown-playbook.yaml

Playbook details

Setup Playbook

  1. All nodes
    1. Install Webproxy certificate and update truststore
    2. Add Kubernetes RPM repository
    3. Add Docker RPM repository
  2. Master Node
    1. Fetch existing cluster certificates, if they exist
  3. Ansible master node
    1. Create cluster certificates, if not fetched from NAIS master
  4. Master Node
    1. Install and configure ETCD
    2. Copy cluster certificates
    3. Add flannel configuration to ETCD
  5. All nodes
    1. Install and enable Flannel
    2. Install and enable Docker
    3. Install and enable kube-proxy
    4. Configure iptables
  6. Master Node
    1. Install and enable Kubelet
    2. Install and enable kubernets controle plane:
      1. kube-apiserver
      2. kube-scheduler
      3. kube-controller-manager
  7. Worker Nodes
    1. Copy cluster certificates
    2. Install and enable Kubelet
    3. Enable monitoring
  8. Master Node
    1. Install and enable Kubelet
    2. Install and enable Helm
    3. Install and enable addons:
      1. kubernetes-dashboard
      2. core-dns
      3. traefik
      4. heapster
    4. Enable monitoring

Teardown Playbook

Test Playbook

NAIS inventory file

Template for creating a NAIS cluster inventory file.

Each inventory file consist of a hosts section, where the master and worker nodes are defined, and a variables section, where both versions and cluster specific information.

Hosts

[masters]
<K8S-master-hostname>
[workers]
<K8S-worker-hostname-1>
<K8S-worker-hostname-n>

Variables

Version specific variables

Variable name Version Version information location
docker_version 17.03.1.ce https://download.docker.com/linux/centos/7/x86_64/stable/Packages/
cni_version 0.5.1 https://github.com/containernetworking/cni/releases
etcd_version 3.1.8 https://github.com/coreos/etcd/releases/
flannel_version 0.7.1 https://github.com/coreos/flannel/releases
k8s_version 1.6.3 https://github.com/kubernetes/kubernetes/releases
dashboard_version 1.6.1 https://github.com/kubernetes/dashboard/releases
coredns_version latest https://github.com/coredns/coredns/releases
traefik_version 1.3-alpine https://hub.docker.com/r/library/traefik/tags/
helm_version 2.4.2 https://github.com/kubernetes/helm/releases

Cluster specific variables

Variable name Value Information
master_ip 10.181.160.89 Host IP of the master node
cluster_name nais-dev The default domain name in the cluster
service_cidr 10.254.0.0/16 CIDR where all k8s services will recide. Addresses in this CIDR will only exist in iptables on the cluster nodes, but should not overlap with existing network CIDRs, as there might be existing services operating in the same range
kubernetes_default_ip 10.254.0.1 Normally the first address in the service CIDR. This address will be allocated for the "kubernetes.default" service
cluster_dns_ip 10.254.0.53
pod_network_cidr 192.168.0.0/16 CIDR in which all pods will run. This CIDR is not accessible from the outside, but should not overlap with existing networks, as pods might need to communicate with external services operating in the same IP range
domain devillo.no Domain name of your k8s nodes, required to issue certificates
cluster_domain nais.local Domain name inside your cluster
cluster_lb_suffix nais.devillo.no Domain your external services will be exposed

Example inventory file

[masters]
master.domain.com

[workers]
worker1.domain.com
worker2.domain.com

[all:vars]
docker_version=17.03.1.ce
cni_version=0.5.1
etcd_version=3.1.8
flannel_version=0.7.1
k8s_version=1.6.3
dashboard_version=1.6.1
coredns_version=latest
traefik_version=1.3-alpine
helm_version=2.4.2
heapster_version=1.3.0
heapster_influxdb_version=1.1.1
master_ip=10.181.160.89
cluster_name=nais
service_cidr=10.254.0.0/16
kubernetes_default_ip=10.254.0.1
cluster_dns_ip=10.254.0.53
pod_network_cidr=192.168.0.0/16
domain=domain.com
cluster_domain=nais.local
cluster_lb_suffix=nais.domain.com

kubernetes-diverse's People

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.