mirror of
https://github.com/owncloud/ocis
synced 2026-04-25 17:25:21 +02:00
test: add setup and docs for running API tests in K8s (#12107)
* test: add locak k8s setup Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com> * chore: move k8s config files Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com> * fix: add host alias Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com> * fix: remove unsed dir Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com> * ci: use script to expose external servers to the cluster Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com> * ci: expose using existing script Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com> * docs: add docs Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com> * docs: refer k8s setup docs Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com> * ci: specify namespace Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com> * ci: create namespace Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com> * docs: fix docs errors Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com> * test: patch chart template only once Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com> * docs: add toc and setup cleanup Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com> * chore: remove deprecated --atomic helm option Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com> * test: add k8s namespace wrapper option Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com> * test: fix logs dir permissions Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com> * docs: update docs Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com> * test: fix host ip detection Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com> * docs: add show-logs command and warning for external services Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com> --------- Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com>
This commit is contained in:
36
.drone.star
36
.drone.star
@@ -3975,18 +3975,10 @@ def k3sCluster(name = OCIS_SERVER_NAME, ocm = False):
|
||||
if ocm:
|
||||
commands.extend([
|
||||
# wait for peer
|
||||
"echo 'Waiting for %s to be available...'" % peer_name,
|
||||
"for i in {1..60}; do if getent hosts %s > /dev/null 2>&1; then break; fi; echo 'Waiting for %s... attempt '$i; sleep 2; done" % (peer_name, peer_name),
|
||||
# get the IP of peer
|
||||
"PEER_IP=$(getent hosts %s | awk '{ print $1 }')" % peer_name,
|
||||
"echo \"%s IP: $PEER_IP\"" % peer_name,
|
||||
# create namespace for ocis
|
||||
"kubectl create namespace ocis --dry-run=client -o yaml | kubectl apply -f -",
|
||||
# create service in the 'ocis' namespace
|
||||
"cat <<EOF | kubectl apply -f -\napiVersion: v1\nkind: Service\nmetadata:\n name: %s\n namespace: ocis\nspec:\n type: ClusterIP\n clusterIP: None\n ports:\n - port: 443\n protocol: TCP\n---\napiVersion: v1\nkind: Endpoints\nmetadata:\n name: %s\n namespace: ocis\nsubsets:\n- addresses:\n - ip: $PEER_IP\n ports:\n - port: 443\n protocol: TCP\nEOF" % (peer_name, peer_name),
|
||||
# verify
|
||||
"kubectl get svc %s -n ocis" % peer_name,
|
||||
"kubectl get endpoints %s -n ocis" % peer_name,
|
||||
"until getent hosts %s >/dev/null 2>&1; do echo 'Waiting for %s...'; sleep 2; done" % (peer_name, peer_name),
|
||||
# create namespace
|
||||
"kubectl create namespace ocis || true",
|
||||
"bash %s/tests/config/k8s/expose-external-svc.sh -n ocis %s:443" % (dirs["base"], peer_name),
|
||||
])
|
||||
|
||||
commands.extend([
|
||||
@@ -4025,7 +4017,7 @@ def prepareChartsK8s(environment = []):
|
||||
"[ ! -d %s/ocis-charts ] && " % dirs["base"] +
|
||||
"git clone --single-branch -b main --depth 1 https://github.com/owncloud/ocis-charts.git",
|
||||
# prepare charts for the tests
|
||||
"bash %s/tests/config/drone/k8s/setup.sh %s/ocis-charts" % (dirs["base"], dirs["base"]),
|
||||
"bash %s/tests/config/k8s/setup.sh %s/ocis-charts" % (dirs["base"], dirs["base"]),
|
||||
]
|
||||
|
||||
return [{
|
||||
@@ -4070,10 +4062,6 @@ def deployOcisK8s(name = OCIS_SERVER_NAME):
|
||||
"cd %s/ocis-charts" % dirs["base"],
|
||||
# update external domain
|
||||
"sed -i 's|externalDomain:.*|externalDomain: %s|' ./charts/ocis/ci/deployment-values.yaml" % name,
|
||||
# [NOTE]
|
||||
# Remove schema validation to add extra configs in values.yaml.
|
||||
# Also this allows us to use fakeoffice as web-office server
|
||||
"rm ./charts/ocis/values.schema.json || true",
|
||||
# deploy ocis
|
||||
"make helm-install-atomic",
|
||||
],
|
||||
@@ -4134,15 +4122,10 @@ def exposeNodePortsK8s(services = [], name = OCIS_SERVER_NAME):
|
||||
}]
|
||||
|
||||
def exposeExternalServersK8s(servers = [], name = OCIS_SERVER_NAME):
|
||||
commands = []
|
||||
servers_arg = []
|
||||
for server in servers:
|
||||
server_name = server[0]
|
||||
server_port = str(server[1])
|
||||
commands.append("SERVER_IP=$(getent hosts %s | awk '{print $1}')" % server_name)
|
||||
commands.append('echo -e "apiVersion: v1\nkind: Endpoints\nmetadata:\n name: %s\n namespace: ocis\n' % server_name +
|
||||
'subsets:\n- addresses:\n - ip: $SERVER_IP\n ports:\n - port: %s" | kubectl apply -f -' % server_port)
|
||||
commands.append('echo -e "apiVersion: v1\nkind: Service\nmetadata:\n name: %s\n namespace: ocis\n' % server_name +
|
||||
'spec:\n ports:\n - port: %s\n targetPort: %s" | kubectl apply -f -' % (server_port, server_port))
|
||||
servers_arg.append("%s:%s" % (server[0], str(server[1])))
|
||||
servers_arg = ",".join(servers_arg)
|
||||
|
||||
return [{
|
||||
"name": "expose-external-servers",
|
||||
@@ -4150,5 +4133,6 @@ def exposeExternalServersK8s(servers = [], name = OCIS_SERVER_NAME):
|
||||
"commands": [
|
||||
"export KUBECONFIG=kubeconfig-$${DRONE_BUILD_NUMBER}-%s.yaml" % name,
|
||||
"until test -f $${KUBECONFIG}; do sleep 1s; done",
|
||||
] + commands,
|
||||
"bash %s/tests/config/k8s/expose-external-svc.sh -n ocis %s" % (dirs["base"], servers_arg),
|
||||
],
|
||||
}]
|
||||
|
||||
Reference in New Issue
Block a user