helm repo add kubeshop https://kubeshop.github.io/helm-charts
# Install Kusk Manager
helm upgrade -i kusk-gateway kubeshop/kusk-gateway \
--namespace kusk-system --create-namespace \
--version 0.0.65 \
-f k8s/helm/kusk-gateway.yaml
# install the default EnvoyFleet which will serve public requests to your API
# install metallb for on-premis k8s
helm upgrade -i kusk-gateway-envoy-fleet kubeshop/kusk-gateway-envoyfleet \
--namespace kusk-system \
--version 0.0.7 \
-f k8s/helm/kusk-gateway-envoy-fleet.yaml
# https://docs.kusk.io/reference/customresources/envoyfleet/
kubectl -n kusk-system get envoyfleet kusk-gateway-envoy-fleet -o yaml
# Create a Private EnvoyFleet (a service of type ClusterIP, so Kusk Dashboard isn't accessed publicly)
helm upgrade -i kusk-gateway-private-envoy-fleet kubeshop/kusk-gateway-envoyfleet \
--namespace kusk-system \
--version 0.0.7 \
-f k8s/helm/kusk-gateway-envoyfleet-private.yaml
# Install Kusk API (configured to be exposed through the private EnvoyFleet)
helm upgrade -i kusk-gateway-api kubeshop/kusk-gateway-api \
--namespace kusk-system \
--version 0.1.28 \
-f k8s/helm/kusk-gateway-api.yaml
# Install Kusk Dashboard (configured to be connected to Kusk API and exposed through the private EnvoyFleet)
helm upgrade -i kusk-gateway-dashboard kubeshop/kusk-gateway-dashboard \
--namespace kusk-system \
--version 0.1.19 \
-f k8s/helm/kusk-gateway-dashboard.yaml
# Install ingress for dashboard
kubectl apply -f k8s/ingress.yamlOpen dashboard at:
- if public envoy used for dashboard and api: http://172.18.255.200
- if ingress used: http://kusk-192.168.0.100.nip.io
create mock api (fake)
# deploy mock example
kusk deploy -i examples/api-mock.yaml [--envoyfleet.name kusk-gateway-public-envoy-fleet]
kubectl get apis.gateway.kusk.io
kubectl get api
kusk ip
# if public ip not get
kubectl port-forward svc/kusk-gateway-public-envoy-fleet -n kusk-system 8080:80
curl -s localhost:8080/hello | jq
# or
curl -s 172.18.255.200/hello | jqreal api
kubectl create deployment hello-world --image=kubeshop/kusk-hello-world:v1.1.0
kubectl expose deployment hello-world --name hello-world-svc --port=8080
kusk deploy -i examples/api-real.yaml [--envoyfleet.name kusk-gateway-public-envoy-fleet]generate kusk gateway api resource from openapi for ci/cd
kusk generate -i examples/api-mock.yamlstatic route
kubectl create deployment web-app --image=kubeshop/kusk-web-app-example:v1.0.0
kubectl expose deployment web-app --name web-app-svc --port=3000
kubectl apply -f examples/staticroute.yaml
kusk ip
# if public ip not get
kubectl port-forward svc/kusk-gateway-public-envoy-fleet -n kusk-system 8080:80
curl -s localhost:8080
# or
curl -s 172.18.255.200