From d45573789670e86c99623061a7c99517e73235ba Mon Sep 17 00:00:00 2001
From: Piotr
Date: Thu, 15 Oct 2020 16:28:46 +0200
Subject: [PATCH] Test on minikube (#26)
---
.github/workflows/e2e-minikube.yml | 55 ++++++++++++++++++++++++++++++
app-connector-example.sh | 9 +----
commerce-mock.sh | 2 +-
install-kyma.sh | 10 ++++--
minikube-tunnel.sh | 4 +++
5 files changed, 68 insertions(+), 12 deletions(-)
create mode 100644 .github/workflows/e2e-minikube.yml
create mode 100755 minikube-tunnel.sh
diff --git a/.github/workflows/e2e-minikube.yml b/.github/workflows/e2e-minikube.yml
new file mode 100644
index 0000000..10b2946
--- /dev/null
+++ b/.github/workflows/e2e-minikube.yml
@@ -0,0 +1,55 @@
+name: Tests on minikube
+
+on:
+ push:
+ pull_request:
+ types: [opened, synchronize, reopened]
+ schedule:
+ - cron: '0 * * * *' # every hour
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ timeout-minutes: 15
+ steps:
+ - uses: actions/checkout@v2
+ - name: Prepare docker registry, minikube and helm 3
+ run: |
+ curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
+ sudo install minikube-linux-amd64 /usr/local/bin/minikube
+ docker run -d \
+ -p 5000:5000 \
+ --restart=always \
+ --name registry.localhost \
+ -v $PWD/registry:/var/lib/registry \
+ registry:2
+ echo "starting cluster"
+ minikube start --memory=6800m --kubernetes-version=1.18.9 --insecure-registry="registry.localhost:5000"
+ minikube ssh "sudo sh -c \"grep host.minikube.internal /etc/hosts | sed s/host.minikube.internal/registry.localhost/ >>/etc/hosts\""
+ echo "Installing helm"
+ curl -s https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
+ while [[ $(kubectl get nodes -o 'jsonpath={..status.conditions[?(@.type=="Ready")].status}') != "True" ]]; do echo "Waiting for cluster nodes to be ready"; sleep 2; done
+ - name: Install Istio
+ run: |
+ ./install-istio.sh
+ - name: Minikube tunnel
+ run: |
+ ./minikube-tunnel.sh
+ - name: Install Kyma
+ env:
+ SKIP_MODULES: apiserver-proxy,helm-broker,console,cluster-users,apiserver-proxy,logging,tracing
+ run: |
+ ./download-kyma-charts.sh
+ IP=$(minikube ssh "grep host.minikube.internal /etc/hosts | cut -f1")
+ export REGISTRY_IP=${IP//[$'\t\r\n ']}
+ ./install-kyma.sh
+ sudo cp kyma.crt /usr/local/share/ca-certificates
+ sudo update-ca-certificates
+ - name: Install Commerce Mock
+ run: |
+ ./commerce-mock.sh
+ # - name: Setup tmate session
+ # uses: mxschmitt/action-tmate@v3
+ - name: Run End To End Test
+ run: |
+ ./app-connector-example.sh
diff --git a/app-connector-example.sh b/app-connector-example.sh
index cf8553e..d5ca571 100755
--- a/app-connector-example.sh
+++ b/app-connector-example.sh
@@ -17,7 +17,7 @@ apiVersion: serverless.kyma-project.io/v1alpha1
kind: Function
metadata:
labels:
- serverless.kyma-project.io/build-resources-preset: slow
+ serverless.kyma-project.io/build-resources-preset: local-dev
serverless.kyma-project.io/function-resources-preset: S
serverless.kyma-project.io/replicas-preset: S
name: lastorder
@@ -26,13 +26,6 @@ spec:
{\"axios\": \"^0.19.2\"}\n}"
maxReplicas: 1
minReplicas: 1
- resources:
- limits:
- cpu: 100m
- memory: 128Mi
- requests:
- cpu: 50m
- memory: 64Mi
source: "let lastOrder = {};\n\nconst axios = require('axios');\n\nasync function
getOrder(code) {\n let url = process.env.GATEWAY_URL+\"/site/orders/\"+code;\n
\ console.log(\"URL: %s\", url);\n let response = await axios.get(url,{headers:{\"X-B3-Sampled\":1}})\n
diff --git a/commerce-mock.sh b/commerce-mock.sh
index 1f04cc6..ae9848f 100755
--- a/commerce-mock.sh
+++ b/commerce-mock.sh
@@ -86,4 +86,4 @@ spec:
port: 10000
EOF
MOCK_PROVIDER=""
-while [[ -z $MOCK_PROVIDER ]]; do echo "waiting for commerce mock to be ready"; MOCK_PROVIDER=$(curl -sk https://commerce.local.kyma.dev/local/apis |jq -r '.[0].provider'); sleep 5; done
+while [[ -z $MOCK_PROVIDER ]]; do echo "waiting for commerce mock to be ready"; MOCK_PROVIDER=$(curl -sk https://commerce.local.kyma.dev/local/apis |jq -r '.[0].provider'); curl -ik "https://commerce.local.kyma.dev/local/apis" ; sleep 5; done
diff --git a/install-kyma.sh b/install-kyma.sh
index 70d27cb..6fbf20d 100755
--- a/install-kyma.sh
+++ b/install-kyma.sh
@@ -1,7 +1,7 @@
SECONDS=0
export DOMAIN=local.kyma.dev
export OVERRIDES=global.isLocalEnv=false,global.ingress.domainName=$DOMAIN,global.environment.gardener=false,global.domainName=$DOMAIN,global.tlsCrt=ZHVtbXkK
-export ORY=global.ory.hydra.persistence.enabled=false,global.ory.hydra.persistence.postgresql.enabled=false,hydra.hydra.autoMigrate=false
+export ORY=global.ory.hydra.persistence.enabled=false,global.ory.hydra.persistence.postgresql.enabled=false,hydra.hydra.autoMigrate=false,hydra.deployment.resources.requests.cpu=10m,oathkeeper.deployment.resources.requests.cpu=10m
# export REGISTRY_VALUES="dockerRegistry.username=$REGISTRY_USER,dockerRegistry.password=$REGISTRY_PASS,dockerRegistry.enableInternal=false,dockerRegistry.serverAddress=ghcr.io,dockerRegistry.registryAddress=ghcr.io/$REGISTRY_USER"
export REGISTRY_VALUES="dockerRegistry.enableInternal=false,dockerRegistry.serverAddress=registry.localhost:5000,dockerRegistry.registryAddress=registry.localhost:5000"
@@ -75,9 +75,13 @@ EOF
# Wait for nodes to be ready before scheduling any workload
while [[ $(kubectl get nodes -o 'jsonpath={..status.conditions[?(@.type=="Ready")].status}') != "True" ]]; do echo "Waiting for cluster nodes to be ready, elapsed time: $(( $SECONDS/60 )) min $(( $SECONDS % 60 )) sec"; sleep 2; done
-export REGISTRY_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' /registry.localhost)
+if [[ -z $REGISTRY_IP ]]; then
+ export REGISTRY_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' /registry.localhost)
+fi
+echo "Patching CoreDns with REGISTRY_IP=$REGISTRY_IP"
sed "s/REGISTRY_IP/$REGISTRY_IP/" coredns-patch.tpl >coredns-patch.yaml
kubectl -n kube-system patch cm coredns --patch "$(cat coredns-patch.yaml)"
+
kubectl apply -f resources/cluster-essentials/files -n kyma-system
helm_install pod-preset resources/cluster-essentials/charts/pod-preset kyma-system
helm_install testing resources/testing kyma-system
@@ -89,7 +93,7 @@ helm_install ory resources/ory kyma-system --set $OVERRIDES --set $ORY &
helm_install api-gateway resources/api-gateway kyma-system --set $OVERRIDES &
helm_install rafter resources/rafter kyma-system --set $OVERRIDES &
-helm_install service-catalog resources/service-catalog kyma-system --set $OVERRIDES &
+helm_install service-catalog resources/service-catalog kyma-system --set $OVERRIDES --set catalog.webhook.resources.requests.cpu=10m,catalog.controllerManager.resources.requests.cpu=10m &
helm_install service-catalog-addons resources/service-catalog-addons kyma-system --set $OVERRIDES &
helm_install helm-broker resources/helm-broker kyma-system --set $OVERRIDES &
diff --git a/minikube-tunnel.sh b/minikube-tunnel.sh
new file mode 100755
index 0000000..50bcce6
--- /dev/null
+++ b/minikube-tunnel.sh
@@ -0,0 +1,4 @@
+minikube tunnel -c >/dev/null 2>&1 &
+LB_IP=""
+while [[ -z $LB_IP ]]; do LB_IP=$(kubectl get svc istio-ingressgateway -n istio-system -ojsonpath='{.status.loadBalancer.ingress[0].ip}'); echo "Waiting for LoadBalancer IP: $LB_IP"; sleep 5; done
+sudo sh -c "echo \"$LB_IP commerce.local.kyma.dev dex.local.kyma.dev lastorder.local.kyma.dev\">>/etc/hosts"