docker -> k8s
parent
06bfaebf5e
commit
96723d3ffb
|
@ -1,19 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Assumes pew-net exists
|
|
||||||
# Make config dir (as non-root) before launching
|
|
||||||
|
|
||||||
docker run \
|
|
||||||
--name airsonic \
|
|
||||||
--detach \
|
|
||||||
--restart unless-stopped \
|
|
||||||
--env PUID=1000 \
|
|
||||||
--env PGID=1000 \
|
|
||||||
--env TZ=US/Eastern \
|
|
||||||
--volume $PWD/airsonic-config:/config \
|
|
||||||
--volume /bigdata/media/music:/media/music:ro \
|
|
||||||
--volume /bigdata/media/playlists:/media/playlists:rw \
|
|
||||||
--volume /bigdata/media/podcasts:/media/podcasts:rw \
|
|
||||||
--volume /media-vtluug:/media/media-vtluug:ro \
|
|
||||||
--network pew-net \
|
|
||||||
linuxserver/airsonic:v10.6.1-ls59
|
|
|
@ -1,15 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Make data dir (as non-root) before launching
|
|
||||||
|
|
||||||
docker run \
|
|
||||||
--name minecraft \
|
|
||||||
--detach \
|
|
||||||
--restart unless-stopped \
|
|
||||||
--env EULA=TRUE \
|
|
||||||
--env MAX_MEMORY=8G \
|
|
||||||
--env VERSION=1.15.2 \
|
|
||||||
--volume $PWD/minecraft-data:/data \
|
|
||||||
--publish 10.42.0.203:25565:25565 \
|
|
||||||
--publish [2601:5c0:c100:6e65:96c6:91ff:feab:69e3]:25565:25565 \
|
|
||||||
itzg/minecraft-server:latest
|
|
|
@ -1,62 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Assumes pew-net exists
|
|
||||||
# Assumes mounted dirs are created as non-root user
|
|
||||||
# Prometheus + Node Exporter + cAdvisor + Grafana
|
|
||||||
|
|
||||||
docker network create pew-monitoring-net
|
|
||||||
|
|
||||||
# grafana-cli plugins install grafana-piechart-panel
|
|
||||||
sudo chown 472:472 $PWD/grafana/{grafana-data,provisioning} \
|
|
||||||
&& \
|
|
||||||
docker run \
|
|
||||||
--name monitoring_grafana \
|
|
||||||
--detach \
|
|
||||||
--restart unless-stopped \
|
|
||||||
--env GF_SERVER_DOMAIN="seaturtle.pw" \
|
|
||||||
--env GF_SERVER_ROOT_URL="%(protocol)s://%(domain)s/grafana/" \
|
|
||||||
--user 472 \
|
|
||||||
--volume $PWD/grafana/grafana-data:/var/lib/grafana:rw \
|
|
||||||
--volume $PWD/grafana/provisioning:/etc/grafana/provisioning:rw \
|
|
||||||
--network pew-monitoring-net \
|
|
||||||
grafana/grafana:6.7.3 \
|
|
||||||
&& \
|
|
||||||
docker network connect pew-net monitoring_grafana
|
|
||||||
|
|
||||||
sudo chown nobody:nogroup $PWD/prometheus/prometheus-data \
|
|
||||||
&& \
|
|
||||||
docker run \
|
|
||||||
--name monitoring_prometheus \
|
|
||||||
--detach \
|
|
||||||
--restart unless-stopped \
|
|
||||||
--volume $PWD/prometheus/prometheus-data:/prometheus:rw \
|
|
||||||
--volume $PWD/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro \
|
|
||||||
--volume $PWD/prometheus/alert.rules:/etc/prometheus/alert.rules:ro \
|
|
||||||
--network pew-monitoring-net \
|
|
||||||
prom/prometheus:v2.17.2 --config.file=/etc/prometheus/prometheus.yml \
|
|
||||||
--storage.tsdb.path=/prometheus \
|
|
||||||
--storage.tsdb.retention.size=200GB
|
|
||||||
|
|
||||||
docker run \
|
|
||||||
--name monitoring_node-exporter \
|
|
||||||
--detach \
|
|
||||||
--restart unless-stopped \
|
|
||||||
--cap-add SYS_TIME \
|
|
||||||
--pid host \
|
|
||||||
--volume /:/host:ro,rslave \
|
|
||||||
--network pew-monitoring-net \
|
|
||||||
quay.io/prometheus/node-exporter:v0.18.1 --path.rootfs=/host
|
|
||||||
|
|
||||||
docker run \
|
|
||||||
--name monitoring_cadvisor \
|
|
||||||
--detach \
|
|
||||||
--restart unless-stopped \
|
|
||||||
--volume /:/rootfs:ro \
|
|
||||||
--volume /var/run:/var/run:ro \
|
|
||||||
--volume /sys:/sys:ro \
|
|
||||||
--volume /var/lib/docker:/var/lib/docker:ro \
|
|
||||||
--volume /dev/disk:/dev/disk:ro \
|
|
||||||
--network pew-monitoring-net \
|
|
||||||
google/cadvisor:v0.33.0
|
|
||||||
|
|
||||||
# alert manager
|
|
|
@ -1,24 +0,0 @@
|
||||||
global:
|
|
||||||
scrape_interval: 15s
|
|
||||||
evaluation_interval: 15s
|
|
||||||
|
|
||||||
scrape_configs:
|
|
||||||
- job_name: prometheus
|
|
||||||
static_configs:
|
|
||||||
- targets: ['monitoring_prometheus:9090']
|
|
||||||
|
|
||||||
- job_name: cadvisor
|
|
||||||
static_configs:
|
|
||||||
- targets: ['monitoring_cadvisor:8080']
|
|
||||||
|
|
||||||
- job_name: node-exporter
|
|
||||||
static_configs:
|
|
||||||
- targets: ['monitoring_node-exporter:9100']
|
|
||||||
|
|
||||||
#alerting:
|
|
||||||
# alertmanagers:
|
|
||||||
# - static_configs:
|
|
||||||
# - targets: ['alertmanager:9093']
|
|
||||||
#
|
|
||||||
#rule_files:
|
|
||||||
#- 'alert.rules'
|
|
|
@ -1 +0,0 @@
|
||||||
Mostly stolen from https://github.com/vtluug/docker-manifests/tree/master/sczi/nginx
|
|
|
@ -1,25 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Assumes pew-net exists
|
|
||||||
|
|
||||||
docker run \
|
|
||||||
--name nginx \
|
|
||||||
--detach \
|
|
||||||
--restart unless-stopped \
|
|
||||||
--env PUID=1000 \
|
|
||||||
--env PGID=1000 \
|
|
||||||
--env EMAIL=sysadmin@seaturtle.pw \
|
|
||||||
--env URL=seaturtle.pw \
|
|
||||||
--env SUBDOMAINS=airsonic,plex,www \
|
|
||||||
--env VALIDATION=html \
|
|
||||||
--env TZ=US/Eastern \
|
|
||||||
--volume $PWD/nginx-config:/config:rw \
|
|
||||||
--volume $PWD/nginx.conf:/config/nginx/nginx.conf:ro \
|
|
||||||
--volume $PWD/site-confs:/config/nginx/site-confs:ro \
|
|
||||||
--volume /bigdata/files:/files-docker:ro \
|
|
||||||
--publish 10.42.0.203:80:80 \
|
|
||||||
--publish 10.42.0.203:443:443 \
|
|
||||||
--publish [2601:5c0:c100:6e65:96c6:91ff:feab:69e3]:80:80 \
|
|
||||||
--publish [2601:5c0:c100:6e65:96c6:91ff:feab:69e3]:443:443 \
|
|
||||||
--network pew-net \
|
|
||||||
linuxserver/letsencrypt:1.3.0-ls110
|
|
|
@ -1,63 +0,0 @@
|
||||||
## Version 2018/04/07 - Changelog: https://github.com/linuxserver/docker-letsencrypt/commits/master/root/defaults/nginx.conf
|
|
||||||
|
|
||||||
user abc;
|
|
||||||
worker_processes 4;
|
|
||||||
pid /run/nginx.pid;
|
|
||||||
include /etc/nginx/modules/*.conf;
|
|
||||||
|
|
||||||
events {
|
|
||||||
worker_connections 768;
|
|
||||||
# multi_accept on;
|
|
||||||
}
|
|
||||||
|
|
||||||
http {
|
|
||||||
|
|
||||||
##
|
|
||||||
# Basic Settings
|
|
||||||
##
|
|
||||||
|
|
||||||
sendfile on;
|
|
||||||
tcp_nopush on;
|
|
||||||
tcp_nodelay on;
|
|
||||||
keepalive_timeout 65;
|
|
||||||
types_hash_max_size 2048;
|
|
||||||
# server_tokens off;
|
|
||||||
|
|
||||||
# server_names_hash_bucket_size 64;
|
|
||||||
# server_name_in_redirect off;
|
|
||||||
|
|
||||||
client_max_body_size 0;
|
|
||||||
|
|
||||||
include /etc/nginx/mime.types;
|
|
||||||
default_type application/octet-stream;
|
|
||||||
|
|
||||||
##
|
|
||||||
# Logging Settings
|
|
||||||
##
|
|
||||||
|
|
||||||
access_log /config/log/nginx/access.log;
|
|
||||||
error_log /config/log/nginx/error.log;
|
|
||||||
|
|
||||||
##
|
|
||||||
# Gzip Settings
|
|
||||||
##
|
|
||||||
|
|
||||||
gzip on;
|
|
||||||
gzip_disable "msie6";
|
|
||||||
|
|
||||||
# gzip_vary on;
|
|
||||||
# gzip_proxied any;
|
|
||||||
# gzip_comp_level 6;
|
|
||||||
# gzip_buffers 16 8k;
|
|
||||||
# gzip_http_version 1.1;
|
|
||||||
# gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
|
|
||||||
|
|
||||||
##
|
|
||||||
# Virtual Host Configs
|
|
||||||
##
|
|
||||||
include /etc/nginx/conf.d/*.conf;
|
|
||||||
include /config/nginx/site-confs/default;
|
|
||||||
include /config/nginx/site-confs/*.enabled;
|
|
||||||
}
|
|
||||||
|
|
||||||
daemon off;
|
|
|
@ -1,29 +0,0 @@
|
||||||
server {
|
|
||||||
listen 80;
|
|
||||||
listen [::]:80;
|
|
||||||
server_name airsonic.seaturtle.pw;
|
|
||||||
|
|
||||||
return 301 https://airsonic.seaturtle.pw$request_uri;
|
|
||||||
}
|
|
||||||
|
|
||||||
server {
|
|
||||||
listen 443 ssl;
|
|
||||||
listen [::]:443 ssl;
|
|
||||||
server_name airsonic.seaturtle.pw;
|
|
||||||
|
|
||||||
# ssl conf
|
|
||||||
include /config/nginx/ssl.conf;
|
|
||||||
|
|
||||||
# Proxy airsonic
|
|
||||||
# https://airsonic.github.io/docs/proxy/nginx/
|
|
||||||
location / {
|
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
||||||
proxy_set_header X-Forwarded-Proto https;
|
|
||||||
proxy_set_header X-Forwarded-Host $http_host;
|
|
||||||
proxy_set_header Host $http_host;
|
|
||||||
proxy_max_temp_file_size 0;
|
|
||||||
proxy_pass http://airsonic:4040;
|
|
||||||
proxy_redirect http:// https://;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,29 +0,0 @@
|
||||||
## Based on version below; but heavily modified for LUUG
|
|
||||||
## Version 2018/09/12 - Changelog: https://github.com/linuxserver/docker-letsencrypt/commits/master/root/defaults/default
|
|
||||||
|
|
||||||
# This is the main file that will be pe present no matter what
|
|
||||||
# Individual sites are specified in /config/nginx/sites/*.enabled
|
|
||||||
|
|
||||||
# Redirect unknown HTTP traffic to https://seaturtle.pw
|
|
||||||
server {
|
|
||||||
listen 80 default_server;
|
|
||||||
listen [::]:80 default_server;
|
|
||||||
server_name _;
|
|
||||||
|
|
||||||
return 301 https://seaturtle.pw;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Redirect unknown HTTPS traffic to https://seaturtle.pw
|
|
||||||
# If we don't have a cert for the site the client get an error but that's fine
|
|
||||||
server {
|
|
||||||
listen 443 default_server;
|
|
||||||
listen [::]:443 default_server;
|
|
||||||
server_name _;
|
|
||||||
|
|
||||||
# ssl conf
|
|
||||||
include /config/nginx/ssl.conf;
|
|
||||||
|
|
||||||
return 301 https://seaturtle.pw;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Enabled sites are included in /config/nginx/nginx.conf
|
|
|
@ -1,29 +0,0 @@
|
||||||
server {
|
|
||||||
listen 80;
|
|
||||||
listen [::]:80;
|
|
||||||
server_name plex.seaturtle.pw;
|
|
||||||
|
|
||||||
return 301 https://plex.seaturtle.pw$request_uri;
|
|
||||||
}
|
|
||||||
|
|
||||||
server {
|
|
||||||
listen 443 ssl;
|
|
||||||
listen [::]:443 ssl;
|
|
||||||
server_name plex.seaturtle.pw;
|
|
||||||
|
|
||||||
# ssl conf
|
|
||||||
include /config/nginx/ssl.conf;
|
|
||||||
|
|
||||||
# Proxy plex
|
|
||||||
# https://old.reddit.com/r/PleX/comments/3xz4ph/plex_behind_a_ssl_nginx_reverse_proxy/
|
|
||||||
# Use IP of docker interface on docker host since plex runs in host mode
|
|
||||||
location / {
|
|
||||||
proxy_pass http://172.17.0.1:32400;
|
|
||||||
proxy_read_timeout 240;
|
|
||||||
proxy_redirect off;
|
|
||||||
proxy_buffering off;
|
|
||||||
proxy_set_header Host $host;
|
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
||||||
proxy_set_header X-Forwarded-Proto https;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,45 +0,0 @@
|
||||||
server {
|
|
||||||
listen 80;
|
|
||||||
listen [::]:80;
|
|
||||||
server_name seaturtle.pw www.seaturtle.pw;
|
|
||||||
|
|
||||||
return 301 https://seaturtle.pw$request_uri;
|
|
||||||
}
|
|
||||||
|
|
||||||
server {
|
|
||||||
listen 443 ssl;
|
|
||||||
listen [::]:443 ssl;
|
|
||||||
server_name www.seaturtle.pw;
|
|
||||||
|
|
||||||
# ssl conf
|
|
||||||
include /config/nginx/ssl.conf;
|
|
||||||
|
|
||||||
return 301 https://seaturtle.pw$request_uri;
|
|
||||||
}
|
|
||||||
|
|
||||||
server {
|
|
||||||
listen 443 ssl;
|
|
||||||
listen [::]:443 ssl;
|
|
||||||
server_name seaturtle.pw;
|
|
||||||
|
|
||||||
# ssl conf
|
|
||||||
include /config/nginx/ssl.conf;
|
|
||||||
|
|
||||||
client_max_body_size 1M;
|
|
||||||
|
|
||||||
# Proxy main site
|
|
||||||
location / {
|
|
||||||
proxy_pass https://paulwalko.github.io;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Proxy grafana
|
|
||||||
location /grafana/ {
|
|
||||||
proxy_pass http://monitoring_grafana:3000/;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Serve misc files
|
|
||||||
location /files {
|
|
||||||
alias /files-docker;
|
|
||||||
autoindex on;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,18 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Assumes pew-net exists
|
|
||||||
# Make config dir (as non-root) before launching
|
|
||||||
|
|
||||||
docker run \
|
|
||||||
--name plex \
|
|
||||||
--detach \
|
|
||||||
--restart unless-stopped \
|
|
||||||
--env PUID=1000 \
|
|
||||||
--env PGID=1000 \
|
|
||||||
--env VERSION=docker \
|
|
||||||
--volume $PWD/plex-config:/config:rw \
|
|
||||||
--volume /bigdata/media/movies:/media/movies:ro \
|
|
||||||
--volume /bigdata/media/music:/media/music:ro \
|
|
||||||
--volume /media-vtluug:/media/media-vtluug:ro \
|
|
||||||
--network host \
|
|
||||||
linuxserver/plex:1.19.1.2701-6327e27bf-ls90
|
|
|
@ -1,10 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
docker run -d \
|
|
||||||
--name ut2004 \
|
|
||||||
-p 10.42.0.203:5000:80 \
|
|
||||||
-p 10.42.0.203:7777:7777 \
|
|
||||||
-p 10.42.0.203:7778:7778 \
|
|
||||||
-e "CONFIG_1=[Engine.AccessControl];AdminPassword=password123;[UWeb.WebServer];bEnabled=True" \
|
|
||||||
-e "UT2004_CMD=CTF-FACECLASSIC?game=XGame.xCTFGame" \
|
|
||||||
reflectivecode/ut2004
|
|
|
@ -0,0 +1,79 @@
|
||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
run: airsonic
|
||||||
|
name: airsonic
|
||||||
|
namespace: pew
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
run: airsonic
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
run: airsonic
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: airsonic
|
||||||
|
image: linuxserver/airsonic
|
||||||
|
env:
|
||||||
|
- name: PUID
|
||||||
|
value: "1000"
|
||||||
|
- name: PGID
|
||||||
|
value: "1000"
|
||||||
|
- name: TZ
|
||||||
|
value: "US/Eastern"
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /config
|
||||||
|
name: airsonic-config
|
||||||
|
readOnly: false
|
||||||
|
- mountPath: /media/music
|
||||||
|
name: bigdata-music
|
||||||
|
readOnly: true
|
||||||
|
- mountPath: /media/playlists
|
||||||
|
name: bigdata-playlists
|
||||||
|
readOnly: true
|
||||||
|
- mountPath: /media/podcasts
|
||||||
|
name: bigdata-podcasts
|
||||||
|
readOnly: true
|
||||||
|
- mountPath: /media/media-vtluug
|
||||||
|
name: vtluug-media
|
||||||
|
readOnly: true
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 4040
|
||||||
|
volumes:
|
||||||
|
- name: airsonic-config
|
||||||
|
hostPath:
|
||||||
|
path: /bigdata/k8s-config/airsonic/config
|
||||||
|
- name: bigdata-music
|
||||||
|
hostPath:
|
||||||
|
path: /bigdata/media/music
|
||||||
|
- name: bigdata-playlists
|
||||||
|
hostPath:
|
||||||
|
path: /bigdata/media/playlists
|
||||||
|
- name: bigdata-podcasts
|
||||||
|
hostPath:
|
||||||
|
path: /bigdata/media/podcasts
|
||||||
|
- name: vtluug-media
|
||||||
|
hostPath:
|
||||||
|
path: /media-vtluug
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
run: airsonic
|
||||||
|
name: airsonic
|
||||||
|
namespace: pew
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
run: airsonic
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: 4040
|
||||||
|
protocol: TCP
|
|
@ -0,0 +1,2 @@
|
||||||
|
# cert-manager
|
||||||
|
kubectl apply --validate=false -f https://github.com/jetstack/cert-manager/releases/download/v1.0.3/cert-manager.yaml
|
|
@ -0,0 +1,97 @@
|
||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
run: gitea
|
||||||
|
name: gitea
|
||||||
|
namespace: pew
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
run: gitea
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
run: gitea
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: gitea
|
||||||
|
image: gitea/gitea:1.12.5
|
||||||
|
env:
|
||||||
|
- name: RUN_MODE
|
||||||
|
value: "prod"
|
||||||
|
- name: DOMAIN
|
||||||
|
value: "git.seaturtle.pw"
|
||||||
|
- name: SSH_DOMAIN
|
||||||
|
value: "git.seaturtle.pw"
|
||||||
|
- name: SSH_PORT
|
||||||
|
value: "2223"
|
||||||
|
- name: ROOT_URL
|
||||||
|
value: "https://git.seaturtle.pw/"
|
||||||
|
- name: LFS_START
|
||||||
|
value: "true"
|
||||||
|
- name: DISABLE_REGISTRATION
|
||||||
|
value: "true"
|
||||||
|
- name: REQUIRED_SIGNIN_VIEW
|
||||||
|
value: "true"
|
||||||
|
- name: USER_UID
|
||||||
|
value: "1000"
|
||||||
|
- name: USER_GUID
|
||||||
|
value: "1000"
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /data
|
||||||
|
name: gitea-data
|
||||||
|
readOnly: false
|
||||||
|
- mountPath: /etc/timezone
|
||||||
|
subPath: timezone
|
||||||
|
name: gitea-config
|
||||||
|
readOnly: true
|
||||||
|
- mountPath: /etc/localtime
|
||||||
|
name: gitea-localtime
|
||||||
|
readOnly: true
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 3000
|
||||||
|
- name: ssh
|
||||||
|
containerPort: 22
|
||||||
|
volumes:
|
||||||
|
- name: gitea-data
|
||||||
|
hostPath:
|
||||||
|
path: /bigdata/k8s-config/gitea/data
|
||||||
|
- name: gitea-config
|
||||||
|
configMap:
|
||||||
|
name: gitea-config
|
||||||
|
- name: gitea-localtime
|
||||||
|
hostPath:
|
||||||
|
path: /usr/share/zoneinfo/America/New_York
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
run: gitea
|
||||||
|
name: gitea
|
||||||
|
namespace: pew
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
run: gitea
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: 3000
|
||||||
|
protocol: TCP
|
||||||
|
- name: ssh
|
||||||
|
port: 2223
|
||||||
|
protocol: TCP
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: gitea-config
|
||||||
|
namespace: pew
|
||||||
|
data:
|
||||||
|
timezone: |
|
||||||
|
America/New_York
|
|
@ -0,0 +1,242 @@
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
name: pew
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: haproxy-ingress-service-account
|
||||||
|
namespace: pew
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: ClusterRole
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
metadata:
|
||||||
|
name: haproxy-ingress-cluster-role
|
||||||
|
rules:
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- configmaps
|
||||||
|
- endpoints
|
||||||
|
- nodes
|
||||||
|
- pods
|
||||||
|
- services
|
||||||
|
- namespaces
|
||||||
|
- events
|
||||||
|
- serviceaccounts
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- "extensions"
|
||||||
|
resources:
|
||||||
|
- ingresses
|
||||||
|
- ingresses/status
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- update
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- secrets
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- create
|
||||||
|
- patch
|
||||||
|
- update
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: ClusterRoleBinding
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
metadata:
|
||||||
|
name: haproxy-ingress-cluster-role-binding
|
||||||
|
namespace: pew
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: ClusterRole
|
||||||
|
name: haproxy-ingress-cluster-role
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: haproxy-ingress-service-account
|
||||||
|
namespace: pew
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: haproxy
|
||||||
|
namespace: pew
|
||||||
|
data:
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: tcpservices
|
||||||
|
namespace: pew
|
||||||
|
data:
|
||||||
|
2223:
|
||||||
|
pew/gitea:2223
|
||||||
|
25565:
|
||||||
|
pew/minecraft:25565
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
run: haproxy-ingress
|
||||||
|
name: haproxy-ingress
|
||||||
|
namespace: pew
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
run: haproxy-ingress
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
run: haproxy-ingress
|
||||||
|
spec:
|
||||||
|
serviceAccountName: haproxy-ingress-service-account
|
||||||
|
containers:
|
||||||
|
- name: haproxy-ingress
|
||||||
|
image: haproxytech/kubernetes-ingress
|
||||||
|
args:
|
||||||
|
- --configmap=pew/haproxy
|
||||||
|
- --configmap-tcp-services=pew/tcpservices
|
||||||
|
- --default-backend-service=pew/ingress-default-backend
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 80
|
||||||
|
- name: https
|
||||||
|
containerPort: 443
|
||||||
|
- name: ssh
|
||||||
|
containerPort: 2223
|
||||||
|
- name: minecraft
|
||||||
|
containerPort: 25565
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
run: haproxy-ingress
|
||||||
|
name: haproxy-ingress
|
||||||
|
namespace: pew
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
run: haproxy-ingress
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: 80
|
||||||
|
protocol: TCP
|
||||||
|
- name: https
|
||||||
|
port: 443
|
||||||
|
protocol: TCP
|
||||||
|
- name: ssh
|
||||||
|
port: 2223
|
||||||
|
protocol: TCP
|
||||||
|
- name: minecraft
|
||||||
|
port: 25565
|
||||||
|
protocol: TCP
|
||||||
|
externalIPs:
|
||||||
|
- 10.42.0.203
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
# set to false if doing letsencrypt validation
|
||||||
|
ingress.kubernetes.io/ssl-redirect: "false"
|
||||||
|
cert-manager.io/cluster-issuer: letsencrypt-prod
|
||||||
|
name: haproxy-ingress
|
||||||
|
namespace: pew
|
||||||
|
spec:
|
||||||
|
rules:
|
||||||
|
- host: seaturtle.pw
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: "Exact"
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: nginx
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
|
- path: /files
|
||||||
|
pathType: "Exact"
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: nginx
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
|
- path: /grafana
|
||||||
|
pathType: "Exact"
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: grafana
|
||||||
|
port:
|
||||||
|
number: 3000
|
||||||
|
- host: airsonic.seaturtle.pw
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: "Exact"
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: airsonic
|
||||||
|
port:
|
||||||
|
number: 4040
|
||||||
|
- host: git.seaturtle.pw
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: "Exact"
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: gitea
|
||||||
|
port:
|
||||||
|
number: 3000
|
||||||
|
- host: plex.seaturtle.pw
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: "Exact"
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: plex
|
||||||
|
port:
|
||||||
|
number: 32400
|
||||||
|
tls:
|
||||||
|
- secretName: pew-cert
|
||||||
|
hosts:
|
||||||
|
- seaturtle.pw
|
||||||
|
- airsonic.seaturtle.pw
|
||||||
|
- git.seaturtle.pw
|
||||||
|
- plex.seaturtle.pw
|
||||||
|
---
|
||||||
|
apiVersion: cert-manager.io/v1alpha2
|
||||||
|
kind: ClusterIssuer
|
||||||
|
metadata:
|
||||||
|
name: letsencrypt-prod
|
||||||
|
spec:
|
||||||
|
acme:
|
||||||
|
email: paulsw.pw@gmail.com
|
||||||
|
server: https://acme-v02.api.letsencrypt.org/directory
|
||||||
|
privateKeySecretRef:
|
||||||
|
name: pew-account-key
|
||||||
|
# Add a ACME HTTP01 challenge solver
|
||||||
|
solvers:
|
||||||
|
- http01:
|
||||||
|
ingress: {}
|
|
@ -0,0 +1,55 @@
|
||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
run: minecraft
|
||||||
|
name: minecraft
|
||||||
|
namespace: pew
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
run: minecraft
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
run: minecraft
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: minecraft
|
||||||
|
image: itzg/minecraft-server
|
||||||
|
env:
|
||||||
|
- name: EULA
|
||||||
|
value: "TRUE"
|
||||||
|
- name: MAX_MEMORY
|
||||||
|
value: "8G"
|
||||||
|
- name: VERSION
|
||||||
|
value: "1.15.2"
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /data
|
||||||
|
name: minecraft-data
|
||||||
|
readOnly: false
|
||||||
|
ports:
|
||||||
|
- name: minecraft
|
||||||
|
containerPort: 25565
|
||||||
|
volumes:
|
||||||
|
- name: minecraft-data
|
||||||
|
hostPath:
|
||||||
|
path: /bigdata/k8s-config/minecraft/data
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
run: minecraft
|
||||||
|
name: minecraft
|
||||||
|
namespace: pew
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
run: minecraft
|
||||||
|
ports:
|
||||||
|
- name: minecraft
|
||||||
|
port: 25565
|
||||||
|
protocol: TCP
|
|
@ -0,0 +1,134 @@
|
||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
run: nginx
|
||||||
|
name: nginx
|
||||||
|
namespace: pew
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
run: nginx
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
run: nginx
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: nginx
|
||||||
|
image: nginx
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /etc/nginx/nginx.conf
|
||||||
|
subPath: nginx.conf
|
||||||
|
name: nginx-config
|
||||||
|
readOnly: true
|
||||||
|
- mountPath: /files
|
||||||
|
name: nginx-files
|
||||||
|
readOnly: true
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 80
|
||||||
|
volumes:
|
||||||
|
- name: nginx-config
|
||||||
|
configMap:
|
||||||
|
name: nginx-config
|
||||||
|
- name: nginx-files
|
||||||
|
hostPath:
|
||||||
|
path: /bigdata/files
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
run: nginx
|
||||||
|
name: nginx
|
||||||
|
namespace: pew
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
run: nginx
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: 80
|
||||||
|
protocol: TCP
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: nginx-config
|
||||||
|
namespace: pew
|
||||||
|
data:
|
||||||
|
nginx.conf: |
|
||||||
|
user nginx;
|
||||||
|
worker_processes 4;
|
||||||
|
pid /run/nginx.pid;
|
||||||
|
include /etc/nginx/modules/*.conf;
|
||||||
|
|
||||||
|
events {
|
||||||
|
worker_connections 768;
|
||||||
|
# multi_accept on;
|
||||||
|
}
|
||||||
|
|
||||||
|
http {
|
||||||
|
|
||||||
|
##
|
||||||
|
# Basic Settings
|
||||||
|
##
|
||||||
|
|
||||||
|
sendfile on;
|
||||||
|
tcp_nopush on;
|
||||||
|
tcp_nodelay on;
|
||||||
|
keepalive_timeout 65;
|
||||||
|
types_hash_max_size 2048;
|
||||||
|
# server_tokens off;
|
||||||
|
|
||||||
|
# server_names_hash_bucket_size 64;
|
||||||
|
# server_name_in_redirect off;
|
||||||
|
|
||||||
|
client_max_body_size 0;
|
||||||
|
|
||||||
|
include /etc/nginx/mime.types;
|
||||||
|
default_type application/octet-stream;
|
||||||
|
|
||||||
|
##
|
||||||
|
# Logging Settings
|
||||||
|
##
|
||||||
|
|
||||||
|
#access_log /config/log/nginx/access.log;
|
||||||
|
#error_log /config/log/nginx/error.log;
|
||||||
|
|
||||||
|
##
|
||||||
|
# Gzip Settings
|
||||||
|
##
|
||||||
|
|
||||||
|
gzip on;
|
||||||
|
#gzip_disable "msie6";
|
||||||
|
|
||||||
|
# gzip_vary on;
|
||||||
|
# gzip_proxied any;
|
||||||
|
# gzip_comp_level 6;
|
||||||
|
# gzip_buffers 16 8k;
|
||||||
|
# gzip_http_version 1.1;
|
||||||
|
# gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
|
||||||
|
|
||||||
|
##
|
||||||
|
# Virtual Host Configs
|
||||||
|
##
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name _;
|
||||||
|
root /;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
proxy_pass http://paulwalko.github.io/;
|
||||||
|
}
|
||||||
|
|
||||||
|
location /files {
|
||||||
|
autoindex on;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#include /etc/nginx/conf.d/*.conf;
|
||||||
|
#include /config/nginx/site-confs/default;
|
||||||
|
#include /config/nginx/site-confs/*.enabled;
|
||||||
|
}
|
|
@ -0,0 +1,73 @@
|
||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
run: plex
|
||||||
|
name: plex
|
||||||
|
namespace: pew
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
run: plex
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
run: plex
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: plex
|
||||||
|
image: linuxserver/plex
|
||||||
|
env:
|
||||||
|
- name: PUID
|
||||||
|
value: "1000"
|
||||||
|
- name: PGID
|
||||||
|
value: "1000"
|
||||||
|
- name: VERSION
|
||||||
|
value: "docker"
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /config
|
||||||
|
name: plex-config
|
||||||
|
readOnly: false
|
||||||
|
- mountPath: /media/movies
|
||||||
|
name: bigdata-movies
|
||||||
|
readOnly: true
|
||||||
|
- mountPath: /media/music
|
||||||
|
name: bigdata-music
|
||||||
|
readOnly: true
|
||||||
|
- mountPath: /media/media-vtluug
|
||||||
|
name: vtluug-media
|
||||||
|
readOnly: true
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 32400
|
||||||
|
volumes:
|
||||||
|
- name: plex-config
|
||||||
|
hostPath:
|
||||||
|
path: /bigdata/k8s-config/plex/config
|
||||||
|
- name: bigdata-movies
|
||||||
|
hostPath:
|
||||||
|
path: /bigdata/media/movies
|
||||||
|
- name: bigdata-music
|
||||||
|
hostPath:
|
||||||
|
path: /bigdata/media/music
|
||||||
|
- name: vtluug-media
|
||||||
|
hostPath:
|
||||||
|
path: /media-vtluug
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
run: plex
|
||||||
|
name: plex
|
||||||
|
namespace: pew
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
run: plex
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: 32400
|
||||||
|
protocol: TCP
|
Loading…
Reference in New Issue