This commit is contained in:
nora 2023-02-07 21:11:37 +01:00
parent 1b8879c684
commit 4be274f187
12 changed files with 270 additions and 12 deletions

1
.gitattributes vendored Normal file
View file

@ -0,0 +1 @@
*.yaml linguist-detectable

View file

@ -0,0 +1,68 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: cargo-bisect-rustc-config
data:
SQLITE_DB: /app/db/db.sqlite
RUST_LOG: debug
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: cargo-bisect-rustc-volume-claim
spec:
resources:
requests:
storage: "50Mi"
volumeMode: Filesystem
accessModes:
- ReadWriteMany
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: cargo-bisect-rustc
spec:
selector:
matchLabels:
app: cargo-bisect-rustc
template:
metadata:
labels:
app: cargo-bisect-rustc
spec:
containers:
- name: cargo-bisect-rustc
image: docker.nilstrieb.dev/cargo-bisect-rustc-service:1.10
resources:
requests:
memory: "256Mi"
cpu: "200m"
limits:
memory: "1000Mi"
cpu: "2000m"
envFrom:
- configMapRef:
name: cargo-bisect-rustc-config
volumeMounts:
- mountPath: /app/db
name: sqlitedb
ports:
- containerPort: 4000
imagePullSecrets:
- name: docker-nilstrieb-dev-login
volumes:
- name: sqlitedb
persistentVolumeClaim:
claimName: cargo-bisect-rustc-volume-claim
---
apiVersion: v1
kind: Service
metadata:
name: cargo-bisect-rustc-service
spec:
selector:
app: cargo-bisect-rustc
ports:
- port: 80
targetPort: 4000

View file

@ -0,0 +1,65 @@
# https://www.containiq.com/post/deploy-postgres-on-kubernetes
apiVersion: v1
kind: ConfigMap
metadata:
name: hugo-chat-db-config
data:
POSTGRES_PASSWORD: huGO123.corsBOSS
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: hugo-chat-db-volume-claim
spec:
storageClassName: local-storage
resources:
requests:
storage: 100Mi
volumeMode: Filesystem
accessModes:
- ReadWriteMany
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: hugo-chat-db
spec:
selector:
matchLabels:
app: hugo-chat-db
template:
metadata:
labels:
app: hugo-chat-db
spec:
containers:
- name: hugo-chat-db
image: docker.io/postgres:latest
resources:
limits:
memory: "256Mi"
cpu: "500m"
envFrom:
- configMapRef:
name: hugo-chat-db-config
volumeMounts:
- mountPath: /var/lib/postgresql/data
name: postgredb
ports:
- containerPort: 5432
volumes:
- name: postgredb
persistentVolumeClaim:
claimName: hugo-chat-db-volume-claim
---
apiVersion: v1
kind: Service
metadata:
name: hugo-chat-db-service
spec:
selector:
app: hugo-chat-db
ports:
- port: 5432
targetPort: 5432

View file

@ -13,15 +13,15 @@ spec:
app.kubernetes.io/name: hugo-chat-frontend
spec:
containers:
- name: hugo-chat-frontend
image: docker.nilstrieb.dev/hugo-chat-frontend:1.1
ports:
- containerPort: 80
name: http-web-svc
resources:
limits:
cpu: 200m
memory: 300M
- name: hugo-chat-frontend
image: docker.nilstrieb.dev/hugo-chat-frontend:1.1
ports:
- containerPort: 80
name: http-web-svc
resources:
limits:
cpu: 200m
memory: 300M
imagePullSecrets:
- name: docker-nilstrieb-dev-login
---
@ -33,6 +33,6 @@ spec:
selector:
app.kubernetes.io/name: hugo-chat-frontend
ports:
- protocol: TCP
port: 8080
targetPort: http-web-svc
- protocol: TCP
port: 8080
targetPort: http-web-svc

23
kube/default-volume.yaml Normal file
View file

@ -0,0 +1,23 @@
apiVersion: v1
kind: PersistentVolume
metadata:
name: default-volume
labels:
type: local
spec:
storageClassName: local-storage
capacity:
storage: 500Mi
volumeMode: Filesystem
accessModes:
- ReadWriteMany
local:
path: /mnt/kube-default-volume
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- minikube

View file

@ -0,0 +1,14 @@
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-production
spec:
acme:
server: https://acme-v02.api.letsencrypt.org/directory
email: nilstrieb@gmail.com
privateKeySecretRef:
name: letsencrypt-production
solvers:
- http01:
ingress:
class: nginx

View file

@ -0,0 +1,14 @@
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-staging
spec:
acme:
server: https://acme-staging-v02.api.letsencrypt.org/directory
email: nilstrieb@gmail.com
privateKeySecretRef:
name: letsencrypt-staging
solvers:
- http01:
ingress:
class: nginx

View file

@ -16,3 +16,13 @@ spec:
name: hugo-chat-frontend-service
port:
number: 8080
- host: bisect-rustc.nilstrieb.dev
http:
paths:
- pathType: Prefix
path: /
backend:
service:
name: cargo-bisect-rustc-service
port:
number: 80

38
kube/server-ingress.yaml Normal file
View file

@ -0,0 +1,38 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: main-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
cert-manager.io/cluster-issuer: letsencrypt-staging
spec:
rules:
- host: hugo-chat.nilstrieb.dev
http:
paths:
- pathType: Prefix
path: /
backend:
service:
name: hugo-chat-frontend-service
port:
number: 8080
- host: bisect-rustc.nilstrieb.dev
http:
paths:
- pathType: Prefix
path: /
backend:
service:
name: cargo-bisect-rustc-service
port:
number: 80
tls:
- hosts:
- nilstrieb.dev
- docker.nilstrieb.dev
- cors-school.nilstrieb.dev
- api.cors-school.nilstrieb.dev
- hugo-chat.nilstrieb.dev
- api.hugo-chat.nilstrieb.dev
- bisect-rustc.nilstrieb.dev

7
scripts/cert-manager.sh Executable file
View file

@ -0,0 +1,7 @@
#!/usr/bin/env sh
# https://getbetterdevops.io/k8s-ingress-with-letsencrypt/
helm repo add jetstack https://charts.jetstack.io
helm repo update
helm install cert-manager jetstack/cert-manager --namespace cert-manager --create-namespace --set installCRDs=true

View file

@ -0,0 +1,4 @@
#!/usr/bin/env sh
minikube addons enable ingress
minikube addons enable ingress-dns

14
scripts/setup-env.sh Executable file
View file

@ -0,0 +1,14 @@
#!/usr/bin/env sh
if kubectl cert-manager 2>/dev/null >/dev/null ;
then
echo "The cert-manger kubectl plugin is already installed"
else
CERT_MANAGER_KUBECTL_VERSION="v1.6.1"
echo "Installing the cert-manager kubectl plugin: $CERT_MANAGER_KUBECTL_VERSION"
curl -L -o kubectl-cert-manager.tar.gz "https://github.com/jetstack/cert-manager/releases/download/$CERT_MANAGER_KUBECTL_VERSION/kubectl-cert_manager-linux-amd64.tar.gz"
tar xzf kubectl-cert-manager.tar.gz
sudo mv kubectl-cert_manager /usr/local/bin
fi