The tyk-k8s-demo library allows you
to stand up an entire Tyk Stack with all its dependencies as well as other tools that can integrate with Tyk.
The library will spin up everything in Kubernetes using helm
and bash magic to get you started.
Minimize the amount of effort needed to stand up the Tyk infrastructure and show examples of how Tyk can be setup in k8s using different deployment architectures as well as different integrations.
You will need the following tools to be able to run this library.
Tested on Linux/Unix based systems on AMD64 and ARM architectures
Create .env
file and update the appropriate fields with your licenses. If you require a trial license you can obtain one
here. If you are looking to use the tyk-gateway
deployment only you will not require any licensing
as that is the open source deployment.
git clone https://github.com/TykTechnologies/tyk-k8s-demo.git
cd tyk-k8s-demo
cp .env.example .env
Depending on the deployments you would like install set values of the LICENSE
,
MDCB_LICENSE
and PORTAL_LICENSE
inside the .env
file.
If you are deploying this on Minikube, you will need to enable the ingress addon. You do so by running the following:
minikube start
minikube addons enable ingress
./up.sh --deployments portal,operator-httpbin tyk-stack
This quick start command will stand up the entire Tyk stack along with the Tyk Enterprise Portal and the Tyk Operator and httpbin CRD example.
tyk-stack
: Tyk single region self-managed deploymenttyk-cp
: Tyk self-managed multi region control planetyk-dp
: Tyk self-managed data plane, this can connect to Tyk Cloud or a Tyk Control Planetyk-gateway
: Tyk oss self-managed single region
redis
: Bitnami Redis deploymentredis-cluster
: Bitnami Redis Cluster deploymentredis-sentinel
: Bitnami Redis Sentinel deployment
mongo
: Bitnami Mongo database deployment as a Tyk backendpostgres
: Bitnami Postgres database deployment as a Tyk backend
Please see this page for Tyk deployments compatibility charts.
- datadog: connects tyk deployments analytics and logs to datadog.
- elasticsearch: connects tyk deployments analytics to elasticsearch.
- elasticsearch-kibana: connects a Kibana installment to the elasticsearch deployment.
- k6: generates a load of traffic to seed analytical data.
- k6-slo-traffic: generates a load of traffic to seed analytical data.
- keycloak: stands up a keycloak deployment.
- keycloak-dcr: stands up a keycloak Dynamic Client Registration example.
- keycloak-sso: stands up a keycloak SSO example with Tyk dashboard.
- keycloak-jwt: stands up a keycloak JWT Authentication example with Tyk.
- operator: this deployment option will install the Tyk Operator and its dependency cert-manager.
- operator-httpbin: creates API examples using the tyk-operator.
- operator-graphql: creates GraphQL API examples using the tyk-operator.
- operator-udg: creates Universal Data Graph API examples using the tyk-operator.
- operator-federation: creates Federation v1 API examples using the tyk-operator.
- portal: this deployment will install the Tyk Enterprise Developer Portal as well as its dependency PostgreSQL.
- prometheus: this deployment will stand up a Tyk Prometheus pump with custom analytics.
- prometheus-grafana: connects a Grafana installment to the Prometheus deployment.
- resurface: this deployment will stand up a Tyk Resurface pump with the Resurface.io installment.
If you are running a POC and would like an example of how to integrate a specific tool. Please submit a request through the repository here.
./up.sh \
--storage postgres \
--deployments prometheus-grafana \
tyk-stack
The deployment will take 10 minutes as the installation is sequential and the dependencies require a bit of time before they are stood up. Once the installation is complete, the script will print out a list of all the services that were stood up and how those can be accessed. The k6s job will start running after the script is finished and will run in the background for 15 minutes to generate traffic over that period of time. To visualize the live traffic, you can use the credentials provided by the script to access Grafana or the Tyk Dashboard.
Create and start up the deployments
Usage:
./up.sh [flags] [command]
Available Commands:
tyk-stack
tyk-cp
tyk-dp
tyk-gateway
Flags:
-v, --verbose bool set log level to debug
--dry-run bool set the execution mode to dry run. This will dump the kubectl and helm commands rather than execute them
-n, --namespace string namespace the tyk stack will be installed in, defaults to 'tyk'
-f, --flavor enum k8s environment flavor. This option can be set 'openshift' and defaults to 'vanilla'
-e, --expose enum set this option to 'port-forward' to expose the services as port-forwards or to 'load-balancer' to expose the services as load balancers or 'ingress' which exposes services as a k8s ingress object. Defaults to 'port-forward'
-r, --redis enum the redis mode that tyk stack will use. This option can be set 'redis', 'redis-sentinel' and defaults to 'redis-cluster'
-s, --storage enum database the tyk stack will use. This option can be set 'mongo' and defaults to 'postgres'
-d, --deployments string comma separated list of deployments to launch
-c, --cloud enum stand up k8s infrastructure in 'aws', 'gcp' or 'azure'. This will require Terraform and the CLIs associate with the cloud of choice
Shutdown deployment
Usage:
./down.sh [flags]
Flags:
-v, --verbose bool set log level to debug
-n, --namespace string namespace the tyk stack will be installed in, defaults to 'tyk'
-p, --ports bool disconnect port connections only
-c, --cloud enum tear down k8s cluster stood up
For more information, please see the docs' folder.