zrok 0.4.0 #91
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Test charts in minikube | |
on: | |
workflow_dispatch: | |
pull_request: | |
paths: | |
- '.github/workflows/miniziti.yml' | |
- 'charts/ziti-controller/**' | |
- 'charts/ziti-router/**' | |
- 'charts/ziti-console/**' | |
- 'charts/httpbin/**' | |
- 'charts/zrok/**' | |
# cancel older, redundant runs of same workflow on same branch | |
concurrency: | |
group: ${{ github.workflow }}-${{github.event_name}}-${{ github.head_ref || github.ref_name }} | |
cancel-in-progress: true | |
jobs: | |
miniziti: | |
runs-on: ubuntu-latest | |
name: deploy to minikube | |
env: | |
ZITI_NAMESPACE: miniziti | |
steps: | |
- name: Checkout workspace | |
uses: actions/checkout@v3 | |
- name: Start minikube | |
uses: medyagh/setup-minikube@v0.0.14 | |
with: | |
start-args: --profile ${{ env.ZITI_NAMESPACE }} | |
- name: Find minikube IP address | |
id: minikube_ip | |
run: echo "minikube_ip=$(minikube --profile ${ZITI_NAMESPACE} ip)" >> $GITHUB_OUTPUT | |
- name: install ziti cli | |
uses: supplypike/setup-bin@v3 | |
with: | |
uri: https://github.com/openziti/ziti/releases/download/v0.30.4/ziti-linux-amd64-0.30.4.tar.gz | |
name: ziti | |
version: "0.30.4" | |
# this is the kubernetes quickstart script from | |
# https://openziti.io/docs/learn/quickstarts/network/local-kubernetes | |
- name: install miniziti | |
uses: supplypike/setup-bin@v3 | |
with: | |
# uri: https://raw.githubusercontent.com/qrkourier/ziti/d8a2d6e6da0c5edbf67357969a672daffc468bf3/quickstart/kubernetes/miniziti.bash | |
uri: https://get.openziti.io/miniziti.bash | |
name: miniziti | |
version: quickstartrelease | |
- name: Run miniziti with latest release charts | |
run: miniziti start --no-hosts --verbose | |
- name: Upgrade miniziti with charts from this branch | |
run: miniziti start --no-hosts --verbose --charts ./charts | |
- name: Find the ziti admin password | |
id: get_ziti_pwd | |
run: | | |
miniziti kubectl get secrets "ziti-controller-admin-secret" \ | |
--output go-template='{{index .data "admin-password" | base64decode }}' \ | |
| xargs -Iadmin_password echo "ZITI_PWD=admin_password" >> $GITHUB_OUTPUT | |
- name: Enroll client identity | |
run: > | |
ziti edge enroll | |
--jwt ~/.local/state/miniziti/profiles/${ZITI_NAMESPACE}/identities/${ZITI_NAMESPACE}-client.jwt | |
--out ~/.local/state/miniziti/profiles/${ZITI_NAMESPACE}/identities/${ZITI_NAMESPACE}-client.json | |
- name: Run client proxy | |
run: > | |
nohup ziti tunnel proxy "httpbin-service:4321" | |
--identity ~/.local/state/miniziti/profiles/${ZITI_NAMESPACE}/identities/${ZITI_NAMESPACE}-client.json | |
--verbose </dev/null &>/tmp/miniziti-client.log & | |
- name: Wait for proxy to serve the httpbin service | |
uses: iFaxity/wait-on-action@v1 | |
with: | |
resource: http://127.0.0.1:4321/get | |
delay: 1000 | |
interval: 1000 | |
timeout: 10000 | |
- name: Send a POST request to the httpbin service and verify the response data | |
run: | | |
set -euo pipefail | |
curl -sSf -XPOST -F ziti=awesome http://127.0.0.1:4321/post > /tmp/httpbin-response.json | |
AWESOME=$(jq -r '.form.ziti[0]' /tmp/httpbin-response.json) | |
if [[ "$AWESOME" == "awesome" ]]; then | |
echo "Ziti is awesome!" | |
else | |
echo "Got '$AWESOME' instead of 'awesome'" >&2 | |
exit 1 | |
fi | |
# helm dependency build ./charts/zrok | |
- name: Install zrok chart | |
shell: bash | |
env: | |
ZITI_MGMT_API_HOST: ziti-controller-client.${{ env.ZITI_NAMESPACE }}.svc.cluster.local | |
ZITI_PWD: ${{ steps.get_ziti_pwd.outputs.ZITI_PWD }} | |
ZROK_ZONE: zrok.${{ steps.minikube_ip.outputs.minikube_ip }}.sslip.io | |
run: | | |
helm upgrade \ | |
--install \ | |
--namespace zrok --create-namespace \ | |
--values ./charts/zrok/values-ingress-nginx.yaml \ | |
--set "ziti.advertisedHost=${ZITI_MGMT_API_HOST}" \ | |
--set "ziti.password=${ZITI_PWD}" \ | |
--set "dnsZone=${ZROK_ZONE}" \ | |
--set "controller.ingress.hosts[0]=ctrl.${ZROK_ZONE}" \ | |
zrok ./charts/zrok | |
- name: Wait for the zrok API to become available | |
shell: bash | |
run: | | |
ATTEMPTS=10 | |
until !(( ATTEMPTS )) || curl --silent --fail http://ctrl.zrok.${{ steps.minikube_ip.outputs.minikube_ip }}.sslip.io/api/v1/version &>/dev/null; do | |
echo "Waiting for zrok API to become available..." | |
sleep 3 | |
(( ATTEMPTS-- )) | |
done | |
curl --silent --show-error --fail-with-body http://ctrl.zrok.${{ steps.minikube_ip.outputs.minikube_ip }}.sslip.io/api/v1/version | |
- name: Print debug info | |
if: always() | |
shell: bash | |
run: | | |
set +e | |
set -x | |
miniziti kubectl get pods -A | |
miniziti kubectl get services -A | |
miniziti kubectl get ingresses -A | |
cat /tmp/miniziti-client.log |