Merge pull request #369 from openziti/release-next

Release 0.19.12
This commit is contained in:
Paul Lorenz
2021-04-23 14:02:19 -04:00
committed by GitHub
12 changed files with 233 additions and 27 deletions
+40
View File
@@ -1,3 +1,43 @@
# Release 0.19.12
## What's New
* Revert dial error messages to what sdks are expecting. Add error codes so future sdks don't have to parse error text
* Add router events
* Allow filters with no predicate if sort or paging clauses are provided
* Ex: instead of `true limit 5` you could have just `limit 5`. Or instead of `true sort by name` you could have `sort by name`
* Corrected host.v1 configuration type schema to prevent empty port range objects
## Router events
To enable:
```
events:
jsonLogger:
subscriptions:
- type: fabric.routers
```
Example JSON output:
```
{
"namespace": "fabric.routers",
"event_type": "router-online",
"timestamp": "2021-04-22T11:26:31.99299884-04:00",
"router_id": "JAoyjafljO",
"router_online": true
}
{
"namespace": "fabric.routers",
"event_type": "router-offline",
"timestamp": "2021-04-22T11:26:41.335114358-04:00",
"router_id": "JAoyjafljO",
"router_online": false
}
```
# Release 0.19.11
## What's New
+2 -1
View File
@@ -41,7 +41,7 @@ mgmt:
# the number of milliseconds to wait before a hello synchronization fails and closes the connection (30ms to 60000ms, default: 1000ms)
#connectTimeoutMs: 3000
metrics:
#metrics:
#file:
#path: /tmp/ziti-controller-metrics.log
#maxsizemb: 100:wq
@@ -55,6 +55,7 @@ metrics:
#events:
# jsonLogger:
# subscriptions:
# - type: fabric.routers
# - type: fabric.terminators
# - type: metrics
# sourceFilter: .*
+4 -4
View File
@@ -27,10 +27,10 @@ require (
github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d
github.com/keybase/go-ps v0.0.0-20190827175125-91aafc93ba19
github.com/michaelquigley/pfxlog v0.3.7
github.com/openziti/edge v0.19.83
github.com/openziti/fabric v0.16.54
github.com/openziti/foundation v0.15.48
github.com/openziti/sdk-golang v0.15.40
github.com/openziti/edge v0.19.90
github.com/openziti/fabric v0.16.56
github.com/openziti/foundation v0.15.49
github.com/openziti/sdk-golang v0.15.43
github.com/pborman/uuid v1.2.0
github.com/pkg/errors v0.9.1
github.com/rcrowley/go-metrics v0.0.0-20200313005456-10cdbea86bc0
+8 -8
View File
@@ -614,14 +614,14 @@ github.com/openziti/bbolt v1.3.6-0.20210317142109-547da822475e h1:ST9+54UtCr96S5
github.com/openziti/bbolt v1.3.6-0.20210317142109-547da822475e/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ=
github.com/openziti/dilithium v0.3.3 h1:PLgQ6PMNLSTzCFbX/h98cmudgz/cU6TmjdSv5NAPD8k=
github.com/openziti/dilithium v0.3.3/go.mod h1:vsCjI2AU/hon9e+dLhUFbCNGesJDj2ASgkySOcpmvjo=
github.com/openziti/edge v0.19.83 h1:+DgptVlQIN9j95uX2LmUBgJmCS7qnBEKVCTeirNT/Vw=
github.com/openziti/edge v0.19.83/go.mod h1:atmbRzo8tAXatznFhQaM3BZlFJZxTq12OIGZazKz7J8=
github.com/openziti/fabric v0.16.54 h1:jfuAv5p73Uu7E2L26TBFoO+ZF5mzeAHgA9CSU8d+rfE=
github.com/openziti/fabric v0.16.54/go.mod h1:fb5zFkB3YQxusAmsQLKKzEk7MmPodqDkqmOVTB+J3eE=
github.com/openziti/foundation v0.15.48 h1:NnL/xY684XeFiLBi5z0+uKf2tpPhlClbMeVmUQPF8Jo=
github.com/openziti/foundation v0.15.48/go.mod h1:NnSBTp9ZkcYsv6nYxZR0/NzoHfkIo6tjpBHDvBsPFqw=
github.com/openziti/sdk-golang v0.15.40 h1:AXAE4qeWf5TLO1ZCamaTTOdfCmWITWyeM4g+RVZDO5U=
github.com/openziti/sdk-golang v0.15.40/go.mod h1:yo85e6HhAL1+PrRjgrsL/ZgkyAcdqVxy4Ws1UMrogss=
github.com/openziti/edge v0.19.90 h1:hMNoyVsw2VaYikfCLwvlHJnzTCCUiZtKJ7Zw2lpPPhg=
github.com/openziti/edge v0.19.90/go.mod h1:PFQ6g4shFA4WWUQW5O6DZBDyxW51bSkQyUFtGbz1feM=
github.com/openziti/fabric v0.16.56 h1:qUYmU3EvppPzivpHo8FxjbyTupMeBauDxlwQG2eAh6c=
github.com/openziti/fabric v0.16.56/go.mod h1:Okz2xHYivh3N1UovAcQt0xSx2Kb8QWA0VpQ20zB2xD4=
github.com/openziti/foundation v0.15.49 h1:dXyqQFD4myl+ILCnj4+024peoT3RR1UTZZx974v6wlU=
github.com/openziti/foundation v0.15.49/go.mod h1:NnSBTp9ZkcYsv6nYxZR0/NzoHfkIo6tjpBHDvBsPFqw=
github.com/openziti/sdk-golang v0.15.43 h1:Lz65VocDRtdt0aR0JmK767UkRvtEz4Wm4PG4/bvJuDM=
github.com/openziti/sdk-golang v0.15.43/go.mod h1:UN6ECAN/VdwApuIQg8+zudTL5Si4PgbN73xhQXKc4o0=
github.com/oracle/oci-go-sdk v24.2.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukwStZIg5F66tcBccjip/j888=
github.com/orcaman/concurrent-map v0.0.0-20190826125027-8c72a8bb44f6/go.mod h1:Lu3tH6HLW3feq74c2GC+jIMS/K2CFcDWnWD9XkenwhI=
github.com/orcaman/concurrent-map v0.0.0-20210106121528-16402b402231 h1:fa50YL1pzKW+1SsBnJDOHppJN9stOEwS+CRWyUtyYGU=
+1
View File
@@ -0,0 +1 @@
/dnsmasq.conf
+10
View File
@@ -0,0 +1,10 @@
version: '3.3'
services:
dns:
restart: "no"
image: strm/dnsmasq
volumes:
- ./dnsmasq.conf:/etc/dnsmasq.conf
network_mode: host
cap_add:
- NET_ADMIN
+1 -1
View File
@@ -4,7 +4,7 @@ export PFXLOG_NO_JSON=true
# make the quickstart home folder where all the config files, logs, etc will go
export ZITI_HOME=~/.ziti/quickstart/${network_name}
export ZITI_HOME=${HOME}/.ziti/quickstart/${network_name}
export ZITI_POSTGRES_HOST="localhost"
export ZITI_NETWORK=${network_name}
export ZITI_USER="admin"
+6 -3
View File
@@ -64,6 +64,9 @@ echo " example:"
echo " 127.0.0.1 ${ZITI_CONTROLLER_HOSTNAME} ${ZITI_EDGE_HOSTNAME} ${ZITI_ZAC_HOSTNAME} ${ZITI_EDGE_ROUTER_HOSTNAME} ${ZITI_EDGE_WSS_ROUTER_HOSTNAME} ${ZITI_ROUTER_BR_HOSTNAME} ${ZITI_ROUTER_BLUE_HOSTNAME} ${ZITI_ROUTER_RED_HOSTNAME}"
echo ""
DIRNAME=$(dirname $0)
[[ ${USE_DNSMASQ:-} -eq 1 ]] && source ${DIRNAME}/run-dns.sh
while true; do
read -p "Are the hosts in your hosts file? " yn
case $yn in
@@ -93,16 +96,16 @@ fi
. ${curdir}/start-ziti.sh
. ${curdir}/test-ziti.sh
echo "staring a new bash shell to retain all environment variables without polluting the initial shell"
echo "starting a new bash shell to retain all environment variables without polluting the initial shell"
bash --rcfile <(cat << HERE
. ~/.bashrc
. ~/.bashrc
. ~/.bash_aliases
export PS1="ZITI IS RUNNING ${network_name}: "
echo "adding pki-functions to bash shell"
. ${curdir}/pki-functions.sh
alias zec='ziti edge controller'
alias zec='ziti edge'
alias zlogin='ziti edge controller login "${ZITI_EDGE_API_HOSTNAME}" -u "${ZITI_USER}" -p "${ZITI_PWD}" -c "${ZITI_PKI}/${ZITI_EDGE_ROOTCA_NAME}/certs/${ZITI_EDGE_INTERMEDIATE_NAME}.cert"'
alias psz='ps -ef | grep ziti'
+11 -2
View File
@@ -1,9 +1,18 @@
#!/usr/bin/env bash
set -euo pipefail
# set a variable to the location of the script running in case it's needed
export curdir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
export network_name="${USER}"
if [[ $# -ne 0 ]]; then
export network_name=$1
else
export network_name="${USER}"
fi
. ${curdir}/env.sh
source ${curdir}/env.sh
DIRNAME=$(dirname $0)
[[ ${USE_DNSMASQ:-} -eq 1 ]] && source ${DIRNAME}/run-dns.sh
ziti-controller -v run "${ZITI_HOME}/controller.yaml" > "${ZITI_HOME}/ziti-controller.log" 2>&1 &
# sleep 2
+44
View File
@@ -0,0 +1,44 @@
#!/dev/null
#
# blame(ken)
#
# source this after sourcing env.sh to append required domain names to the dnsmasq.conf in the same dir which is mounted on dnsmasq server by docker-compose.yml
# DIRNAME defined by init.sh before sourcing this because it's problematic to determine the value of the sourced file in a shell-portable manner
[[ ! -z ${DIRNAME:-} ]] || {
echo "ERROR: not configuring dnsmasq because DIRNAME is not defined." >&2
}
# expected in same directory as docker-compose.yml
[[ -s ${DIRNAME}/docker-compose.yml ]] || {
echo "ERROR: missing ${DIRNAME}/docker-compose"
}
DNSCONF=${DIRNAME}/dnsmasq.conf
[[ -s ${DNSCONF} ]] && {
echo "WARN: clobbered ${DNSCONF}" >&2
} || {
echo "INFO: created ${DNSCONF}"
}
cat <<EOF >| ${DNSCONF}
port=53
listen-address=${NAMESERVER1:-127.0.0.123}
bind-interfaces
#log all dns queries
log-queries
#don't use host's nameservers in /etc/resolv.conf, only use upstreams define in this conf
no-resolv
# don't forward plain names, only FQDNs
domain-needed
#use google as default nameservers
server=1.1.1.1
server=8.8.8.8
#explicitly defines host-ip mappings appended by init.sh
EOF
for DOMAIN_NAME in ${ZITI_CONTROLLER_HOSTNAME} ${ZITI_EDGE_HOSTNAME} ${ZITI_ZAC_HOSTNAME} ${ZITI_EDGE_ROUTER_HOSTNAME} ${ZITI_EDGE_WSS_ROUTER_HOSTNAME} ${ZITI_ROUTER_BR_HOSTNAME} ${ZITI_ROUTER_BLUE_HOSTNAME} ${ZITI_ROUTER_RED_HOSTNAME}; do
echo "address=/${DOMAIN_NAME}/127.0.0.1" >> ${DNSCONF}
done
docker-compose --file ${DIRNAME}/docker-compose.yml up --detach dns
+27 -8
View File
@@ -1,4 +1,4 @@
The Dockerfile and scripts in this directory build a ziti-tunnel Docker image.
The Dockerfile and scripts in this directory build a `ziti-tunnel` (Go tunneler) Docker image. This procedure is highly similar to that of the `ziti-edge-tunnel` (C tunneler) Docker image [documented here](https://github.com/openziti/ziti-tunnel-sdk-c/blob/main/docker/BUILD.md).
Ziti binaries are downloaded from https://netfoundry.artifactory.io/netfoundry/ziti-release
by default. The following build arguments are supported:
@@ -47,13 +47,13 @@ the image to a public registry.
3. Create a Builder Instance
$ docker buildx create --use
$ docker buildx create --use --name=ziti-builder
## Building
Run `docker buildx` like this:
$ ziti_version="0.15.3"
$ ziti_version="0.19.11"
$ docker buildx build \
--platform linux/amd64,linux/arm/v7,linux/aarch64 \
--build-arg ZITI_VERSION="${ziti_version}" \
@@ -66,10 +66,10 @@ Notes:
Unfortunately `buildx` doesn't currently support building images directly into
the local docker cache. Although the `--load` and `--output=type=docker` options
exist, the underlying capability will be implemented in a future docker release
(see https://github.com/docker/buildx/issues/59). In the meantime, you'll need
to push your image builds (with the `--push` build option) and then pull them to
run the image locally when building with `buildx`.
exist, the underlying capability to load a multi-platform image (OCI) will be
implemented in a future Docker release (see https://github.com/docker/buildx/issues/59).
In the meantime, you'll need to push your image builds (with the `--push` build option)
and then pull them to run the image locally when building with `buildx`.
- The armv8 image uses armv7 (32-bit) ziti executables. The 32-bit compatibility
libraries are installed in the image, but your Arm CPU must support 32-bit emulation.
@@ -87,7 +87,26 @@ This build method produces an image for the CPU that is running the build host
(typically amd64), and places the resulting image into your local Docker image
cache.
$ ziti_version="0.15.3" \
$ git fetch --tags && git tag -l | sort -Vr | head -1
v0.19.11
$ ziti_version="0.19.11" \
$ docker build \
--build-arg ZITI_VERSION="${ziti_version}" \
-t "netfoundry/ziti-tunnel:${ziti_version}" .
## Shell Script for Linux
$ ./buildx.sh -h
Usage: VARIABLES ./buildx.sh [OPTION]...
Build multi-platform Docker container image on Linux.
VARIABLES
ZITI_VERSION e.g. "0.16.1" corresponding to Git tag "v0.16.1"
OPTIONS
-r REPO container image repository e.g. netfoundry/ziti-edge-tunnel
-c don't check out v${ZITI_VERSION} (use Git working copy)
EXAMPLES
ZITI_VERSION=0.19.11 ./buildx.sh -r netfoundry/ziti-tunnel
+79
View File
@@ -0,0 +1,79 @@
#!/usr/bin/env bash
set -euo pipefail
_usage(){
cat >&2 <<-EOF
Usage: VARIABLES ./buildx.sh [OPTION]...
Build multi-platform Docker container image on Linux.
VARIABLES
ZITI_VERSION e.g. "0.16.1" corresponding to Git tag "v0.16.1"
OPTIONS
-r REPO container image repository e.g. netfoundry/ziti-edge-tunnel
-c don't check out v\${ZITI_VERSION} (use Git working copy)
EXAMPLES
ZITI_VERSION=0.16.1 ./buildx.sh -c
REFERENCE
https://github.com/openziti/ziti-tunnel-sdk-c/blob/main/docker/BUILD.md
EOF
[[ $# -eq 1 ]] && {
return $1
} || {
return 0
}
}
BASENAME=$(basename $0) || exit $?
DIRNAME=$(dirname $0) || exit $?
while getopts :r:c OPT;do
case $OPT in
r) CONTAINER_REPO=$OPTARG
;;
c) FLAGS+=$OPT # don't checkout vZITI_VERSION
;;
h) _usage; exit 0 # not an error
;;
*|\?) _usage 1 # error
;;
esac
done
shift "$((OPTIND-1))"
# default to latest
: ${ZITI_VERSION:=$(git fetch --quiet --tags && git tag -l|sort -Vr|head -1|sed -E 's/^v(.*)/\1/')}
# required opts
[[ ! -z ${CONTAINER_REPO:+true} ]] || {
echo "ERROR: missing -r REPO option to define container image repository name for image push" >&2
_usage; exit 1
}
if [[ ${FLAGS:-} =~ c ]]; then
echo "WARN: not checking out Git tag v${ZITI_VERSION}"
else
git diff --exit-code # bail if unstaged differences
git fetch --tags
git checkout v${ZITI_VERSION}
fi
docker run --rm --privileged docker/binfmt:a7996909642ee92942dcd6cff44b9b95f08dad64
egrep -q enabled /proc/sys/fs/binfmt_misc/qemu-arm
docker run --rm arm64v8/alpine uname -a|egrep -q 'aarch64 Linux'
docker run --rm arm32v7/alpine uname -a|egrep -q 'armv7l Linux'
docker buildx create --use --name=ziti-builder 2>/dev/null || docker buildx use --default ziti-builder
docker buildx build $DIRNAME \
--platform linux/amd64,linux/arm/v7,linux/arm64 \
--build-arg ZITI_VERSION=${ZITI_VERSION} \
--tag ${CONTAINER_REPO}:${ZITI_VERSION} \
--tag ${CONTAINER_REPO}:latest \
--push
docker buildx stop ziti-builder