geerlingguy.ansible-role-ku.../README.md

123 lines
4.0 KiB
Markdown
Raw Normal View History

2018-05-09 16:19:11 +02:00
# Ansible Role: Kubernetes
[![Build Status](https://travis-ci.org/geerlingguy/ansible-role-kubernetes.svg?branch=master)](https://travis-ci.org/geerlingguy/ansible-role-kubernetes)
An Ansible Role that installs [Kubernetes](https://kubernetes.io) on Linux.
## Requirements
Requires Docker; recommended role for Docker installation: `geerlingguy.docker`.
## Role Variables
Available variables are listed below, along with default values (see `defaults/main.yml`):
kubernetes_packages:
- name: kubelet
state: present
- name: kubeadm
state: present
- name: kubernetes-cni
state: present
2018-05-10 16:37:53 +02:00
Kubernetes packages to be installed on the server. You can either provide a list of package names, or set `name` and `state` to have more control over whether the package is `present`, `absent`, `latest`, etc.
kubernetes_role: master
Whether the particular server will serve as a Kubernetes `master` (default) or `node`. The master will have `kubeadm init` run on it to intialize the entire K8s control plane, while `node`s will have `kubeadm join` run on them to join them to the `master`.
kubernetes_kubelet_extra_args: ""
kubernetes_kubelet_extra_args_config_file: /etc/default/kubelet
Extra args to pass to `kubelet` during startup. E.g. to allow `kubelet` to start up even if there is swap is enabled on your server, set this to: `"--fail-swap-on=false"`. Or to specify the node-ip advertised by `kubelet`, set this to `"--node-ip={{ ansible_host }}"`.
2018-09-28 05:17:50 +02:00
kubernetes_allow_pods_on_master: true
2018-05-10 16:37:53 +02:00
Whether to remove the taint that denies pods from being deployed to the Kubernetes master. If you have a single-node cluster, this should definitely be `True`. Otherwise, set to `False` if you want a dedicated Kubernetes master which doesn't run any other pods.
2018-09-28 05:17:50 +02:00
kubernetes_enable_web_ui: false
2018-05-10 16:37:53 +02:00
Whether to enable the Kubernetes web dashboard UI (only accessible on the master itself, or proxied).
2018-09-28 05:17:50 +02:00
kuberenetes_debug: false
Whether to show extra debug info in Ansible's logs (e.g. the output of the `kubeadm init` command).
2018-05-10 16:37:53 +02:00
kubernetes_pod_network_cidr: '10.0.1.0/16'
kubernetes_apiserver_advertise_address: ''
kubernetes_version: 'stable-1.11'
2018-05-10 16:37:53 +02:00
kubernetes_ignore_preflight_errors: 'all'
Options passed to `kubeadm init` when initializing the Kubernetes master. The `apiserver_advertise_address` defaults to `ansible_default_ipv4.address` if it's left empty.
2018-05-09 16:19:11 +02:00
kubernetes_apt_release_channel: main
kubernetes_apt_repository: "deb http://apt.kubernetes.io/ kubernetes-xenial {{ kubernetes_apt_release_channel }}"
2018-09-28 05:17:50 +02:00
kubernetes_apt_ignore_key_error: false
2018-05-09 16:19:11 +02:00
2018-05-10 16:37:53 +02:00
Apt repository options for Kubernetes installation.
2018-05-09 23:09:32 +02:00
kubernetes_yum_arch: x86_64
2018-05-10 16:37:53 +02:00
Yum repository options for Kubernetes installation.
2018-05-09 16:19:11 +02:00
kubernetes_flannel_manifest_file_rbac: https://raw.githubusercontent.com/coreos/flannel/master/Documentation/k8s-manifests/kube-flannel-rbac.yml
kubernetes_flannel_manifest_file: https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
Flannel manifest files to apply to the Kubernetes cluster to enable networking. You can copy your own files to your server and apply them instead, if you need to customize the Flannel networking configuration.
2018-05-09 16:19:11 +02:00
## Dependencies
None.
## Example Playbooks
### Single node (master-only) cluster
```yaml
- hosts: all
vars:
kubernetes_allow_pods_on_master: True
roles:
- geerlingguy.docker
- geerlingguy.kubernetes
```
### Two or more nodes (single master) cluster
2018-05-09 16:19:11 +02:00
Master inventory vars:
```yaml
kubernetes_role: "master"
```
Node(s) inventory vars:
```yaml
kubernetes_role: "node"
```
Playbook:
2018-05-10 16:37:53 +02:00
2018-05-09 16:19:11 +02:00
```yaml
- hosts: all
2018-05-10 16:37:53 +02:00
vars:
kubernetes_allow_pods_on_master: True
2018-05-09 16:19:11 +02:00
roles:
- geerlingguy.docker
- geerlingguy.kubernetes
```
Then, log into the Kubernetes master, and run `kubectl get nodes` as root, and you should see a list of all the servers.
2018-05-09 16:19:11 +02:00
## License
MIT / BSD
## Author Information
This role was created in 2018 by [Jeff Geerling](https://www.jeffgeerling.com/), author of [Ansible for DevOps](https://www.ansiblefordevops.com/).