init: basic k8s deployment on DO

This commit is contained in:
2024-01-09 17:39:03 +01:00
commit b826035b3a
15 changed files with 362 additions and 0 deletions
+77
View File
@@ -0,0 +1,77 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: kemkas
namespace: kemkas
labels:
app: kemkas
spec:
replicas: 1
selector:
matchLabels:
app: kemkas
template:
metadata:
name: kemkas
labels:
app: kemkas
spec:
containers:
- name: kemkas
image: registry.digitalocean.com/kemkas/kemkas:45914c78
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
env:
- name: Email__DomainName
value: mail.kemkas.hu
- name: Email__ApiKey
valueFrom:
secretKeyRef:
name: kemkas-envs
key: email--api-key
- name: ConnectionStrings__DefaultConnection
valueFrom:
secretKeyRef:
name: kemkas-envs
key: connection-strings--default-connection
- name: Authentication__Google__ClientId
valueFrom:
secretKeyRef:
name: kemkas-envs
key: authentication--google--client-id
- name: Authentication__Google__ClientSecret
valueFrom:
secretKeyRef:
name: kemkas-envs
key: authentication--google--client-secret
- name: Authentication__Facebook__ClientId
valueFrom:
secretKeyRef:
name: kemkas-envs
key: authentication--facebook--client-id
- name: Authentication__Facebook__ClientSecret
valueFrom:
secretKeyRef:
name: kemkas-envs
key: authentication--facebook--client-secret
- name: Authentication__Discord__ClientId
valueFrom:
secretKeyRef:
name: kemkas-envs
key: authentication--discord--client-id
- name: Authentication__Discord__ClientSecret
valueFrom:
secretKeyRef:
name: kemkas-envs
key: authentication--discord--client-secret
resources:
requests:
cpu: 100m
memory: 100M
limits:
cpu: 1000m
memory: 500M
restartPolicy: Always
+16
View File
@@ -0,0 +1,16 @@
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
name: kemkas-external-secrets
namespace: kemkas
spec:
refreshInterval: 1h
secretStoreRef:
name: kemkas-secret-store
kind: SecretStore
target:
name: kemkas-envs
creationPolicy: Owner
dataFrom:
- extract:
key: kemkas-app
+26
View File
@@ -0,0 +1,26 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-kemkas
namespace: kemkas
annotations:
# nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
# nginx.ingress.kubernetes.io/backend-protocol: "HTTP"
cert-manager.io/issuer: letsencrypt-kemkas
spec:
ingressClassName: nginx
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: kemkas-service
port:
number: 8080
host: dev.kemkas.hu
tls:
- hosts:
- dev.kemkas.hu
secretName: letsencrypt-kemkas
+15
View File
@@ -0,0 +1,15 @@
apiVersion: v1
kind: Service
metadata:
name: kemkas-service
namespace: kemkas
labels:
app: kemkas
spec:
selector:
app: kemkas
type: ClusterIP
ports:
- protocol: TCP
port: 8080
targetPort: 8080
+20
View File
@@ -0,0 +1,20 @@
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: letsencrypt-kemkas
namespace: kemkas
spec:
# ACME issuer configuration
# `email` - the email address to be associated with the ACME account (make sure it's a valid one)
# `server` - the URL used to access the ACME servers directory endpoint
# `privateKeySecretRef` - Kubernetes Secret to store the automatically generated ACME account private key
acme:
email: developer@kemkas.hu
server: https://acme-v02.api.letsencrypt.org/directory
privateKeySecretRef:
name: letsencrypt-kemkas-private-key
solvers:
# Use the HTTP-01 challenge provider
- http01:
ingress:
class: nginx