job's done
This commit is contained in:
commit
dac0c5b0af
6
000-namespace.yml
Normal file
6
000-namespace.yml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
name: feladat
|
||||||
|
|
10
001-configmap.yml
Normal file
10
001-configmap.yml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: feladat-config
|
||||||
|
namespace: feladat
|
||||||
|
data:
|
||||||
|
index.html: |
|
||||||
|
HELLO TAB!
|
||||||
|
|
41
002-deployment.yml
Normal file
41
002-deployment.yml
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: feladat
|
||||||
|
namespace: feladat
|
||||||
|
labels:
|
||||||
|
app: feladat
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: feladat
|
||||||
|
strategy:
|
||||||
|
type: Recreate
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: feladat
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: feladat-apache
|
||||||
|
image: httpd:2
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
ports:
|
||||||
|
- containerPort: 80
|
||||||
|
volumeMounts:
|
||||||
|
- name: config-volume
|
||||||
|
mountPath: /usr/local/apache2/htdocs/
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
memory: "128Mi"
|
||||||
|
cpu: "250m"
|
||||||
|
limits:
|
||||||
|
memory: "256Mi"
|
||||||
|
cpu: "500m"
|
||||||
|
volumes:
|
||||||
|
- name: config-volume
|
||||||
|
configMap:
|
||||||
|
name: feladat-config
|
||||||
|
|
18
003-service.yml
Normal file
18
003-service.yml
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: feladat-service
|
||||||
|
namespace: feladat
|
||||||
|
labels:
|
||||||
|
app: feladat
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: httpd
|
||||||
|
port: 80
|
||||||
|
targetPort: 80
|
||||||
|
protocol: TCP
|
||||||
|
selector:
|
||||||
|
app: feladat
|
||||||
|
type: ClusterIP
|
||||||
|
|
18
004-clusterissuer.yml
Normal file
18
004-clusterissuer.yml
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: ClusterIssuer
|
||||||
|
metadata:
|
||||||
|
name: letsencrypt-prod
|
||||||
|
namespace: cert-manager
|
||||||
|
spec:
|
||||||
|
acme:
|
||||||
|
email: tormakristof@tormakristof.eu
|
||||||
|
server: https://acme-v02.api.letsencrypt.org/directory
|
||||||
|
privateKeySecretRef:
|
||||||
|
name: nginx-letsencrypt-secret
|
||||||
|
solvers:
|
||||||
|
- selector: {}
|
||||||
|
http01:
|
||||||
|
ingress:
|
||||||
|
class: nginx
|
||||||
|
|
26
005-ingress.yml
Normal file
26
005-ingress.yml
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
---
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: feladat-ingress
|
||||||
|
namespace: feladat
|
||||||
|
annotations:
|
||||||
|
kubernetes.io/ingress.class: "nginx"
|
||||||
|
cert-manager.io/cluster-issuer: "letsencrypt-prod"
|
||||||
|
spec:
|
||||||
|
tls:
|
||||||
|
- hosts:
|
||||||
|
- test01.botoffice.net
|
||||||
|
secretName: feladat-cert-secret
|
||||||
|
rules:
|
||||||
|
- host: "test01.botoffice.net"
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: Prefix
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: feladat-service
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
|
|
58
haproxy-template.cfg
Normal file
58
haproxy-template.cfg
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
global
|
||||||
|
log /dev/log local0
|
||||||
|
log /dev/log local1 notice
|
||||||
|
chroot /var/lib/haproxy
|
||||||
|
stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
|
||||||
|
stats timeout 30s
|
||||||
|
user haproxy
|
||||||
|
group haproxy
|
||||||
|
daemon
|
||||||
|
|
||||||
|
# Default SSL material locations
|
||||||
|
ca-base /etc/ssl/certs
|
||||||
|
crt-base /etc/ssl/private
|
||||||
|
|
||||||
|
# See: https://ssl-config.mozilla.org/#server=haproxy&server-version=2.0.3&config=intermediate
|
||||||
|
ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
|
||||||
|
ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
|
||||||
|
ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets
|
||||||
|
|
||||||
|
defaults
|
||||||
|
log global
|
||||||
|
mode http
|
||||||
|
option httplog
|
||||||
|
option dontlognull
|
||||||
|
timeout connect 5000
|
||||||
|
timeout client 50000
|
||||||
|
timeout server 50000
|
||||||
|
errorfile 400 /etc/haproxy/errors/400.http
|
||||||
|
errorfile 403 /etc/haproxy/errors/403.http
|
||||||
|
errorfile 408 /etc/haproxy/errors/408.http
|
||||||
|
errorfile 500 /etc/haproxy/errors/500.http
|
||||||
|
errorfile 502 /etc/haproxy/errors/502.http
|
||||||
|
errorfile 503 /etc/haproxy/errors/503.http
|
||||||
|
errorfile 504 /etc/haproxy/errors/504.http
|
||||||
|
|
||||||
|
frontend http
|
||||||
|
bind 0.0.0.0:80
|
||||||
|
mode tcp
|
||||||
|
use_backend kube-insec
|
||||||
|
|
||||||
|
backend kube-insec
|
||||||
|
balance leastconn
|
||||||
|
mode tcp
|
||||||
|
backlog 10000
|
||||||
|
option contstats
|
||||||
|
server self 192.168.49.2:##INSECSERVERPORT## check
|
||||||
|
|
||||||
|
frontend hube-https
|
||||||
|
bind 0.0.0.0:443
|
||||||
|
mode tcp
|
||||||
|
use_backend kube
|
||||||
|
|
||||||
|
backend kube
|
||||||
|
balance leastconn
|
||||||
|
mode tcp
|
||||||
|
backlog 10000
|
||||||
|
option contstats
|
||||||
|
server self 192.168.49.2:##SERVERPORT## check
|
116
job-test.sh
Executable file
116
job-test.sh
Executable file
@ -0,0 +1,116 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
function installFavApps() {
|
||||||
|
sudo apt update
|
||||||
|
# Install my favorite applications and required packages
|
||||||
|
sudo apt install htop tmux docker.io conntrack haproxy kubectl
|
||||||
|
# Install helm
|
||||||
|
curl https://baltocdn.com/helm/signing.asc | sudo apt-key add -
|
||||||
|
sudo apt-get install apt-transport-https --yes
|
||||||
|
echo "deb https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install helm
|
||||||
|
sudo usermod -aG docker $USER
|
||||||
|
echo "Please log out and log back in"
|
||||||
|
}
|
||||||
|
|
||||||
|
function installMinikube() {
|
||||||
|
# Download and install minikube
|
||||||
|
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube_latest_amd64.deb
|
||||||
|
sudo dpkg -i minikube_latest_amd64.deb
|
||||||
|
}
|
||||||
|
|
||||||
|
function startMinikube() {
|
||||||
|
# Start minikube with Docker driver
|
||||||
|
minikube start --driver=docker
|
||||||
|
}
|
||||||
|
|
||||||
|
function stopMinikube() {
|
||||||
|
minikube tunnel --cleanup
|
||||||
|
minikube stop
|
||||||
|
}
|
||||||
|
|
||||||
|
function installHelmApps() {
|
||||||
|
helm repo add nginx-stable https://helm.nginx.com/stable
|
||||||
|
helm repo add jetstack https://charts.jetstack.io
|
||||||
|
helm repo update
|
||||||
|
# Install ingress-nginx See: https://artifacthub.io/packages/helm/ingress-nginx/ingress-nginx
|
||||||
|
helm install ingress-nginx nginx-stable/nginx-ingress --namespace ingress-nginx --create-namespace --set controller.service.type="NodePort"
|
||||||
|
# Install cert-manager See: https://artifacthub.io/packages/helm/cert-manager/cert-manager
|
||||||
|
helm install ert-manager jetstack/cert-manager --namespace cert-manager --create-namespace --set installCRDs=true
|
||||||
|
}
|
||||||
|
|
||||||
|
function configureHaproxy(){
|
||||||
|
# This is required to emulate a LoadBalancer..
|
||||||
|
minikube service -n=ingress-nginx ingress-nginx-nginx-ingress
|
||||||
|
# Get ip of loadbalancer
|
||||||
|
# This is a Go template that extracts the ports corresponding to the nginx controller service's 80 and 443 ports
|
||||||
|
# For more information see: https://stackoverflow.com/questions/37648553/is-there-anyway-to-get-the-external-ports-of-the-kubernetes-cluster
|
||||||
|
# This is then passed to the prepared template haproxy configuration and the service is restarted
|
||||||
|
NGINXPORTS=( $(kubectl get svc -n=ingress-nginx -o go-template='{{range .items}}{{range.spec.ports}}{{if .nodePort}}{{.nodePort}}{{"\n"}}{{end}}{{end}}{{end}}') )
|
||||||
|
echo "${NGINXPORTS[0]}"
|
||||||
|
sed -i "s|##INSECSERVERPORT##|${NGINXPORTS[0]}|" haproxy-template.cfg
|
||||||
|
echo "${NGINXPORTS[1]}"
|
||||||
|
sed -i "s|##SERVERPORT##|${NGINXPORTS[1]}|" haproxy-template.cfg
|
||||||
|
sudo cp haproxy-template.cfg /etc/haproxy/haproxy.cfg
|
||||||
|
sudo systemctl restart haproxy
|
||||||
|
}
|
||||||
|
|
||||||
|
function applyyaml(){
|
||||||
|
kubectl apply -f 000-namespace.yml
|
||||||
|
kubectl apply -f 001-configmap.yml
|
||||||
|
kubectl apply -f 002-deployment.yml
|
||||||
|
kubectl apply -f 003-service.yml
|
||||||
|
kubectl apply -f 004-cluserissuer.yml
|
||||||
|
kubectl apply -f 005-ingress.yml
|
||||||
|
}
|
||||||
|
|
||||||
|
function listCommands() {
|
||||||
|
cat << EOT
|
||||||
|
Available commands:
|
||||||
|
|
||||||
|
prepare
|
||||||
|
install
|
||||||
|
start
|
||||||
|
stop
|
||||||
|
reconfigurehaproxy
|
||||||
|
reapplyyaml
|
||||||
|
help
|
||||||
|
|
||||||
|
|
||||||
|
EOT
|
||||||
|
}
|
||||||
|
|
||||||
|
# Commands
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
"prepare")
|
||||||
|
installFavApps
|
||||||
|
;;
|
||||||
|
"install")
|
||||||
|
installMinikube
|
||||||
|
startMinikube
|
||||||
|
installHelmApps
|
||||||
|
configureHaproxy
|
||||||
|
applyyaml
|
||||||
|
;;
|
||||||
|
"start")
|
||||||
|
startMinikube
|
||||||
|
;;
|
||||||
|
"stop")
|
||||||
|
stopMinikube
|
||||||
|
;;
|
||||||
|
"reconfigurehaproxy")
|
||||||
|
configureHaproxy
|
||||||
|
;;
|
||||||
|
"reapplyyaml")
|
||||||
|
applyyaml
|
||||||
|
;;
|
||||||
|
"help")
|
||||||
|
listCommands
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "No command found."
|
||||||
|
echo
|
||||||
|
listCommands
|
||||||
|
esac
|
Loading…
Reference in New Issue
Block a user