This commit is contained in:
2023-07-04 18:59:39 +02:00
parent 813fd96738
commit 8c3e380d16
115 changed files with 4510 additions and 4 deletions

View 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/

View 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).

View File

@ -0,0 +1,2 @@
---
# defaults file for nginx_load_balancer

View File

@ -0,0 +1,2 @@
---
# handlers file for nginx_load_balancer

View 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.

View 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

View 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;
}
}

View File

@ -0,0 +1,2 @@
localhost

View File

@ -0,0 +1,5 @@
---
- hosts: localhost
remote_user: root
roles:
- nginx_load_balancer

View File

@ -0,0 +1,2 @@
---
# vars file for nginx_load_balancer