Update
This commit is contained in:
29
roles/nginx_load_balancer/.travis.yml
Normal file
29
roles/nginx_load_balancer/.travis.yml
Normal file
@ -0,0 +1,29 @@
|
||||
---
|
||||
language: python
|
||||
python: "2.7"
|
||||
|
||||
# Use the new container infrastructure
|
||||
sudo: false
|
||||
|
||||
# Install ansible
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- python-pip
|
||||
|
||||
install:
|
||||
# Install ansible
|
||||
- pip install ansible
|
||||
|
||||
# Check ansible version
|
||||
- ansible --version
|
||||
|
||||
# Create ansible.cfg with correct roles_path
|
||||
- printf '[defaults]\nroles_path=../' >ansible.cfg
|
||||
|
||||
script:
|
||||
# Basic role syntax check
|
||||
- ansible-playbook tests/test.yml -i tests/inventory --syntax-check
|
||||
|
||||
notifications:
|
||||
webhooks: https://galaxy.ansible.com/api/v1/notifications/
|
53
roles/nginx_load_balancer/README.md
Normal file
53
roles/nginx_load_balancer/README.md
Normal file
@ -0,0 +1,53 @@
|
||||
NGINX Load Balancer
|
||||
=========
|
||||
Documentation: https://docs.nginx.com/nginx/admin-guide/load-balancer/tcp-udp-load-balancer/
|
||||
-------------
|
||||
Role to configure nginx load balancer:
|
||||
|
||||
- Install, start, and enable nginx
|
||||
- Create config.d directory
|
||||
- Add extra config directory to main config
|
||||
- Create K8s master/control hosts load balancer config
|
||||
- reload nginx
|
||||
|
||||
Manual Commands to match this playbook
|
||||
-------------
|
||||
These assume you're running sudo.
|
||||
|
||||
Install nginx:
|
||||
- apt-get install nginx
|
||||
|
||||
Start and enable nginx:
|
||||
- systemctl start nginx
|
||||
- systemctl enable nginx
|
||||
|
||||
Create /etc/nginx/tcpconf.d directory:
|
||||
- mkdir /etc/nginx/tcpconf.d
|
||||
|
||||
Add include statement to /etc/nginx/nginx.conf:
|
||||
- echo "include /etc/nginx/tcpconf.d/*" >> /etc/nginx/nginx.conf
|
||||
|
||||
Create /etc/nginx/tcpconf.d/kubernetes.conf:
|
||||
- vi /etc/nginx/tcpconf.d/kubernetes.conf
|
||||
- Take the file from the "templates" file in this role directory named "kubernetes_conf.j2" and paste it into /etc/nginx/tcpconf.d/kubernetes.conf
|
||||
- Hit ESC and type :wq to write and quit the file
|
||||
|
||||
Reload nginx:
|
||||
- nginx -s reload
|
||||
|
||||
Requirements
|
||||
------------
|
||||
|
||||
- A Sudo user on your hosts you wish to apply this to
|
||||
- An internet connection or nginx and required dependencies
|
||||
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
BSD
|
||||
|
||||
Author Information
|
||||
------------------
|
||||
|
||||
An optional section for the role authors to include contact information, or a website (HTML is not allowed).
|
2
roles/nginx_load_balancer/defaults/main.yml
Normal file
2
roles/nginx_load_balancer/defaults/main.yml
Normal file
@ -0,0 +1,2 @@
|
||||
---
|
||||
# defaults file for nginx_load_balancer
|
2
roles/nginx_load_balancer/handlers/main.yml
Normal file
2
roles/nginx_load_balancer/handlers/main.yml
Normal file
@ -0,0 +1,2 @@
|
||||
---
|
||||
# handlers file for nginx_load_balancer
|
53
roles/nginx_load_balancer/meta/main.yml
Normal file
53
roles/nginx_load_balancer/meta/main.yml
Normal file
@ -0,0 +1,53 @@
|
||||
galaxy_info:
|
||||
author: your name
|
||||
description: your role description
|
||||
company: your company (optional)
|
||||
|
||||
# If the issue tracker for your role is not on github, uncomment the
|
||||
# next line and provide a value
|
||||
# issue_tracker_url: http://example.com/issue/tracker
|
||||
|
||||
# Choose a valid license ID from https://spdx.org - some suggested licenses:
|
||||
# - BSD-3-Clause (default)
|
||||
# - MIT
|
||||
# - GPL-2.0-or-later
|
||||
# - GPL-3.0-only
|
||||
# - Apache-2.0
|
||||
# - CC-BY-4.0
|
||||
license: license (GPL-2.0-or-later, MIT, etc)
|
||||
|
||||
min_ansible_version: 2.9
|
||||
|
||||
# If this a Container Enabled role, provide the minimum Ansible Container version.
|
||||
# min_ansible_container_version:
|
||||
|
||||
#
|
||||
# Provide a list of supported platforms, and for each platform a list of versions.
|
||||
# If you don't wish to enumerate all versions for a particular platform, use 'all'.
|
||||
# To view available platforms and versions (or releases), visit:
|
||||
# https://galaxy.ansible.com/api/v1/platforms/
|
||||
#
|
||||
# platforms:
|
||||
# - name: Fedora
|
||||
# versions:
|
||||
# - all
|
||||
# - 25
|
||||
# - name: SomePlatform
|
||||
# versions:
|
||||
# - all
|
||||
# - 1.0
|
||||
# - 7
|
||||
# - 99.99
|
||||
|
||||
galaxy_tags: []
|
||||
# List tags for your role here, one per line. A tag is a keyword that describes
|
||||
# and categorizes the role. Users find roles by searching for tags. Be sure to
|
||||
# remove the '[]' above, if you add tags to this list.
|
||||
#
|
||||
# NOTE: A tag is limited to a single word comprised of alphanumeric characters.
|
||||
# Maximum 20 tags per role.
|
||||
|
||||
dependencies: []
|
||||
# List your role dependencies here, one per line. Be sure to remove the '[]' above,
|
||||
# if you add dependencies to this list.
|
||||
|
69
roles/nginx_load_balancer/tasks/main.yml
Normal file
69
roles/nginx_load_balancer/tasks/main.yml
Normal file
@ -0,0 +1,69 @@
|
||||
---
|
||||
# tasks file for nginx_load_balancer
|
||||
|
||||
# (Recommended) If you have plans to upgrade this single control-plane kubeadm cluster to high
|
||||
# availability you should specify the --control-plane-endpoint to set
|
||||
# the shared endpoint for all control-plane nodes.
|
||||
# Such an endpoint can be either a DNS name or an IP address of a load-balancer
|
||||
|
||||
# Install nginx
|
||||
- name: Install nginx
|
||||
apt:
|
||||
pkg: nginx
|
||||
tags:
|
||||
- nginx
|
||||
|
||||
# Start and Enable nginx
|
||||
- name: Start and Enable nginx
|
||||
service:
|
||||
name: nginx
|
||||
state: started
|
||||
enabled: yes
|
||||
tags:
|
||||
- nginx
|
||||
|
||||
# Create a directory for extra nginx configs. This allows for easy management of configs
|
||||
- name: Create /etc/nginx/tcpconf.d directory
|
||||
file:
|
||||
path: /etc/nginx/tcpconf.d
|
||||
state: directory
|
||||
tags:
|
||||
- nginx
|
||||
|
||||
# Adding this line at the end of the file will ensure nginx loads configs in the tcpconf.d directory on startup
|
||||
- name: Add include statement to /etc/nginx/nginx.conf
|
||||
lineinfile:
|
||||
path: /etc/nginx/nginx.conf
|
||||
line: "include /etc/nginx/tcpconf.d/*;"
|
||||
state: present
|
||||
backup: yes
|
||||
tags:
|
||||
- nginx
|
||||
|
||||
# This config will build an upstream telling the nginx load balancer what servers to load balance
|
||||
- name: Create /etc/nginx/tcpconf.d/kubernetes.conf
|
||||
template:
|
||||
src: kubernetes_conf.j2
|
||||
dest: /etc/nginx/tcpconf.d/kubernetes.conf
|
||||
tags:
|
||||
- nginx
|
||||
|
||||
- name: Reload nginx
|
||||
command: nginx -s reload
|
||||
tags:
|
||||
- nginx
|
||||
|
||||
# Add firewall port for apiserver
|
||||
- name: Add firewall ports
|
||||
firewalld:
|
||||
port: "{{ item.port }}"
|
||||
permanent: yes
|
||||
state: enabled
|
||||
with_items:
|
||||
- { port: 6443/tcp }
|
||||
- { port: 8472/tcp }
|
||||
- { port: 8080/tcp }
|
||||
tags:
|
||||
- firewalld
|
||||
|
||||
|
19
roles/nginx_load_balancer/templates/kubernetes_conf.j2
Normal file
19
roles/nginx_load_balancer/templates/kubernetes_conf.j2
Normal file
@ -0,0 +1,19 @@
|
||||
# Define an upstream using the master nodes as the upstream nodes
|
||||
# Stream defines a top level stream block
|
||||
# Define each server and the port that server listens on for traffic
|
||||
# "upstream kubernetes" defines a server group
|
||||
# "proxy_pass" refers to the the "upstream <server group>", in this case "upstream kubernetes"
|
||||
# I have commented out master02, as I do not have that in my cluster yet
|
||||
|
||||
stream {
|
||||
upstream kubernetes {
|
||||
server 192.168.50.240:6443;
|
||||
#server master02:6443;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 6443;
|
||||
listen 443;
|
||||
proxy_pass kubernetes;
|
||||
}
|
||||
}
|
2
roles/nginx_load_balancer/tests/inventory
Normal file
2
roles/nginx_load_balancer/tests/inventory
Normal file
@ -0,0 +1,2 @@
|
||||
localhost
|
||||
|
5
roles/nginx_load_balancer/tests/test.yml
Normal file
5
roles/nginx_load_balancer/tests/test.yml
Normal file
@ -0,0 +1,5 @@
|
||||
---
|
||||
- hosts: localhost
|
||||
remote_user: root
|
||||
roles:
|
||||
- nginx_load_balancer
|
2
roles/nginx_load_balancer/vars/main.yml
Normal file
2
roles/nginx_load_balancer/vars/main.yml
Normal file
@ -0,0 +1,2 @@
|
||||
---
|
||||
# vars file for nginx_load_balancer
|
Reference in New Issue
Block a user