Skip to content

Commit

Permalink
Expanded upgrade test (#1652)
Browse files Browse the repository at this point in the history
* Expanded upgrade test
** Install KUDO 0.11.1
** Install a simple operator with a version 0.1.0
** Upgrade KUDO current version
** Upgrade the operator to a version 0.2.0
** Uninstall KUDO with kudo init --upgrade --dry-run --output yaml | kubectl delete -f -

Signed-off-by: Andreas Neumann <aneumann@mesosphere.com>
  • Loading branch information
ANeumann82 committed Aug 25, 2020
1 parent b8f7233 commit 9e56ebc
Show file tree
Hide file tree
Showing 18 changed files with 198 additions and 16 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -68,3 +68,4 @@ tags
[._]*.un~
kubeconfig
.kube
/test/upgrade/upgrade-to-current/old-kudo
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ lint: ## Run golangci-lint
ifneq (${GOLANGCI_LINT_VER}, "$(shell golangci-lint --version 2>/dev/null | cut -b 27-32)")
./hack/install-golangcilint.sh
endif
golangci-lint --timeout 3m run
golangci-lint --timeout 3m run --allow-parallel-runners

.PHONY: download
download:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ apiVersion: kudo.dev/v1beta1
kind: TestStep
commands:
- command: ./download-kudo.sh 0.11.1
- command: ./kubectl-kudo init
- command: ./old-kudo init
25 changes: 15 additions & 10 deletions test/upgrade/upgrade-to-current/01-assert.yaml
Original file line number Diff line number Diff line change
@@ -1,13 +1,18 @@
apiVersion: kudo.dev/v1beta1
kind: Instance
metadata:
name: simple-op
spec:
operatorVersion:
name: simple-op-0.1.0
status:
planStatus:
deploy:
status: COMPLETE
---
apiVersion: apps/v1
kind: StatefulSet
kind: Deployment
metadata:
labels:
app: kudo-manager
control-plane: controller-manager
name: kudo-controller-manager
namespace: kudo-system
name: nginx-deployment
spec:
template:
spec:
containers:
- image: kudobuilder/controller:test
replicas: 2
5 changes: 5 additions & 0 deletions test/upgrade/upgrade-to-current/01-install-operator.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
apiVersion: kudo.dev/v1beta1
kind: TestStep
commands:
- command: ./old-kudo install --instance simple-op ./simple-op-0.1.0
namespaced: true
13 changes: 13 additions & 0 deletions test/upgrade/upgrade-to-current/02-assert.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
apiVersion: apps/v1
kind: StatefulSet
metadata:
labels:
app: kudo-manager
control-plane: controller-manager
name: kudo-controller-manager
namespace: kudo-system
spec:
template:
spec:
containers:
- image: kudobuilder/controller:test
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
apiVersion: kudo.dev/v1beta1
kind: TestStep
commands:
- command: kubectl kudo init -v 4 --upgrade --kudo-image kudobuilder/controller:test --kudo-image-pull-policy IfNotPresent --unsafe-self-signed-webhook-ca
- command: kubectl kudo init -v 4 --upgrade --kudo-image kudobuilder/controller:test --kudo-image-pull-policy IfNotPresent --unsafe-self-signed-webhook-ca --wait
22 changes: 22 additions & 0 deletions test/upgrade/upgrade-to-current/03-assert.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
apiVersion: kudo.dev/v1beta1
kind: Instance
metadata:
name: simple-op
spec:
operatorVersion:
name: simple-op-0.2.0
status:
planStatus:
deploy:
status: COMPLETE
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 1
template:
metadata:
labels:
fixedLabel: fixedvalue
5 changes: 5 additions & 0 deletions test/upgrade/upgrade-to-current/03-upgrade-operator.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
apiVersion: kudo.dev/v1beta1
kind: TestStep
commands:
- command: kubectl kudo upgrade ./simple-op-0.2.0 --instance simple-op -p replicas=1 -p unchangeable=fixedvalue
namespaced: true
26 changes: 26 additions & 0 deletions test/upgrade/upgrade-to-current/99-errors.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: instances.kudo.dev
spec:
group: kudo.dev
names:
kind: Instance
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: operators.kudo.dev
spec:
group: kudo.dev
names:
kind: Operator
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: operatorversions.kudo.dev
spec:
group: kudo.dev
names:
kind: OperatorVersion
4 changes: 4 additions & 0 deletions test/upgrade/upgrade-to-current/99-remove-kudo.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
apiVersion: kudo.dev/v1beta1
kind: TestStep
commands:
- script: kubectl kudo init --upgrade --kudo-image kudobuilder/controller:test --kudo-image-pull-policy IfNotPresent --unsafe-self-signed-webhook-ca --dry-run --output yaml | tee output.log | kubectl delete -f -
6 changes: 3 additions & 3 deletions test/upgrade/upgrade-to-current/download-kudo.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ echo "Downloading KUDO v${PREV_KUDO_VERSION}"

# Download previous KUDO version for upgrade testing
if [[ "$(uname)" == "Darwin" ]]; then
curl -L https://github.com/kudobuilder/kudo/releases/download/v${PREV_KUDO_VERSION}/kubectl-kudo_${PREV_KUDO_VERSION}_darwin_x86_64 --output kubectl-kudo
curl -L https://github.com/kudobuilder/kudo/releases/download/v${PREV_KUDO_VERSION}/kubectl-kudo_${PREV_KUDO_VERSION}_darwin_x86_64 --output old-kudo
elif [[ "$(expr substr $(uname -s) 1 5)" == "Linux" ]]; then
curl -L https://github.com/kudobuilder/kudo/releases/download/v${PREV_KUDO_VERSION}/kubectl-kudo_${PREV_KUDO_VERSION}_linux_x86_64 --output kubectl-kudo
curl -L https://github.com/kudobuilder/kudo/releases/download/v${PREV_KUDO_VERSION}/kubectl-kudo_${PREV_KUDO_VERSION}_linux_x86_64 --output old-kudo
fi

chmod +x kubectl-kudo
chmod +x old-kudo
24 changes: 24 additions & 0 deletions test/upgrade/upgrade-to-current/simple-op-0.1.0/operator.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
apiVersion: kudo.dev/v1beta1
name: "simple-op"
operatorVersion: "0.1.0"
kubernetesVersion: 1.13.0
maintainers:
- name: Your name
email: <your@email.com>
url: https://kudo.dev
tasks:
- name: app
kind: Apply
spec:
resources:
- deployment.yaml
plans:
deploy:
strategy: serial
phases:
- name: main
strategy: parallel
steps:
- name: everything
tasks:
- app
5 changes: 5 additions & 0 deletions test/upgrade/upgrade-to-current/simple-op-0.1.0/params.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
apiVersion: kudo.dev/v1beta1
parameters:
- name: replicas
description: Number of replicas that should be run as part of the deployment
default: 2
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: {{ .Params.replicas }} # tells deployment to run 2 pods matching the template
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
24 changes: 24 additions & 0 deletions test/upgrade/upgrade-to-current/simple-op-0.2.0/operator.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
apiVersion: kudo.dev/v1beta1
name: "simple-op"
operatorVersion: "0.2.0"
kubernetesVersion: 1.15.0
maintainers:
- name: Your name
email: <your@email.com>
url: https://kudo.dev
tasks:
- name: app
kind: Apply
spec:
resources:
- deployment.yaml
plans:
deploy:
strategy: serial
phases:
- name: main
strategy: parallel
steps:
- name: everything
tasks:
- app
9 changes: 9 additions & 0 deletions test/upgrade/upgrade-to-current/simple-op-0.2.0/params.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
apiVersion: kudo.dev/v1beta1
parameters:
- name: replicas
description: Number of replicas that should be run as part of the deployment
default: 2
- name: unchangeable
description: An unchangeable parameter
required: true
immutable: true
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: {{ .Params.replicas }} # tells deployment to run 2 pods matching the template
template:
metadata:
labels:
app: nginx
fixedLabel: {{ .Params.unchangeable }}
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80

0 comments on commit 9e56ebc

Please sign in to comment.