From 880a9e4255d1eaf7aa5d68c9bd9fbcb4af25d24d Mon Sep 17 00:00:00 2001 From: Victor Barba Martin Date: Tue, 9 Nov 2021 14:33:17 +0100 Subject: [PATCH] add webrtc be --- bitbucket-pipelines.yml | 10 +++++----- k8s/applications/webrtc-be.yaml | 26 ++++++++++++++++++++++++++ k8s/webrtc-be/deployment.yml | 25 +++++++++++++++++++++++++ k8s/webrtc-be/gcr-secret.yml | 8 ++++++++ k8s/webrtc-be/ingress.yaml | 26 ++++++++++++++++++++++++++ 5 files changed, 90 insertions(+), 5 deletions(-) create mode 100644 k8s/applications/webrtc-be.yaml create mode 100644 k8s/webrtc-be/deployment.yml create mode 100644 k8s/webrtc-be/gcr-secret.yml create mode 100644 k8s/webrtc-be/ingress.yaml diff --git a/bitbucket-pipelines.yml b/bitbucket-pipelines.yml index 7ed0893..07e26cb 100644 --- a/bitbucket-pipelines.yml +++ b/bitbucket-pipelines.yml @@ -87,11 +87,11 @@ pipelines: # - step: Deploy GCR credentials - # kubectl create secret docker-registry gcr-json-key \ - # --docker-server=gcr.io \ - # --docker-username=_json_key \ - # --docker-password="$(cat k8s/gcp.json)" \ - # --docker-email=any@valid.email +# kubectl create secret docker-registry gcr-json-key \ +# --docker-server=gcr.io \ +# --docker-username=_json_key \ +# --docker-password="$(cat k8s/gcp.json)" \ +# --docker-email=any@valid.email # kubectl patch serviceaccount default \ # -p '{"imagePullSecrets": [{"name": "gcr-json-key"}]}' diff --git a/k8s/applications/webrtc-be.yaml b/k8s/applications/webrtc-be.yaml new file mode 100644 index 0000000..5bb6974 --- /dev/null +++ b/k8s/applications/webrtc-be.yaml @@ -0,0 +1,26 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: webrtc-be +spec: + destination: + name: '' + namespace: webrtc-be + server: 'https://kubernetes.default.svc' + source: + path: k8s/webrtc-be + repoURL: 'git@bitbucket.org:jamkazam/video-iac.git' + targetRevision: HEAD + project: default + syncPolicy: + syncOptions: + - CreateNamespace=true + automated: + prune: true + allowEmpty: false + retry: + limit: 5 + backoff: + duration: 5s + factor: 2 + maxDuration: 3m \ No newline at end of file diff --git a/k8s/webrtc-be/deployment.yml b/k8s/webrtc-be/deployment.yml new file mode 100644 index 0000000..c52e5e9 --- /dev/null +++ b/k8s/webrtc-be/deployment.yml @@ -0,0 +1,25 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: webrtc-be-deployment + labels: + app: webrtc-be +spec: + selector: + matchLabels: + app: webrtc-be + replicas: 1 + template: + metadata: + labels: + app: webrtc-be + spec: + hostNetwork: true + imagePullSecrets: + - name: gcr-json-key + containers: + - name: webrtc-be + image: gcr.io/tough-craft-276813/webrtc_be:prod-0.1.83 + ports: + - containerPort: 80 + name: http diff --git a/k8s/webrtc-be/gcr-secret.yml b/k8s/webrtc-be/gcr-secret.yml new file mode 100644 index 0000000..6100db8 --- /dev/null +++ b/k8s/webrtc-be/gcr-secret.yml @@ -0,0 +1,8 @@ +apiVersion: v1 +data: + .dockerconfigjson: eyJhdXRocyI6eyJnY3IuaW8iOnsidXNlcm5hbWUiOiJfanNvbl9rZXkiLCJwYXNzd29yZCI6IntcbiAgXCJ0eXBlXCI6IFwic2VydmljZV9hY2NvdW50XCIsXG4gIFwicHJvamVjdF9pZFwiOiBcInRvdWdoLWNyYWZ0LTI3NjgxM1wiLFxuICBcInByaXZhdGVfa2V5X2lkXCI6IFwiYTgwOTJiMzliNGViMzkxZThiMWU4YWNlODZkNWM0NjNlMDQ5ZTcxMVwiLFxuICBcInByaXZhdGVfa2V5XCI6IFwiLS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tXFxuTUlJRXZnSUJBREFOQmdrcWhraUc5dzBCQVFFRkFBU0NCS2d3Z2dTa0FnRUFBb0lCQVFDeTE4eGgrSDZ2SDRxSlxcbnMweDdzeW84cksrZEVneS8yNGRVVHFQYjU0S2ZCbXRYUGRLdUdDVC9ac29XQVBxUmhwbWJZWWUxUG85d05lNkVcXG5Yc3RWQ3ZGcTVldjJvbEpGemF1eTI0VUk2YldhWGtRWC9PSFhMaG8vcm4vRUpQZGN3QkJRWjZtdHJ2K3JnTFdRXFxuaGlBSEZNZWFRU2Z3R3JYZU5uS1d1VC9QbEptRHZsaU9SanptOTRyOWZ5d3poQXJKcS9sRk5oMEpXTFRIZnpWVFxcbjZuaEhJck9DUSs2SUFzelZlclU2RzdWZlRBS29FYUZTMU9lTEZ3bFV5aHdjM1NQbTdjZUx4QnF6MjVBUG8zcUFcXG5aRll5ZkxlNDNYYm1LdzFndGEvUW5wblBVdHAzV3JtN3NrOXh5L21hTHg2eGFnVmFVc0dMTmpXblpDamFQVGt3XFxucGU3RkhVNVhBZ01CQUFFQ2dnRUFEQlA2MzVyeW8wMFVCQnl4eTZEYjkyRUtNeWRtNlFZZ2E1Y3NCY3ZxekdhWVxcbmxUbTlvcmhLdDF6dnhQQ24rM0FGcTdLNGdZc0tFTi96amNrQkhtc3d4ckZrY0RHaU1NaWxFZDAxYk5hcnh4TWFcXG5zaXdIN0lwV2gzcDNjbjIwbnZUeHBSeDdIeG0wZHBhb3JHd0NlYmZ6aXYxZmZ4MnVycVVxcy9jcTBoQU5GaEtGXFxuN2JOWWlUWTYvOVp3V3Zjb3JwZXU1OVVnSmF0MmYxMithUlVqajNJdTQ1OVVsUnM2SWhmWFcyY1doTVZIVnlsRlxcbmc1MDBpN3NMckJMQWxxR3E4SG5Ia0hVY0I2c1ducldNQlEzd3lxY0VuT1JqVkkwT3VtYXoxdHBoUEVteEJ5MW5cXG4xMmFyS3JRM043SWlqNm1HL0VYOUhhN0ozdGJGZ2I1WjlYbjNFT2JFQVFLQmdRRFhCcW0rSE1FaDM1QzdKeDdsXFxuaEtkd1J4ODdMaG1CZ0RmR1N4ck5WMEQvTzhBRlRQSXVTRE5lWWk0NzNBdlVqc21uZDZ0UXZ0TkZENnY4VTE2a1xcblJTd3J3QXIxZU00YjhDSVorbm5NS3QwYWg5NkU4VHlPQmRwNVhmczE4TTRaTDl5ZGRPcFZySVZsRGlRQkl1SFJcXG5aS3ZZdmtseHl4aTVVdDZVdGNOa0tTbDlWd0tCZ1FEVTdCQkcvL1dlR0M0TjhlNjFweGZoK29CaU54NlJvQnQ4XFxuKytHUG1rc1J3WllQbkhxQ3RsaTVHWDRVVFFJclRBZUF6Yk96cWU1dDZHN3lQcW5KcUtmUFFuelpFWFZ1N2Q1MVxcbkZGSVU3V0FJVVBzN0F5TktEc1dSRFE3M3EzTTJFTjNWcWp5TVg2RHVVZVRQZkFTakk4Q0NqdTBGdER0enFkbStcXG5TV0RWTERjWEFRS0JnRlJFMURraFk3ODJzcTNtQXdISUh5YXRlTnZra1RKallYaGc3cndTdWZKTkpFL3ZlK29QXFxuZWJJL29BYnRrZVZYb0VmMWFqcFd6czE5K3RVRWgwNnhuVUg0SFZOZWFNZ2lML3NtWXAxVkh4bktyYlpFSklzMFxcbldBN0FlamNGakgvcWRmZHZYbmI5Q2JvMDlIOU5nRnBqcmNWZnJjRGU2MjJWd0kxZlBwZitXYmc1QW9HQkFJcW9cXG52S1R3RlUwQ1pDT1N0U2k1Q3pXUHc4R3lNWWNXWkRCTmZBUGZzQmw5SHpORmJRYm9wdmpMNEM1cVJBcGNOZHFzXFxubXVWYXVibjdqeHpVc0E5eWRPM2xWNWFvNXZmNWtsQmVqbUd3Z0VTS01FR3E5blZKRDJJNXhkQ0daNzRDMStSSVxcbk82d1NycVBrMHdSSHVHRmhiQUhhQUFNaDcwR1FrQXQ2ajhQalNuRUJBb0dCQUswNFY4ZlhQYkNCeExvUmZNYlRcXG5CamV1dFdhZDM2b1REdXZMb0lzTVJNMXZDRjFveHBMK2o0KzcraGJ1cFEvVU1jTHZQTjlSbXdnSlRqeE9QTjViXFxuVGh3VW42VUhmTldsYjBwUXJ3NzY0Z01WKzNFWmdiRXp4N3BBaThRTkVZNWdMTDBRZC8zNGVJbTFleEh1UEp0TVxcbitNTGJKRGR5SjNQRVpMOVlPQjF1S3lDNlxcbi0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS1cXG5cIixcbiAgXCJjbGllbnRfZW1haWxcIjogXCJhbnNpYmxlLXNhQHRvdWdoLWNyYWZ0LTI3NjgxMy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbVwiLFxuICBcImNsaWVudF9pZFwiOiBcIjEwNDMzNDg3MjExNTQwNjgwNTcxOVwiLFxuICBcImF1dGhfdXJpXCI6IFwiaHR0cHM6Ly9hY2NvdW50cy5nb29nbGUuY29tL28vb2F1dGgyL2F1dGhcIixcbiAgXCJ0b2tlbl91cmlcIjogXCJodHRwczovL29hdXRoMi5nb29nbGVhcGlzLmNvbS90b2tlblwiLFxuICBcImF1dGhfcHJvdmlkZXJfeDUwOV9jZXJ0X3VybFwiOiBcImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL29hdXRoMi92MS9jZXJ0c1wiLFxuICBcImNsaWVudF94NTA5X2NlcnRfdXJsXCI6IFwiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vcm9ib3QvdjEvbWV0YWRhdGEveDUwOS9hbnNpYmxlLXNhJTQwdG91Z2gtY3JhZnQtMjc2ODEzLmlhbS5nc2VydmljZWFjY291bnQuY29tXCJcbn0iLCJlbWFpbCI6ImFueUB2YWxpZC5lbWFpbCIsImF1dGgiOiJYMnB6YjI1ZmEyVjVPbnNLSUNBaWRIbHdaU0k2SUNKelpYSjJhV05sWDJGalkyOTFiblFpTEFvZ0lDSndjbTlxWldOMFgybGtJam9nSW5SdmRXZG9MV055WVdaMExUSTNOamd4TXlJc0NpQWdJbkJ5YVhaaGRHVmZhMlY1WDJsa0lqb2dJbUU0TURreVlqTTVZalJsWWpNNU1XVTRZakZsT0dGalpUZzJaRFZqTkRZelpUQTBPV1UzTVRFaUxBb2dJQ0p3Y21sMllYUmxYMnRsZVNJNklDSXRMUzB0TFVKRlIwbE9JRkJTU1ZaQlZFVWdTMFZaTFMwdExTMWNiazFKU1VWMlowbENRVVJCVGtKbmEzRm9hMmxIT1hjd1FrRlJSVVpCUVZORFFrdG5kMmRuVTJ0QlowVkJRVzlKUWtGUlEza3hPSGhvSzBnMmRrZzBjVXBjYm5Nd2VEZHplVzg0Y2tzclpFVm5lUzh5TkdSVlZIRlFZalUwUzJaQ2JYUllVR1JMZFVkRFZDOWFjMjlYUVZCeFVtaHdiV0paV1dVeFVHODVkMDVsTmtWY2JsaHpkRlpEZGtaeE5XVjJNbTlzU2taNllYVjVNalJWU1RaaVYyRllhMUZZTDA5SVdFeG9ieTl5Ymk5RlNsQmtZM2RDUWxGYU5tMTBjbllyY21kTVYxRmNibWhwUVVoR1RXVmhVVk5tZDBkeVdHVk9ia3RYZFZRdlVHeEtiVVIyYkdsUFVtcDZiVGswY2psbWVYZDZhRUZ5U25FdmJFWk9hREJLVjB4VVNHWjZWbFJjYmpadWFFaEpjazlEVVNzMlNVRnplbFpsY2xVMlJ6ZFdabFJCUzI5RllVWlRNVTlsVEVaM2JGVjVhSGRqTTFOUWJUZGpaVXg0UW5GNk1qVkJVRzh6Y1VGY2JscEdXWGxtVEdVME0xaGliVXQzTVdkMFlTOVJibkJ1VUZWMGNETlhjbTAzYzJzNWVIa3ZiV0ZNZURaNFlXZFdZVlZ6UjB4T2FsZHVXa05xWVZCVWEzZGNibkJsTjBaSVZUVllRV2ROUWtGQlJVTm5aMFZCUkVKUU5qTTFjbmx2TURCVlFrSjVlSGsyUkdJNU1rVkxUWGxrYlRaUldXZGhOV056UW1OMmNYcEhZVmxjYm14VWJUbHZjbWhMZERGNmRuaFFRMjRyTTBGR2NUZExOR2RaYzB0RlRpOTZhbU5yUWtodGMzZDRja1pyWTBSSGFVMU5hV3hGWkRBeFlrNWhjbmg0VFdGY2JuTnBkMGczU1hCWGFETndNMk51TWpCdWRsUjRjRko0TjBoNGJUQmtjR0Z2Y2tkM1EyVmlabnBwZGpGbVpuZ3lkWEp4VlhGekwyTnhNR2hCVGtab1MwWmNiamRpVGxscFZGazJMemxhZDFkMlkyOXljR1YxTlRsVlowcGhkREptTVRJcllWSlZhbW96U1hVME5UbFZiRkp6Tmtsb1psaFhNbU5YYUUxV1NGWjViRVpjYm1jMU1EQnBOM05NY2tKTVFXeHhSM0U0U0c1SWEwaFZZMEkyYzFkdWNsZE5RbEV6ZDNseFkwVnVUMUpxVmtrd1QzVnRZWG94ZEhCb1VFVnRlRUo1TVc1Y2JqRXlZWEpMY2xFelRqZEphV28yYlVjdlJWZzVTR0UzU2pOMFlrWm5ZalZhT1ZodU0wVlBZa1ZCVVV0Q1oxRkVXRUp4YlN0SVRVVm9NelZETjBwNE4yeGNibWhMWkhkU2VEZzNUR2h0UW1kRVprZFRlSEpPVmpCRUwwODRRVVpVVUVsMVUwUk9aVmxwTkRjelFYWlZhbk50Ym1RMmRGRjJkRTVHUkRaMk9GVXhObXRjYmxKVGQzSjNRWEl4WlUwMFlqaERTVm9yYm01TlMzUXdZV2c1TmtVNFZIbFBRbVJ3TlZobWN6RTRUVFJhVERsNVpHUlBjRlp5U1Zac1JHbFJRa2wxU0ZKY2JscExkbGwyYTJ4NGVYaHBOVlYwTmxWMFkwNXJTMU5zT1ZaM1MwSm5VVVJWTjBKQ1J5OHZWMlZIUXpST09HVTJNWEI0Wm1ncmIwSnBUbmcyVW05Q2REaGNiaXNyUjFCdGEzTlNkMXBaVUc1SWNVTjBiR2sxUjFnMFZWUlJTWEpVUVdWQmVtSlBlbkZsTlhRMlJ6ZDVVSEZ1U25GTFpsQlJibnBhUlZoV2RUZGtOVEZjYmtaR1NWVTNWMEZKVlZCek4wRjVUa3RFYzFkU1JGRTNNM0V6VFRKRlRqTldjV3A1VFZnMlJIVlZaVlJRWmtGVGFrazRRME5xZFRCR2RFUjBlbkZrYlN0Y2JsTlhSRlpNUkdOWVFWRkxRbWRHVWtVeFJHdG9XVGM0TW5OeE0yMUJkMGhKU0hsaGRHVk9kbXRyVkVwcVdWaG9aemR5ZDFOMVprcE9Ta1V2ZG1VcmIxQmNibVZpU1M5dlFXSjBhMlZXV0c5RlpqRmhhbkJYZW5NeE9TdDBWVVZvTURaNGJsVklORWhXVG1WaFRXZHBUQzl6YlZsd01WWkllRzVMY21KYVJVcEpjekJjYmxkQk4wRmxhbU5HYWtndmNXUm1aSFpZYm1JNVEySnZNRGxJT1U1blJuQnFjbU5XWm5KalJHVTJNakpXZDBreFpsQndaaXRYWW1jMVFXOUhRa0ZKY1c5Y2JuWkxWSGRHVlRCRFdrTlBVM1JUYVRWRGVsZFFkemhIZVUxWlkxZGFSRUpPWmtGUVpuTkNiRGxJZWs1R1lsRmliM0IyYWt3MFF6VnhVa0Z3WTA1a2NYTmNibTExVm1GMVltNDNhbmg2VlhOQk9YbGtUek5zVmpWaGJ6VjJaalZyYkVKbGFtMUhkMmRGVTB0TlJVZHhPVzVXU2tReVNUVjRaRU5IV2pjMFF6RXJVa2xjYms4MmQxTnljVkJyTUhkU1NIVkhSbWhpUVVoaFFVRk5hRGN3UjFGclFYUTJhamhRYWxOdVJVSkJiMGRDUVVzd05GWTRabGhRWWtOQ2VFeHZVbVpOWWxSY2JrSnFaWFYwVjJGa016WnZWRVIxZGt4dlNYTk5VazB4ZGtOR01XOTRjRXdyYWpRck55dG9ZblZ3VVM5VlRXTk1kbEJPT1ZKdGQyZEtWR3A0VDFCT05XSmNibFJvZDFWdU5sVklaazVYYkdJd2NGRnlkemMyTkdkTlZpc3pSVnBuWWtWNmVEZHdRV2s0VVU1RldUVm5URXd3VVdRdk16UmxTVzB4WlhoSWRWQktkRTFjYml0TlRHSktSR1I1U2pOUVJWcE1PVmxQUWpGMVMzbERObHh1TFMwdExTMUZUa1FnVUZKSlZrRlVSU0JMUlZrdExTMHRMVnh1SWl3S0lDQWlZMnhwWlc1MFgyVnRZV2xzSWpvZ0ltRnVjMmxpYkdVdGMyRkFkRzkxWjJndFkzSmhablF0TWpjMk9ERXpMbWxoYlM1bmMyVnlkbWxqWldGalkyOTFiblF1WTI5dElpd0tJQ0FpWTJ4cFpXNTBYMmxrSWpvZ0lqRXdORE16TkRnM01qRXhOVFF3Tmpnd05UY3hPU0lzQ2lBZ0ltRjFkR2hmZFhKcElqb2dJbWgwZEhCek9pOHZZV05qYjNWdWRITXVaMjl2WjJ4bExtTnZiUzl2TDI5aGRYUm9NaTloZFhSb0lpd0tJQ0FpZEc5clpXNWZkWEpwSWpvZ0ltaDBkSEJ6T2k4dmIyRjFkR2d5TG1kdmIyZHNaV0Z3YVhNdVkyOXRMM1J2YTJWdUlpd0tJQ0FpWVhWMGFGOXdjbTkyYVdSbGNsOTROVEE1WDJObGNuUmZkWEpzSWpvZ0ltaDBkSEJ6T2k4dmQzZDNMbWR2YjJkc1pXRndhWE11WTI5dEwyOWhkWFJvTWk5Mk1TOWpaWEowY3lJc0NpQWdJbU5zYVdWdWRGOTROVEE1WDJObGNuUmZkWEpzSWpvZ0ltaDBkSEJ6T2k4dmQzZDNMbWR2YjJkc1pXRndhWE11WTI5dEwzSnZZbTkwTDNZeEwyMWxkR0ZrWVhSaEwzZzFNRGt2WVc1emFXSnNaUzF6WVNVME1IUnZkV2RvTFdOeVlXWjBMVEkzTmpneE15NXBZVzB1WjNObGNuWnBZMlZoWTJOdmRXNTBMbU52YlNJS2ZRPT0ifX19 +kind: Secret +metadata: + name: gcr-json-key + namespace: coturn +type: kubernetes.io/dockerconfigjson \ No newline at end of file diff --git a/k8s/webrtc-be/ingress.yaml b/k8s/webrtc-be/ingress.yaml new file mode 100644 index 0000000..52d8139 --- /dev/null +++ b/k8s/webrtc-be/ingress.yaml @@ -0,0 +1,26 @@ +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-haproxy-production + ingress.kubernetes.io/config-backend: | + balance url_param session_id + timeout connect 1s + timeout queue 5s + timeout server 3600s + name: webrtc-be +spec: + rules: + - host: &host webrtc-be.staging.video.jamkazam.com + http: + paths: + - backend: + serviceName: webrtc-be-service + servicePort: 80 + path: / + tls: + - secretName: webrtc-be + hosts: + - *host \ No newline at end of file