From 3e9ba07f7dd6918bceec9bdae4035e82bdebf21f Mon Sep 17 00:00:00 2001 From: Jun Xiang Tee Date: Mon, 16 Jul 2018 18:35:54 -0700 Subject: [PATCH 1/4] only allow one Metacontroller instance be active at a time --- docs/_guide/install.md | 4 ++-- manifests/dev/args.yaml | 4 ++-- manifests/dev/image.yaml | 4 ++-- manifests/metacontroller.yaml | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/_guide/install.md b/docs/_guide/install.md index 055111c..c7e6a94 100644 --- a/docs/_guide/install.md +++ b/docs/_guide/install.md @@ -29,7 +29,7 @@ Replace `` and `` above based on the account you use to authentica ```sh # Create 'metacontroller' namespace, service account, and role/binding. kubectl apply -f {{ site.repo_raw }}/manifests/metacontroller-rbac.yaml -# Create CRDs for Metacontroller APIs, and the Metacontroller Deployment. +# Create CRDs for Metacontroller APIs, and the Metacontroller StatefulSet. kubectl apply -f {{ site.repo_raw }}/manifests/metacontroller.yaml ``` @@ -39,7 +39,7 @@ If you prefer to build and host your own images, please see the ## Configuration The Metacontroller server has a few settings that can be configured -with command-line flags (by editing the Metacontroller Deployment +with command-line flags (by editing the Metacontroller StatefulSet in `manifests/metacontroller.yaml`): | Flag | Description | diff --git a/manifests/dev/args.yaml b/manifests/dev/args.yaml index 2f2855e..ea9512e 100644 --- a/manifests/dev/args.yaml +++ b/manifests/dev/args.yaml @@ -1,6 +1,6 @@ # Override args for development mode. -apiVersion: apps/v1beta1 -kind: Deployment +apiVersion: apps/v1 +kind: StatefulSet metadata: name: metacontroller namespace: metacontroller diff --git a/manifests/dev/image.yaml b/manifests/dev/image.yaml index f235a21..e1f23e6 100644 --- a/manifests/dev/image.yaml +++ b/manifests/dev/image.yaml @@ -1,6 +1,6 @@ # Override image for development mode (skaffold fills in the tag). -apiVersion: apps/v1beta1 -kind: Deployment +apiVersion: apps/v1 +kind: StatefulSet metadata: name: metacontroller namespace: metacontroller diff --git a/manifests/metacontroller.yaml b/manifests/metacontroller.yaml index 1433792..d2a9ca3 100644 --- a/manifests/metacontroller.yaml +++ b/manifests/metacontroller.yaml @@ -43,8 +43,8 @@ spec: singular: controllerrevision kind: ControllerRevision --- -apiVersion: apps/v1beta1 -kind: Deployment +apiVersion: apps/v1 +kind: StatefulSet metadata: name: metacontroller namespace: metacontroller From 93fa0643803b2e0c66dffad81d7b27d83d11e76f Mon Sep 17 00:00:00 2001 From: Jun Xiang Tee Date: Tue, 17 Jul 2018 15:03:51 -0700 Subject: [PATCH 2/4] use apps/v1beta2 StatefulSet --- manifests/dev/args.yaml | 2 +- manifests/dev/image.yaml | 2 +- manifests/metacontroller.yaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/manifests/dev/args.yaml b/manifests/dev/args.yaml index ea9512e..d43be62 100644 --- a/manifests/dev/args.yaml +++ b/manifests/dev/args.yaml @@ -1,5 +1,5 @@ # Override args for development mode. -apiVersion: apps/v1 +apiVersion: apps/v1beta2 kind: StatefulSet metadata: name: metacontroller diff --git a/manifests/dev/image.yaml b/manifests/dev/image.yaml index e1f23e6..26e8521 100644 --- a/manifests/dev/image.yaml +++ b/manifests/dev/image.yaml @@ -1,5 +1,5 @@ # Override image for development mode (skaffold fills in the tag). -apiVersion: apps/v1 +apiVersion: apps/v1beta2 kind: StatefulSet metadata: name: metacontroller diff --git a/manifests/metacontroller.yaml b/manifests/metacontroller.yaml index d2a9ca3..76b1a20 100644 --- a/manifests/metacontroller.yaml +++ b/manifests/metacontroller.yaml @@ -43,7 +43,7 @@ spec: singular: controllerrevision kind: ControllerRevision --- -apiVersion: apps/v1 +apiVersion: apps/v1beta2 kind: StatefulSet metadata: name: metacontroller From a42a6c74d6bc4e56050a79a1545ffa1a1c67ad35 Mon Sep 17 00:00:00 2001 From: Jun Xiang Tee Date: Wed, 18 Jul 2018 17:02:03 -0700 Subject: [PATCH 3/4] changed and passed example smoke tests --- examples/bluegreen/test.sh | 8 +++++--- examples/catset/test.sh | 14 ++++++++------ examples/indexedjob/test.sh | 6 ++++-- manifests/dev/args.yaml | 1 + manifests/dev/image.yaml | 1 + manifests/metacontroller.yaml | 1 + 6 files changed, 20 insertions(+), 11 deletions(-) diff --git a/examples/bluegreen/test.sh b/examples/bluegreen/test.sh index 1013634..43691d9 100755 --- a/examples/bluegreen/test.sh +++ b/examples/bluegreen/test.sh @@ -12,12 +12,14 @@ trap cleanup EXIT set -ex +bgd="bluegreendeployments" + echo "Install controller..." kubectl create configmap bluegreen-controller -n metacontroller --from-file=sync.js kubectl apply -f bluegreen-controller.yaml echo "Wait until CRD is available..." -until kubectl get bgd; do sleep 1; done +until kubectl get $bgd; do sleep 1; done echo "Create an object..." kubectl apply -f my-bluegreen.yaml @@ -27,14 +29,14 @@ until [[ "$(kubectl get rs nginx-blue -o 'jsonpath={.status.readyReplicas}')" -e until [[ "$(kubectl get rs nginx-green -o 'jsonpath={.status.replicas}')" -eq 0 ]]; do sleep 1; done echo "Trigger a rollout..." -kubectl patch bgd nginx --type=merge -p '{"spec":{"template":{"metadata":{"labels":{"new":"label"}}}}}' +kubectl patch $bgd nginx --type=merge -p '{"spec":{"template":{"metadata":{"labels":{"new":"label"}}}}}' echo "Wait for nginx-green RS to be active..." until [[ "$(kubectl get rs nginx-green -o 'jsonpath={.status.readyReplicas}')" -eq 3 ]]; do sleep 1; done until [[ "$(kubectl get rs nginx-blue -o 'jsonpath={.status.replicas}')" -eq 0 ]]; do sleep 1; done echo "Trigger another rollout..." -kubectl patch bgd nginx --type=merge -p '{"spec":{"template":{"metadata":{"labels":{"new2":"label2"}}}}}' +kubectl patch $bgd nginx --type=merge -p '{"spec":{"template":{"metadata":{"labels":{"new2":"label2"}}}}}' echo "Wait for nginx-blue RS to be active..." until [[ "$(kubectl get rs nginx-blue -o 'jsonpath={.status.readyReplicas}')" -eq 3 ]]; do sleep 1; done diff --git a/examples/catset/test.sh b/examples/catset/test.sh index ede66b5..da9a59d 100755 --- a/examples/catset/test.sh +++ b/examples/catset/test.sh @@ -12,27 +12,29 @@ trap cleanup EXIT set -ex +cs="catsets" + echo "Install controller..." kubectl create configmap catset-controller -n metacontroller --from-file=sync.js kubectl apply -f catset-controller.yaml echo "Wait until CRD is available..." -until kubectl get catsets; do sleep 1; done +until kubectl get $cs; do sleep 1; done echo "Create an object..." kubectl apply -f my-catset.yaml echo "Wait for 3 Pods to be Ready..." -until [[ "$(kubectl get cs nginx-backend -o 'jsonpath={.status.readyReplicas}')" -eq 3 ]]; do sleep 1; done +until [[ "$(kubectl get $cs nginx-backend -o 'jsonpath={.status.readyReplicas}')" -eq 3 ]]; do sleep 1; done echo "Scale up to 4 replicas..." -kubectl patch catset nginx-backend --type=merge -p '{"spec":{"replicas":4}}' +kubectl patch $cs nginx-backend --type=merge -p '{"spec":{"replicas":4}}' echo "Wait for 4 Pods to be Ready..." -until [[ "$(kubectl get cs nginx-backend -o 'jsonpath={.status.readyReplicas}')" -eq 4 ]]; do sleep 1; done +until [[ "$(kubectl get $cs nginx-backend -o 'jsonpath={.status.readyReplicas}')" -eq 4 ]]; do sleep 1; done echo "Scale down to 2 replicas..." -kubectl patch catset nginx-backend --type=merge -p '{"spec":{"replicas":2}}' +kubectl patch $cs nginx-backend --type=merge -p '{"spec":{"replicas":2}}' echo "Wait for 2 Pods to be Ready..." -until [[ "$(kubectl get cs nginx-backend -o 'jsonpath={.status.readyReplicas}')" -eq 2 ]]; do sleep 1; done +until [[ "$(kubectl get $cs nginx-backend -o 'jsonpath={.status.readyReplicas}')" -eq 2 ]]; do sleep 1; done diff --git a/examples/indexedjob/test.sh b/examples/indexedjob/test.sh index e1d644f..935938e 100755 --- a/examples/indexedjob/test.sh +++ b/examples/indexedjob/test.sh @@ -12,18 +12,20 @@ trap cleanup EXIT set -ex +ij="indexedjobs" + echo "Install controller..." kubectl create configmap indexedjob-controller -n metacontroller --from-file=sync.py kubectl apply -f indexedjob-controller.yaml echo "Wait until CRD is available..." -until kubectl get indexedjobs; do sleep 1; done +until kubectl get $ij; do sleep 1; done echo "Create an object..." kubectl apply -f my-indexedjob.yaml echo "Wait for 10 successful completions..." -until [[ "$(kubectl get indexedjob print-index -o 'jsonpath={.status.succeeded}')" -eq 10 ]]; do sleep 1; done +until [[ "$(kubectl get $ij print-index -o 'jsonpath={.status.succeeded}')" -eq 10 ]]; do sleep 1; done echo "Check that correct index is printed..." if [[ "$(kubectl logs print-index-9)" != "9" ]]; then diff --git a/manifests/dev/args.yaml b/manifests/dev/args.yaml index d43be62..03c6255 100644 --- a/manifests/dev/args.yaml +++ b/manifests/dev/args.yaml @@ -5,6 +5,7 @@ metadata: name: metacontroller namespace: metacontroller spec: + serviceName: "" template: spec: containers: diff --git a/manifests/dev/image.yaml b/manifests/dev/image.yaml index 26e8521..8c3fecc 100644 --- a/manifests/dev/image.yaml +++ b/manifests/dev/image.yaml @@ -5,6 +5,7 @@ metadata: name: metacontroller namespace: metacontroller spec: + serviceName: "" template: spec: containers: diff --git a/manifests/metacontroller.yaml b/manifests/metacontroller.yaml index 76b1a20..ac98a03 100644 --- a/manifests/metacontroller.yaml +++ b/manifests/metacontroller.yaml @@ -55,6 +55,7 @@ spec: selector: matchLabels: app: metacontroller + serviceName: "" template: metadata: labels: From 89221934334c58231ab09d23a1da4a3d56055348 Mon Sep 17 00:00:00 2001 From: Jun Xiang Tee Date: Fri, 20 Jul 2018 15:45:46 -0700 Subject: [PATCH 4/4] remove redundant specification of service name --- manifests/dev/args.yaml | 1 - manifests/dev/image.yaml | 1 - 2 files changed, 2 deletions(-) diff --git a/manifests/dev/args.yaml b/manifests/dev/args.yaml index 03c6255..d43be62 100644 --- a/manifests/dev/args.yaml +++ b/manifests/dev/args.yaml @@ -5,7 +5,6 @@ metadata: name: metacontroller namespace: metacontroller spec: - serviceName: "" template: spec: containers: diff --git a/manifests/dev/image.yaml b/manifests/dev/image.yaml index 8c3fecc..26e8521 100644 --- a/manifests/dev/image.yaml +++ b/manifests/dev/image.yaml @@ -5,7 +5,6 @@ metadata: name: metacontroller namespace: metacontroller spec: - serviceName: "" template: spec: containers: