blob: 0864c5bb1519108f34d2d797a38e10e4be090a38 [file] [log] [blame]
#!/bin/bash
#
# Copyright Istio Authors. All Rights Reserved.
#
# 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.
#
################################################################################
#
# Test for istio debian. Should run in a VM or docker image where the 2 .deb have been installed.
# The tests can be run using the VM-only istiod, without K8S.
# It is also possible to use the VM to connect to an external istiod.
# IDE: using the env and CLI args in this file it is possible to create a startup config for CLion,
# and debug Istio in the IDE.
#
# It will require some manual steps and paths to be present in the working dir.
#
# make testcert-gen - will create cacerts and vm certs
# Currently I have a symlink from `pwd`/tests/testdata/certs/cacerts to /etc/cacerts,
# and from `pwd`/tests/testdata/certs/vm to /etc/certs - we may need to further adjust the code
# to use only relative paths.
# Start isitio. Expects certs to be available.
function startIstio() {
bash -x /usr/local/bin/istio-start.sh &
sleep 1
}
# Start Istiod on the VM, using local configurations
# Expects CA root certificates in /etc/cacerts
function startIstiodLocal() {
export TOKEN_ISSUER=https://localhost:15012
export MASTER_ELECTION=false
export ISTIOD_ADDR=istiod.dubbo-system.svc:15012
cd /
/usr/local/bin/pilot-discovery discovery -n dubbo-system \
--configDir /var/lib/istio/config --registries Mock &
sleep 1
}
function istioDebug() {
curl localhost:15000/logging?upstream=debug
curl localhost:15000/logging?client=debug
curl localhost:15000/logging?connection=debug
curl localhost:15000/logging?http2=debug
curl localhost:15000/logging?grpc=debug
}
function istioStats() {
curl localhost:15000/stats
# Try to get the endpoints over https
curl -k --key tests/testdata/certs/default/key.pem \
--cert tests/testdata/certs/default/cert-chain.pem \
-v https://istio-pilot.dubbo-system:15011/debug/endpointz
}
function istioCheckServerCert {
curl --key /etc/certs/key.pem --cert /etc/certs/cert-chain.pem --cacert /etc/certs/root-cert.pem -vvv --http2 \
https://istiod.dubbo-system.svc:15012
}
function istioRun {
export CA_ADDR=istiod.dubbo-system.svc:15012
export PROV_CERT=/etc/certs
export OUTPUT_CERTS=/etc/certs
/usr/local/bin/pilot-agent proxy --serviceCluster rawvm --discoveryAddress istiod.dubbo-system.svc:15012
}
function verifyCert() {
openssl verify -CAfile /etc/certs/root-cert.pem /etc/certs/cert-chain.pem
}
function istioTest() {
# Will go to local machine
su -s /bin/bash -c "curl -v byon-docker.test.istio.io:7072" istio-test
}
if [ "$1" == "test" ]; then
# start istiod, using local config files (no k8s)
startIstiodLocal
# Start sidecar and iptables
startIstio
fi