Skip to content

Commit

Permalink
PR: DevOps basic infrastructure implementation (#79)
Browse files Browse the repository at this point in the history
* Infrastructure

* Remove .gitkeep

* Working EKS cluster!
  • Loading branch information
mlodybercik authored Jan 23, 2025
1 parent d14889b commit 7a8c37c
Show file tree
Hide file tree
Showing 20 changed files with 882 additions and 1 deletion.
2 changes: 1 addition & 1 deletion implementation/leprechaun/src/config/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ const config: AppConfig = {
PROD: process.env.NODE_ENV === 'production',
LEPRECHAUN_APP_PORT: parseInt(process.env.LEPRECHAUN_APP_PORT!) || 3000,
LEPRECHAUN_DATABASE_HOST: process.env.LEPRECHAUN_DATABASE_HOST ?? 'postgresql://postgres:test@localhost:5432',
LEPRECHAUN_DATABASE_DBNAME: process.env.LEPRECHAUN_DATABASE_HOST ?? 'leprechaun',
LEPRECHAUN_DATABASE_DBNAME: process.env.LEPRECHAUN_DATABASE_DBNAME ?? 'leprechaun',
};

export default config;
5 changes: 5 additions & 0 deletions infrastructure/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# secret files (keys, passwords, etc.)
eks/secrets

# ansible inventory file
inventory.ini
9 changes: 9 additions & 0 deletions infrastructure/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
### Config

- `aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 143137682504.dkr.ecr.us-east-1.amazonaws.com`
- ```
kubectl create secret generic regcred \
--from-file=.dockerconfigjson=<path from above> \
--type=kubernetes.io/dockerconfigjson
```
- `kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.12.0/deploy/static/provider/cloud/deploy.yaml`
57 changes: 57 additions & 0 deletions infrastructure/eks/config-maps.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: clabbert-config-map
data:
LEPRECHAUN_SERVICE_HOST: leprechaun
LEPRECHAUN_SERVICE_PORT: "8080"

INFERIUS_SERVICE_HOST: inferius
INFERIUS_SERVICE_PORT: "8080"

---

apiVersion: v1
kind: ConfigMap
metadata:
name: feather-config-map

---

apiVersion: v1
kind: ConfigMap
metadata:
name: inferius-config-map

---

apiVersion: v1
kind: ConfigMap
metadata:
name: jobberknoll-config-map

---

apiVersion: v1
kind: ConfigMap
metadata:
name: leprechaun-config-map

---

apiVersion: v1
kind: ConfigMap
metadata:
name: phoenix-config-map
data:
JOBBERKNOLL_SERVICE_HOST: jobberknoll
JOBBERKNOLL_SERVICE_PORT: "8080"

CLABBERT_SERVICE_HOST: clabbert
CLABBERT_SERVICE_PORT: "8080"

INFERIUS_SERVICE_HOST: inferius
INFERIUS_SERVICE_PORT: "8080"

LEPRECHAUN_SERVICE_HOST: leprechaun
LEPRECHAUN_SERVICE_PORT: "8080"
59 changes: 59 additions & 0 deletions infrastructure/eks/deployments/clabbert.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: clabbert
spec:
replicas: 1
selector:
matchLabels:
app: clabbert
template:
metadata:
labels:
app: clabbert
spec:
imagePullSecrets:
- name: regcred
containers:
- name: clabbert
image: 143137682504.dkr.ecr.us-east-1.amazonaws.com/jakprzyjade/clabbert:latest
resources:
limits:
memory: "768Mi"
cpu: "100m"

envFrom:
- configMapRef:
name: clabbert-config-map

ports:
- containerPort: 8080
name: http

env:
- name: SERVER_PORT
value: "8080"

- name: DATABASE_PORT
value: "5432"

- name: DATABASE_NAME
value: "clabbert"

- name: DATABASE_HOST
valueFrom:
secretKeyRef:
name: generic-database-info
key: DATABASE_HOST

- name: DATABASE_USER
valueFrom:
secretKeyRef:
name: generic-database-info
key: DATABASE_USER

- name: DATABASE_PASSWORD
valueFrom:
secretKeyRef:
name: generic-database-info
key: DATABASE_PASSWORD
62 changes: 62 additions & 0 deletions infrastructure/eks/deployments/inferius.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: inferius
spec:
replicas: 1
selector:
matchLabels:
app: inferius
template:
metadata:
labels:
app: inferius
spec:
imagePullSecrets:
- name: regcred
containers:
- name: inferius
image: 143137682504.dkr.ecr.us-east-1.amazonaws.com/jakprzyjade/inferius:latest
resources:
limits:
memory: "768Mi"
cpu: "200m"

envFrom:
- configMapRef:
name: inferius-config-map

ports:
- containerPort: 8080
name: http

env:
- name: SERVER_PORT
value: "8080"

- name: DATABASE_PORT
value: "5432"

- name: DATABASE_NAME
value: "inferius"

- name: INFERIUS_VERSION
value: "1.0.0"

- name: DATABASE_HOST
valueFrom:
secretKeyRef:
name: generic-database-info
key: DATABASE_HOST

- name: DATABASE_USER
valueFrom:
secretKeyRef:
name: generic-database-info
key: DATABASE_USER

- name: DATABASE_PASSWORD
valueFrom:
secretKeyRef:
name: generic-database-info
key: DATABASE_PASSWORD
62 changes: 62 additions & 0 deletions infrastructure/eks/deployments/jobberknoll.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: jobberknoll
spec:
replicas: 1
selector:
matchLabels:
app: jobberknoll
template:
metadata:
labels:
app: jobberknoll
spec:
imagePullSecrets:
- name: regcred
containers:
- name: jobberknoll
image: 143137682504.dkr.ecr.us-east-1.amazonaws.com/jakprzyjade/jobberknoll:latest
resources:
limits:
memory: "768Mi"
cpu: "200m"

envFrom:
- configMapRef:
name: jobberknoll-config-map

ports:
- containerPort: 8080
name: http

env:
- name: SERVER_PORT
value: "8080"

- name: PROD
value: "true"

- name: DATABASE_URL
valueFrom:
secretKeyRef:
name: generic-database-info
key: JOBBERKNOLL_DATABASE_URL

- name: JWT_ALGORITHM
valueFrom:
secretKeyRef:
name: jobberknoll-secret-map
key: JWT_ALGORITHM

- name: JWT_PRIVATE_KEY
valueFrom:
secretKeyRef:
name: jobberknoll-secret-map
key: JWT_PRIVATE_KEY

- name: JWT_PUBLIC_KEY
valueFrom:
secretKeyRef:
name: jobberknoll-secret-map
key: JWT_PUBLIC_KEY
47 changes: 47 additions & 0 deletions infrastructure/eks/deployments/leprechaun.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: leprechaun
spec:
replicas: 1
selector:
matchLabels:
app: leprechaun
template:
metadata:
labels:
app: leprechaun
spec:
imagePullSecrets:
- name: regcred
containers:
- name: leprechaun
image: 143137682504.dkr.ecr.us-east-1.amazonaws.com/jakprzyjade/leprechaun:latest
resources:
limits:
memory: "768Mi"
cpu: "200m"

envFrom:
- configMapRef:
name: leprechaun-config-map

ports:
- containerPort: 8080
name: http

env:
- name: LEPRECHAUN_APP_PORT
value: "8080"

- name: NODE_ENV
value: "production"

- name: LEPRECHAUN_DATABASE_DBNAME
value: "leprechaun"

- name: LEPRECHAUN_DATABASE_HOST
valueFrom:
secretKeyRef:
name: generic-database-info
key: LEPRECHAUN_DATABASE_HOST
52 changes: 52 additions & 0 deletions infrastructure/eks/deployments/phoenix.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: phoenix
spec:
replicas: 1
selector:
matchLabels:
app: phoenix
template:
metadata:
labels:
app: phoenix
spec:
imagePullSecrets:
- name: regcred
containers:
- name: phoenix
image: 143137682504.dkr.ecr.us-east-1.amazonaws.com/jakprzyjade/phoenix:latest
resources:
limits:
memory: "384Mi"
cpu: "100m"

envFrom:
- configMapRef:
name: phoenix-config-map

ports:
- containerPort: 8080
name: http

env:
- name: SERVER_PORT
value: "8080"
- name: PHOENIX_VERSION
value: "1.0.0"

- name: feather
image: 143137682504.dkr.ecr.us-east-1.amazonaws.com/jakprzyjade/feather:latest
resources:
limits:
memory: "384Mi"
cpu: "100m"

ports:
- containerPort: 8081
name: http

envFrom:
- configMapRef:
name: feather-config-map
21 changes: 21 additions & 0 deletions infrastructure/eks/gateway.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress
spec:
ingressClassName: nginx
defaultBackend:
service:
name: phoenix
port:
name: http
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: phoenix
port:
name: http
Loading

0 comments on commit 7a8c37c

Please sign in to comment.