124 lines
3.9 KiB
YAML
124 lines
3.9 KiB
YAML
# Licensed to the Apache Software Foundation (ASF) under one
|
|
# or more contributor license agreements. See the NOTICE file
|
|
# distributed with this work for additional information
|
|
# regarding copyright ownership. The ASF licenses this file
|
|
# to you 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.
|
|
|
|
version: '3.8'
|
|
services:
|
|
init:
|
|
image: bitnami/kubectl:latest
|
|
privileged: true
|
|
depends_on:
|
|
k3s:
|
|
condition: service_healthy
|
|
entrypoint: /bin/bash
|
|
networks:
|
|
k3s_network:
|
|
ipv4_address: 172.29.0.10
|
|
volumes:
|
|
- ./data/config/k3s.yaml:/.kube/config
|
|
- ./data:/testcase
|
|
command:
|
|
- -c
|
|
- |
|
|
# Wait for k3s to start
|
|
until kubectl cluster-info; do sleep 1; done
|
|
sleep 5
|
|
# Create serviceaccount and clusterrolebinding
|
|
kubectl create serviceaccount -n kube-system cluster-admin-sa
|
|
kubectl create clusterrolebinding -n kube-system cluster-admin-binding --clusterrole=cluster-admin --serviceaccount=kube-system:cluster-admin-sa
|
|
cd /testcase
|
|
kubectl create token cluster-admin-sa -n kube-system --duration=24h
|
|
echo $(sed "s/#TOKEN#/$(echo $(kubectl create token cluster-admin-sa -n kube-system --duration=24h))/g" create_k8s_monitor_data.json)>tmp.json
|
|
# install metrics server
|
|
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
|
|
sleep 30
|
|
tail -f /dev/null
|
|
k3s:
|
|
image: rancher/k3s:v1.31.0-k3s1
|
|
container_name: k3s
|
|
privileged: true
|
|
ports:
|
|
- "6443:6443"
|
|
- "80:80"
|
|
command: server --bind-address 172.29.0.11
|
|
networks:
|
|
k3s_network:
|
|
ipv4_address: 172.29.0.11
|
|
healthcheck:
|
|
test: [ "CMD-SHELL",
|
|
"kubectl cluster-info && echo $(cat /var/lib/rancher/k3s/server/node-token)>node-token.txt" ]
|
|
interval: 3s
|
|
retries: 30
|
|
start_period: 10s
|
|
timeout: 10s
|
|
volumes:
|
|
- ./data/config/k3s.yaml:/etc/rancher/k3s/k3s.yaml
|
|
- ./data/config/node-token.txt:/node-token.txt
|
|
testing:
|
|
image: ghcr.io/linuxsuren/api-testing:v0.0.17
|
|
environment:
|
|
SERVER: http://hertzbeat:1157
|
|
container_name: e2e-testing
|
|
volumes:
|
|
- ./data/:/work/data/
|
|
- ./data/testsuite.yaml:/work/testsuite.yaml
|
|
command: atest run -p /work/testsuite.yaml --level debug --thread 3
|
|
networks:
|
|
k3s_network:
|
|
ipv4_address: 172.29.0.12
|
|
depends_on:
|
|
checker:
|
|
condition: service_healthy
|
|
k3s:
|
|
condition: service_healthy
|
|
links:
|
|
- hertzbeat
|
|
- checker
|
|
- k3s
|
|
checker:
|
|
image: alpine:latest
|
|
container_name: e2e-checker
|
|
command: sh -c "apk add --update curl && tail -f /dev/null"
|
|
healthcheck:
|
|
test: [ "CMD-SHELL",
|
|
"curl -s -X POST -H \"Content-Type: application/json\" -d '{\"type\": 0,\"identifier\": \"admin\",\"credential\": \"hertzbeat\"}' http://hertzbeat:1157/api/account/auth/form | grep -q token"
|
|
]
|
|
interval: 3s
|
|
timeout: 60s
|
|
retries: 10
|
|
start_period: 10s
|
|
networks:
|
|
k3s_network:
|
|
ipv4_address: 172.29.0.13
|
|
depends_on:
|
|
- init
|
|
hertzbeat:
|
|
image: apache/hertzbeat:test
|
|
container_name: e2e-hertzbeat
|
|
volumes:
|
|
- ./logs/:/opt/hertzbeat/logs/
|
|
ports:
|
|
- "1157:1157"
|
|
networks:
|
|
k3s_network:
|
|
ipv4_address: 172.29.0.14
|
|
networks:
|
|
k3s_network:
|
|
driver: bridge
|
|
ipam:
|
|
config:
|
|
- subnet: 172.29.0.0/16
|