summaryrefslogtreecommitdiffstats
path: root/fluent-bit/packaging/testing/smoke/k8s
diff options
context:
space:
mode:
Diffstat (limited to 'fluent-bit/packaging/testing/smoke/k8s')
-rwxr-xr-xfluent-bit/packaging/testing/smoke/k8s/k8s-smoke-test.sh61
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 000000000..e7e42a0da
--- /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