diff options
Diffstat (limited to 'fluent-bit/packaging/testing/smoke/k8s/k8s-smoke-test.sh')
-rwxr-xr-x | fluent-bit/packaging/testing/smoke/k8s/k8s-smoke-test.sh | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/fluent-bit/packaging/testing/smoke/k8s/k8s-smoke-test.sh b/fluent-bit/packaging/testing/smoke/k8s/k8s-smoke-test.sh new file mode 100755 index 00000000..e7e42a0d --- /dev/null +++ b/fluent-bit/packaging/testing/smoke/k8s/k8s-smoke-test.sh @@ -0,0 +1,61 @@ +#!/bin/bash +# Copyright 2021 Calyptia, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +set -eux + +# Simple smoke test script using helm deployment to run up a deployment then +# ensure we can access the web server. +# Assumes a kubectl context is set up already, e.g. `kind create cluster` + +NAMESPACE=${NAMESPACE:-default} +REGISTRY=${REGISTRY:-ghcr.io} +IMAGE_NAME=${IMAGE_NAME:-fluent/fluent-bit} +IMAGE_TAG=${IMAGE_TAG:-latest} + +# Deploy using Helm chart +helm repo add fluent-bit https://fluent.github.io/helm-charts || helm repo add fluent-bit https://fluent.github.io/helm-charts/ +helm repo update +helm upgrade --install fluent-bit fluent-bit/fluent-bit \ + --namespace "$NAMESPACE" --create-namespace \ + --wait \ + --set kind=Deployment \ + --set replicaCount=1 \ + --set image.repository="$REGISTRY/$IMAGE_NAME" \ + --set image.tag="$IMAGE_TAG" + +# Output some information on pods running +kubectl describe -n "$NAMESPACE" pods --selector='app.kubernetes.io/name=fluent-bit' + +while true; do + # Find a free ephemeral port to use for port forwarding + FREE_PORTNUM=$(shuf -i 1025-65535 -n 1) + if ! lsof -Pi ":$FREE_PORTNUM" -sTCP:LISTEN; then + # Forward to the deployment web server port + kubectl port-forward -n "$NAMESPACE" deployment/fluent-bit "$FREE_PORTNUM":2020 & + PF_PID=$! + # Wait a bit + sleep 60 + # Provide debug output in case it is required + kubectl describe -n "$NAMESPACE" pods --selector='app.kubernetes.io/name=fluent-bit' + # Check we are still functional + curl -v localhost:"$FREE_PORTNUM" | jq + curl -v localhost:"$FREE_PORTNUM"/api/v1/metrics | jq + curl -v localhost:"$FREE_PORTNUM"/api/v1/uptime | jq + curl -v localhost:"$FREE_PORTNUM"/api/v1/health + kill -9 $PF_PID + exit 0 + fi +done +echo "Unable to find free port" +exit 1
\ No newline at end of file |