Skip to content

Commit

Permalink
Merge pull request #99 from zevisert/ops/kubeify
Browse files Browse the repository at this point in the history
Deploy with k8s and dev with skaffold
  • Loading branch information
zevisert authored Sep 30, 2021
2 parents 3c9cdff + 0728378 commit babf196
Show file tree
Hide file tree
Showing 23 changed files with 923 additions and 79 deletions.
10 changes: 10 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
build/
node_modules/

test/integration/screenshots-current/
_site/

server/uploads
!server/uploads/.gitfolder

*.env
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,4 @@ server/uploads
!server/uploads/.gitfolder

*.env
k8s/**/*.secret.yaml
23 changes: 0 additions & 23 deletions .travis.yml

This file was deleted.

16 changes: 16 additions & 0 deletions k8s/api.service.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
apiVersion: v1
kind: Service
metadata:
labels:
app: api
name: api

spec:
type: ClusterIP
selector:
app: server
ports:
- name: api
port: 80
protocol: TCP
targetPort: 80
8 changes: 8 additions & 0 deletions k8s/ca-issuer.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: ca-issuer
namespace: cert-manager
spec:
ca:
secretName: ca-key-pair
32 changes: 32 additions & 0 deletions k8s/dev/ingress.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: zuzi-ingress

spec:
ingressClassName: nginx
rules:
- host: kubernetes.docker.internal
http:
paths:
- path: /api/v1
pathType: Prefix
backend:
service:
name: api
port:
name: api
- path: /uploads
pathType: Prefix
backend:
service:
name: api
port:
name: api
- path: /
pathType: Prefix
backend:
service:
name: http
port:
name: http
4 changes: 4 additions & 0 deletions k8s/dev/namespace.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: zuzi-dev
40 changes: 40 additions & 0 deletions k8s/frontend.deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: frontend
name: frontend

spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: frontend
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
labels:
app: frontend
spec:
containers:
- image: zevisert/zuzi-site-frontend
imagePullPolicy: IfNotPresent
name: zuzi-site
ports:
- containerPort: 80
resources:
limits:
cpu: 500m
memory: 500M
requests:
cpu: 100m
memory: 100M
dnsPolicy: ClusterFirst
restartPolicy: Always
terminationGracePeriodSeconds: 5
17 changes: 17 additions & 0 deletions k8s/http.service.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
apiVersion: v1
kind: Service
metadata:
labels:
app: http
name: http

spec:
type: ClusterIP
selector:
app: frontend
ports:
- name: http
port: 80
protocol: TCP
targetPort: 80

108 changes: 108 additions & 0 deletions k8s/mongodb.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
# yaml-language-server: $schema=../schemas/mongodb-kubernetes-operator/master/mongodbcommunity.mongodbcommunity.mongodb.com-v1.json
apiVersion: mongodbcommunity.mongodb.com/v1
kind: MongoDBCommunity
metadata:
name: mongodb
spec:
members: 2
arbiters: 1
type: ReplicaSet
version: "5.0.3"
security:
authentication:
modes:
- SCRAM
users:
- name: koa
db: admin
passwordSecretRef:
name: env
key: MONGO_PW
roles:
- name: clusterAdmin
db: admin
- name: dbAdminAnyDatabase
db: admin
- name: dbOwner
db: admin
- name: readWriteAnyDatabase
db: admin
scramCredentialsSecretName: mongodb-scram
statefulSet:
spec:
template:
metadata:
labels:
environment: production
spec:
affinity:
podAntiAffinity:
# read: A pod should not be scheduled on the node if a pod with
# the label environment=production is already running on it.
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchExpressions:
- key: environment
operator: In
values:
- production
topologyKey: kubernetes.io/hostname
containers:
- name: mongod
resources:
limits:
cpu: 600m
memory: 500M
requests:
cpu: 200m
memory: 200M
- name: mongodb-agent
resources:
limits:
cpu: 500m
memory: 250M
requests:
cpu: 100m
memory: 100M
---

# These resources are from the mongodb-kubernetes-operator repository
apiVersion: v1
kind: ServiceAccount
metadata:
name: mongodb-kubernetes-operator
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: mongodb-kubernetes-operator
rules:
- apiGroups: [""]
verbs: ["create", "delete", "get", "list", "patch", "update", "watch"]
resources: ["pods", "services", "configmaps", "secrets"]

- apiGroups: ["apps"]
verbs: ["create", "delete", "get", "list", "patch", "update", "watch"]
resources: ["statefulsets"]

- apiGroups: ["mongodbcommunity.mongodb.com"]
verbs: ["get", "patch", "list", "update", "watch"]
resources:
- mongodbcommunity
- mongodbcommunity/status
- mongodbcommunity/spec
- mongodbcommunity/finalizers
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: mongodb-kubernetes-operator
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: mongodb-kubernetes-operator
subjects:
- kind: ServiceAccount
name: mongodb-kubernetes-operator
38 changes: 38 additions & 0 deletions k8s/prod/ingress.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: zuzi-ingress
annotations:
cert-manager.io/cluster-issuer: letsencrypt

spec:
ingressClassName: nginx
rules:
- host: zuzanariha.art
http:
paths:
- path: /api/v1
pathType: Prefix
backend:
service:
name: api
port:
name: api
- path: /uploads
pathType: Prefix
backend:
service:
name: api
port:
name: api
- path: /
pathType: Prefix
backend:
service:
name: http
port:
name: http
tls:
- hosts:
- zuzanariha.art
secretName: zuzi-art-cert
4 changes: 4 additions & 0 deletions k8s/prod/namespace.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: zuzi-site
52 changes: 52 additions & 0 deletions k8s/server.deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: server
name: server

spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: server
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
labels:
app: server
spec:
dnsPolicy: ClusterFirst
restartPolicy: Always
terminationGracePeriodSeconds: 10
containers:
- name: zuzi-site
image: zevisert/zuzi-site-server
imagePullPolicy: IfNotPresent
envFrom:
- secretRef:
name: env
volumeMounts:
- mountPath: /secrets/mongodb
name: mongodb-creds
readOnly: true
ports:
- containerPort: 80
protocol: TCP
resources:
limits:
cpu: 800m
memory: 500M
requests:
cpu: 200m
memory: 100M
volumes:
- name: mongodb-creds
secret:
secretName: mongodb-admin-koa
Loading

0 comments on commit babf196

Please sign in to comment.