Initial commit

This commit is contained in:
Victor Barba Martin 2021-06-25 18:26:10 +02:00
parent 638be8e497
commit 8fda0efab8
13 changed files with 227 additions and 0 deletions

1
.gitignore vendored
View File

@ -48,3 +48,4 @@ Thumbs.db
*.mov
*.wmv
.terraform

View File

@ -0,0 +1,20 @@
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-production
spec:
acme:
# You must replace this email address with your own.
# Let's Encrypt will use this to contact you about expiring
# certificates, and issues related to your account.
email: victor.barba.martin@toptal.com
server: https://acme-v02.api.letsencrypt.org/directory
privateKeySecretRef:
# Secret resource that will be used to store the account's private key.
name: issuer-account-key
# Add a single challenge solver, HTTP01 using nginx
solvers:
- http01:
ingress:
class: haproxy

View File

@ -0,0 +1,5 @@
controller:
sslRedirect: false
hostNetwork: true
daemonset:
useHostPort: true

View File

@ -0,0 +1,25 @@
apiVersion: v1
kind: Config
preferences: {}
clusters:
- cluster:
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM1ekNDQWMrZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJeE1EWXhOakUyTXpreU1sb1hEVE14TURZeE5ERTJNemt5TWxvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBS2ZBClJFVzlLNUhUMlRSbWxkTE45OUxzLzhiN2ZPVDZJckhqL3F1ZERZWVhBbFN4dG41aVMvYTdVM3BxckZ2VXhIZ0UKL1ZZM2xyWVFYM1VTYkswTjdVZU04OVV3QWs1Y2p0N3pXbTBhOVJrZThJeXFKZGt1QUtSdGlQYUNDc2pDdHovLwozVGRuei9NRStCSSsvOEc2MmRjVVBoL0Z3U3ZHeVV3M1ZrWG9qK0RMV1VwOUhid1kxRkxlYXlwMC9mWUtZdzdQCnh6UUhPZ3dFS1VyaENlWE83Yzg4Tm4wdlVVOHFLbmZpbmNINjFXVGhxQU5zVkMySTRxWUVjOExWSy9TYmtqdkYKL0ZhWDRKVXBxY0w2THgyd1A2L3U0ejQxYmVsUWJtUW5XZ3d1RHc4dDU4eXB6OGZzZWxCRS92di9sVEZOeVVzWApvSVdicEY2K2hlWHJudE1GWWlVQ0F3RUFBYU5DTUVBd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0hRWURWUjBPQkJZRUZDSXpORCtMbUxQT1k5U0Jxc0kvTVgxajkxYVFNQTBHQ1NxR1NJYjMKRFFFQkN3VUFBNElCQVFBWW5jeFk4YTNiak8wZWp2Qy9BQVhvS09va1B4dnZKcEpiZTdnT1NmM2EwcDR0bmcxdgpQV1lOZmlKalZhL20ySHJPWlF6cW9qVTJKZmtqT09vcmlIYnFCM2Z2M2h6MFNidW1pR1Y5bHpwUXhwSFFrUUFJCldJYjJ3ek5EQmQ0YTVITmRmR1VCaWxaZC9zR3k2Q21qNTRxZHpHSm5xWThJUDkrUXhESUl0UStqSGQ1ZitYdGMKYXh0eEpvVjB3cjIzVkp0MjZJQjExMUJPZW02UmZOeHVDNkdtdUVSYWRBLzA1M0lQSEhyMVZ4UXFFVTNXWjJNMwpJZEEzSmt3RWU1dTdUbFhCT0RRdVJuWGdwUHZGMk9mY2dDajZETUVrdXNnT2tVUWxPdG4ycUt5VVNLdUlZRko1CjQrVFNma2FmSGw2aU5lSTFGcGpWbkdoSDZNZ0RaWXd2ZC9QTwotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
server: https://9a870b0b-5da8-4282-9100-06d7be6a8920.cpc1-us-central.linodelke.net:443
name: lke29062
users:
- name: lke29062-admin
user:
as-user-extra: {}
token: eyJhbGciOiJSUzI1NiIsImtpZCI6ImNjbnpYTTk1VWdmZ0YzV3B2RzR1eUYtdmtRWEF4Z2xFZTFPMlJGSThMak0ifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJsa2UtYWRtaW4tdG9rZW4tbmQ4Y3QiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoibGtlLWFkbWluIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiNTE5ODFmNDEtZjMyYi00M2JjLWJhNDctOTRmOGE4ZDQxMjllIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmxrZS1hZG1pbiJ9.Ma62VuZAFxaMW-rpgnNlg6-ur3y7yCue841m3sNgO_kn6ISr2VUDqDAgXIqyc6LP3qhuIf_h6dVAqAPVHhQGnSRtK_q5b_n96A90VBwY5iYkhx4RF_uqxXmkYwG1-01YMctsTN2mPvnllruNF9z0ZxMiGaF4lbSZczM-L4Rwwt-5SlzBelPvPosUqQWfzrNVMO83YBK5Wk6pO_GXpFC1TAkBDe7oridIA9H8MD_qpqoNo76ZmVXxp9XGc0w0BM9ZRYsnSUNxl_Yha_D7V4pTU5GSFrn0MaNNHZGd2UFPU0fkHcLudE7cqGqlvawXA3AWKBC3La9Dl9rGNBPlAHtf7A
contexts:
- context:
cluster: lke29062
namespace: default
user: lke29062-admin
name: lke29062-ctx
current-context: lke29062-ctx

View File

@ -0,0 +1,28 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: webrtc-be-deployment
labels:
app: webrtc-be
spec:
replicas: 1
selector:
matchLabels:
app: webrtc-be
template:
metadata:
labels:
app: webrtc-be
spec:
hostNetwork: true
containers:
- name: webrtc-be
image: gcr.io/tough-craft-276813/webrtc-be:latest
env:
- name: RTC_MIN_PORT
value: "30000"
- name: RTC_MAX_PORT
value: "32768"
ports:
- name: websocket-port
containerPort: 5001

View File

@ -0,0 +1,21 @@
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: haproxy
haproxy.org/ssl-redirect: "false"
cert-manager.io/cluster-issuer: letsencrypt-production
name: webrtc-be
spec:
rules:
- host: webrtc-be.staging.video.jamkazam.com
http:
paths:
- backend:
serviceName: webrtc-be-service
servicePort: 80
path: /
tls:
- secretName: production-cert
hosts:
- webrtc-be.staging.video.jamkazam.com

View File

@ -0,0 +1,15 @@
apiVersion: v1
kind: Service
metadata:
name: webrtc-be-service
labels:
app: webrtc-be
spec:
#type: NodePort
ports:
- name: websocket-port
port: 80
targetPort: websocket-port
protocol: TCP
selector:
app: webrtc-be

View File

@ -0,0 +1,24 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: webrtc-fe-deployment
labels:
app: webrtc-fe
spec:
replicas: 1
selector:
matchLabels:
app: webrtc-fe
template:
metadata:
labels:
app: webrtc-fe
spec:
containers:
- name: webrtc-fe
image: gcr.io/tough-craft-276813/webrtc_fe:prod-0.1.8
ports:
- containerPort: 80
env:
- name: REACT_APP_WS_BACKEND_URL
value: webrtc-be.staging.video.jamkazam.com

View File

@ -0,0 +1,21 @@
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: haproxy
haproxy.org/ssl-redirect: "false"
cert-manager.io/cluster-issuer: letsencrypt-production
name: webrtc-fe
spec:
rules:
- host: staging.video.jamkazam.com
http:
paths:
- backend:
serviceName: webrtc-fe-service
servicePort: 80
path: /
tls:
- secretName: staging-cert
hosts:
- staging.video.jamkazam.com

View File

@ -0,0 +1,12 @@
apiVersion: v1
kind: Service
metadata:
name: webrtc-fe-service
labels:
app: webrtc-fe
spec:
ports:
- port: 80
protocol: TCP
selector:
app: webrtc-fe

View File

@ -0,0 +1,22 @@
# This file is maintained automatically by "terraform init".
# Manual edits may be lost in future updates.
provider "registry.terraform.io/linode/linode" {
version = "1.18.0"
hashes = [
"h1:vzGqhhDzEN8pJ6KIr8cXdzvyNb133PLkL9pQGpNgdo4=",
"zh:0ead391cba4eccff9d46c91e9260ce5e2ccfd69e2aebef253768ce29e2de3a7d",
"zh:27708a55d1ba1594086c2015441243a38a608f68ea2f82f1d759c6baf2a0df14",
"zh:3d355a270e7eaeafd5044a326c527c23742b312376368e1019e3caa779cdbc91",
"zh:41dde82124e6c2e2640ef2963fe4f6faf16f8e8b82e7dbaebfdec7b781f5455a",
"zh:51e9139cdc1386053c6834585139dc74d6fb7653a00b495377bc445b5e532218",
"zh:6ba6560bf23736a2a6e4c0899afd2c25cac6697d90cf2573449fe9b655f87920",
"zh:79c1fa8e3a8705eee73f171229ff47688deaff8468cdf28fddaafe5aef7e2d8d",
"zh:80b008ded1c71313c4f76e5569142e3a56b866f7693e57270d15f13fc7af1e14",
"zh:b0ebb1e83e8d999dc1d8feecf9c1e293cd61fe72271610284fdcce46d4a8a7ed",
"zh:bdaa786f0381ccd61404ea1835733e852e9747f1daf9a63bd4149073dbce85b6",
"zh:c67cd9e8d4880dfa6cbbd25aa7fcd9c07a76f4801180ac3988ff3f84ede6181f",
"zh:c8ee62dfd07d83dd362b8ba5f13a957e1ec8107b22ac168da4fa8470c4537a33",
"zh:cf7bdc5eac5df6cfc6ab5c7cafaba72b6bf5a155017e25edc6d9dc192bb6d2ed",
]
}

11
terraform/lke.tf Normal file
View File

@ -0,0 +1,11 @@
resource "linode_lke_cluster" "my-cluster" {
label = "video-cluster"
k8s_version = "1.21"
region = "us-central"
tags = ["staging"]
pool {
type = "g6-standard-2"
count = 3
}
}

22
terraform/terraform.tf Normal file
View File

@ -0,0 +1,22 @@
terraform {
required_version = "=1.0"
backend "s3" {
encrypt = true
bucket = "jamkazam-terraform"
region = "us-east-1"
key = "video.tfstate"
}
required_providers {
linode = {
source = "linode/linode"
}
}
}
provider "linode" {
}