Merge pull request #438 from weaveworks/e2e-updates

Update e2e tests and docs
This commit is contained in:
Stefan Prodan
2020-02-13 18:14:36 +02:00
committed by GitHub
11 changed files with 36 additions and 47 deletions
@@ -1,13 +1,10 @@
# Flagger install on Kubernetes
This guide walks you through setting up Flagger on a Kubernetes cluster with Helm or Kustomize.
This guide walks you through setting up Flagger on a Kubernetes cluster with Helm v3 or Kustomize.
### Prerequisites
Flagger requires a Kubernetes cluster **v1.11** or newer with the following admission controllers enabled:
* MutatingAdmissionWebhook
* ValidatingAdmissionWebhook
Flagger requires a Kubernetes cluster **v1.11** or newer.
### Install Flagger with Helm
@@ -75,25 +72,24 @@ helm upgrade -i flagger flagger/flagger \
--set msteams.url=https://outlook.office.com/webhook/YOUR/TEAMS/WEBHOOK
```
If you don't have Tiller you can use the helm template command and apply the generated yaml with kubectl:
You can use the helm template command and apply the generated yaml with kubectl:
```bash
# generate
helm fetch --untar --untardir . flagger/flagger &&
helm template flagger \
--name flagger \
helm template flagger ./flagger \
--namespace=istio-system \
--set metricsServer=http://prometheus.istio-system:9090 \
> $HOME/flagger.yaml
> flagger.yaml
# apply
kubectl apply -f $HOME/flagger.yaml
kubectl apply -f flagger.yaml
```
To uninstall the Flagger release with Helm run:
```text
helm delete --purge flagger
helm delete flagger
```
The command removes all the Kubernetes components associated with the chart and deletes the release.
@@ -127,13 +123,12 @@ Or use helm template command and apply the generated yaml with kubectl:
```bash
# generate
helm fetch --untar --untardir . flagger/grafana &&
helm template grafana \
--name flagger-grafana \
helm template flagger-grafana ./grafana \
--namespace=istio-system \
> $HOME/flagger-grafana.yaml
> flagger-grafana.yaml
# apply
kubectl apply -f $HOME/flagger-grafana.yaml
kubectl apply -f flagger-grafana.yaml
```
You can access Grafana using port forwarding:
@@ -6,13 +6,13 @@ This guide shows you how to use the [Gloo](https://gloo.solo.io/) ingress contro
### Prerequisites
Flagger requires a Kubernetes cluster **v1.11** or newer and Gloo ingress **0.13.29** or newer.
Flagger requires a Kubernetes cluster **v1.11** or newer and Gloo ingress **1.3.5** or newer.
Install Gloo with Helm:
Install Gloo with Helm v3:
```bash
helm repo add gloo https://storage.googleapis.com/solo-public-helm
kubectl create ns gloo-system
helm upgrade -i gloo gloo/gloo \
--namespace gloo-system
```
@@ -76,10 +76,9 @@ spec:
virtualHost:
domains:
- 'app.example.com'
name: podinfo.test
routes:
- matcher:
prefix: /
- matchers:
- prefix: /
routeAction:
upstreamGroup:
name: podinfo
@@ -112,9 +111,6 @@ spec:
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
name: podinfo
# the maximum time in seconds for the canary deployment
# to make progress before it is rollback (default 600s)
progressDeadlineSeconds: 60
service:
# ClusterIP port number
port: 9898
@@ -143,7 +139,7 @@ spec:
# milliseconds
threshold: 500
interval: 30s
# testing (optinal)
# testing (optional)
webhooks:
- name: acceptance-test
type: pre-rollout
@@ -157,7 +153,7 @@ spec:
timeout: 5s
metadata:
type: cmd
cmd: "hey -z 2m -q 5 -c 2 -host app.example.com http://gateway-proxy-v2.gloo-system"
cmd: "hey -z 2m -q 5 -c 2 -host app.example.com http://gateway-proxy.gloo-system"
```
Save the above resource as podinfo-canary.yaml and then apply it:
@@ -348,7 +344,7 @@ podinfod=stefanprodan/podinfo:3.1.3
Generate 404s:
```bash
watch curl -H 'Host: app.example.com' http://gateway-proxy-v2.gloo-system/status/400
watch curl -H 'Host: app.example.com' http://gateway-proxy.gloo-system/status/400
```
Watch Flagger logs:
@@ -8,9 +8,10 @@ This guide shows you how to use the NGINX ingress controller and Flagger to auto
Flagger requires a Kubernetes cluster **v1.11** or newer and NGINX ingress **0.24** or newer.
Install NGINX with Helm:
Install NGINX with Helm v3:
```bash
kubectl create ns ingress-nginx
helm upgrade -i nginx-ingress stable/nginx-ingress \
--namespace ingress-nginx \
--set controller.stats.enabled=true \
+4 -5
View File
@@ -27,10 +27,9 @@ spec:
virtualHost:
domains:
- app.example.com
name: podinfo
routes:
- matcher:
prefix: /
- matchers:
- prefix: /
routeAction:
upstreamGroup:
name: podinfo
@@ -79,13 +78,13 @@ spec:
timeout: 10s
metadata:
type: bash
cmd: "curl -sd 'test' -H 'Host: app.example.com' http://gateway-proxy-v2.gloo-system/token | grep token"
cmd: "curl -sd 'test' -H 'Host: app.example.com' http://gateway-proxy.gloo-system/token | grep token"
- name: load-test
url: http://flagger-loadtester.test/
timeout: 5s
metadata:
type: cmd
cmd: "hey -z 2m -q 5 -c 2 -host app.example.com http://gateway-proxy-v2.gloo-system"
cmd: "hey -z 2m -q 5 -c 2 -host app.example.com http://gateway-proxy.gloo-system"
logCmdOutput: "true"
EOF
+3 -2
View File
@@ -2,17 +2,18 @@
set -o errexit
GLOO_VER="0.20.2"
GLOO_VER="1.3.5"
REPO_ROOT=$(git rev-parse --show-toplevel)
echo '>>> Installing Gloo'
helm repo add gloo https://storage.googleapis.com/solo-public-helm
kubectl create ns gloo-system
helm upgrade -i gloo gloo/gloo --version ${GLOO_VER} \
--namespace gloo-system \
--set discovery.enabled=true
kubectl -n gloo-system rollout status deployment/gloo
kubectl -n gloo-system rollout status deployment/gateway-proxy-v2
kubectl -n gloo-system rollout status deployment/gateway
kubectl -n gloo-system get all
echo '>>> Installing Flagger'
+2 -1
View File
@@ -2,10 +2,11 @@
set -o errexit
ISTIO_VER="1.4.3"
ISTIO_VER="1.4.4"
REPO_ROOT=$(git rev-parse --show-toplevel)
echo ">>> Installing Istio ${ISTIO_VER}"
kubectl create ns istio-system
helm repo add istio.io https://storage.googleapis.com/istio-release/releases/${ISTIO_VER}/charts
echo '>>> Installing Istio CRDs'
+2 -6
View File
@@ -3,7 +3,7 @@
set -o errexit
REPO_ROOT=$(git rev-parse --show-toplevel)
HELM_VERSION=v2.16.1
HELM_VERSION=v3.0.3
KIND_VERSION=v0.7.0
KUBE_VERSION=v1.14.10
@@ -28,8 +28,4 @@ kubectl get pods --all-namespaces
echo ">>> Installing Helm"
curl -sSL https://get.helm.sh/helm-${HELM_VERSION}-linux-amd64.tar.gz | tar xz && sudo mv linux-amd64/helm /usr/local/bin/ && rm -rf linux-amd64
echo '>>> Installing Tiller'
kubectl --namespace kube-system create sa tiller
kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
helm init --service-account tiller --upgrade --wait
helm repo add stable https://kubernetes-charts.storage.googleapis.com/
+1 -1
View File
@@ -2,7 +2,7 @@
set -o errexit
LINKERD_VER="stable-2.6.1"
LINKERD_VER="stable-2.7.0"
REPO_ROOT=$(git rev-parse --show-toplevel)
curl -SsL https://github.com/linkerd/linkerd2/releases/download/${LINKERD_VER}/linkerd2-cli-${LINKERD_VER}-linux > ${REPO_ROOT}/bin/linkerd
+2 -2
View File
@@ -3,10 +3,10 @@
set -o errexit
echo '>>> Deleting NGINX Ingress'
helm delete --purge nginx-ingress
helm delete nginx-ingress -n ingress-nginx
echo '>>> Deleting Flagger'
helm delete --purge flagger
helm delete flagger -n ingress-nginx
echo '>>> Cleanup test namespace'
kubectl delete namespace test --ignore-not-found=true
+1 -2
View File
@@ -25,8 +25,7 @@ echo '>>> Loading Flagger image'
kind load docker-image test/flagger:latest
echo '>>> Installing Flagger'
helm install ${REPO_ROOT}/charts/flagger \
--name flagger \
helm upgrade -i flagger ${REPO_ROOT}/charts/flagger \
--namespace ingress-nginx \
--set prometheus.install=true \
--set ingressAnnotationsPrefix="custom.ingress.kubernetes.io" \
+1
View File
@@ -6,6 +6,7 @@ REPO_ROOT=$(git rev-parse --show-toplevel)
NGINX_VERSION=1.26.0
echo '>>> Installing NGINX Ingress'
kubectl create ns ingress-nginx
helm upgrade -i nginx-ingress stable/nginx-ingress --version=${NGINX_VERSION} \
--wait \
--namespace ingress-nginx \