From 46b185766dca3aac80585e85eddd2d8d814c9c49 Mon Sep 17 00:00:00 2001 From: Emanuel Borsboom Date: Thu, 18 Feb 2016 06:38:43 -0800 Subject: [PATCH] Script deploy to multi-AZ Kube from CI --- .gitmodules | 3 +++ etc/build-deploy.sh | 8 +++++++ etc/common/devops-helpers | 1 + etc/docker/build.sh | 4 ++++ etc/docker/push.sh | 3 +++ etc/kubernetes/deploy_rc.sh | 7 ++++++ .../kubernetes/stackage-server-prod-rc.yaml | 23 ++----------------- etc/kubernetes/stackage-server-prod-svc.yaml | 19 +++++++++++++++ stack.yaml | 2 +- 9 files changed, 48 insertions(+), 22 deletions(-) create mode 100644 .gitmodules create mode 100755 etc/build-deploy.sh create mode 160000 etc/common/devops-helpers create mode 100755 etc/docker/build.sh create mode 100755 etc/docker/push.sh create mode 100755 etc/kubernetes/deploy_rc.sh rename stackage-server.yaml => etc/kubernetes/stackage-server-prod-rc.yaml (57%) create mode 100644 etc/kubernetes/stackage-server-prod-svc.yaml diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..e788dab --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "etc/common/devops-helpers"] + path = etc/common/devops-helpers + url = https://github.com/fpco/devops-helpers.git diff --git a/etc/build-deploy.sh b/etc/build-deploy.sh new file mode 100755 index 0000000..7dfc994 --- /dev/null +++ b/etc/build-deploy.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +set -xe +cd "$(dirname "${BASH_SOURCE[0]}")/.." +ENV="$1"; shift +stack --install-ghc test "$@" +etc/docker/build.sh --no-build "$@" +etc/docker/push.sh "$ENV" +etc/kubernetes/deploy_rc.sh "$ENV" diff --git a/etc/common/devops-helpers b/etc/common/devops-helpers new file mode 160000 index 0000000..0674691 --- /dev/null +++ b/etc/common/devops-helpers @@ -0,0 +1 @@ +Subproject commit 0674691287f5acb1d7eb8da3fcf67b0a8ea8d133 diff --git a/etc/docker/build.sh b/etc/docker/build.sh new file mode 100755 index 0000000..1b08ba1 --- /dev/null +++ b/etc/docker/build.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +set -xe +cd "$(dirname "${BASH_SOURCE[0]}")/../.." +stack image container "$@" diff --git a/etc/docker/push.sh b/etc/docker/push.sh new file mode 100755 index 0000000..c8c76c0 --- /dev/null +++ b/etc/docker/push.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +exec "$(dirname "${BASH_SOURCE[0]}")/../common/devops-helpers/docker/push_helper.sh" \ + --repo fpco/stackage-server "$@" diff --git a/etc/kubernetes/deploy_rc.sh b/etc/kubernetes/deploy_rc.sh new file mode 100755 index 0000000..e59bf44 --- /dev/null +++ b/etc/kubernetes/deploy_rc.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +exec "$(dirname ${BASH_SOURCE[0]})/../common/devops-helpers/kubernetes/deploy_rc_helper.sh" \ + --app "stackage-server" \ + --repo fpco/stackage-server \ + --specdir "$(dirname "${BASH_SOURCE[0]}")" \ + --clusters ~/.kube/clusters/fpco-prod-us-east-1?/kubeconfig \ + "$@" diff --git a/stackage-server.yaml b/etc/kubernetes/stackage-server-prod-rc.yaml similarity index 57% rename from stackage-server.yaml rename to etc/kubernetes/stackage-server-prod-rc.yaml index de8a7ad..a7e80da 100644 --- a/stackage-server.yaml +++ b/etc/kubernetes/stackage-server-prod-rc.yaml @@ -1,26 +1,6 @@ # Kubernetes --- apiVersion: v1 -kind: Service -metadata: - name: stackage-server-prod - labels: - app: stackage-server-prod -spec: - ports: - - name: http - port: 80 - nodePort: 31419 - targetPort: http - - name: https - port: 443 - nodePort: 30733 - targetPort: http - type: NodePort - selector: - app: stackage-server-prod ---- -apiVersion: v1 kind: ReplicationController metadata: name: stackage-server-prod-v0 @@ -34,7 +14,8 @@ spec: spec: containers: - name: stackage-server - image: snoyberg/stackage-server:latest + image: fpco/stackage-server:prod + imagePullPolicy: Always ports: - name: http containerPort: 3000 diff --git a/etc/kubernetes/stackage-server-prod-svc.yaml b/etc/kubernetes/stackage-server-prod-svc.yaml new file mode 100644 index 0000000..4fd8890 --- /dev/null +++ b/etc/kubernetes/stackage-server-prod-svc.yaml @@ -0,0 +1,19 @@ +# Kubernetes +--- +apiVersion: v1 +kind: Service +metadata: + name: stackage-server-prod + labels: + app: stackage-server-prod +spec: + ports: + - name: http + port: 80 + targetPort: http + - name: https + port: 443 + targetPort: http + type: ClusterIP + selector: + app: stackage-server-prod diff --git a/stack.yaml b/stack.yaml index 7124ff4..55136c4 100644 --- a/stack.yaml +++ b/stack.yaml @@ -1,7 +1,7 @@ resolver: lts-5.1 image: container: - name: snoyberg/stackage-server + name: fpco/stackage-server base: fpco/stack-run add: config: /app/config