Skip to content

Docker compose deployment to run Tyk OSS Gateway

Notifications You must be signed in to change notification settings

dcs3spp/tyk-gateway-docker

This branch is 3 commits ahead of, 11 commits behind TykTechnologies/tyk-gateway-docker:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

7638e38 · Apr 24, 2023
Apr 24, 2023
Mar 17, 2021
May 20, 2021
Sep 1, 2022
Jan 28, 2021
Apr 24, 2023
Jan 28, 2021
Apr 24, 2023
Mar 16, 2023
Apr 24, 2023
Apr 24, 2023
Sep 1, 2022
Apr 24, 2023
Sep 1, 2022
Sep 1, 2022
Sep 1, 2022

Repository files navigation

Tyk Gateway Docker

About

This repository is used to try out and demo Tyk OSS Gateway. It contains a docker compose file to spin up Tyk Gateway and Redis. It includes a few example API definitions and plugins to demonstrate Tyk Gateway and help you to learn its capabilities.

Purpose

This repo's goal is to reduce frictions in getting started with Tyk OSS gateway.

  1. Redis - Tyk gateway requires a running Redis. To make an easy start this repo has a docker compose that spins up the gateway and Redis. IF you use our docker compose, the config of the gateway is already set up to connect to the Redis service. As soon as it's up the gateway is ready to use.
  2. API definitions - This is the way to set Tyk Gateway to service your API. To quickly get from zero to a live API behind Tyk gateway use the API defintion examples under the ./apps directory.
  3. Gateway configurations - tyk.conf is set up appropriately and ready to use, including the API key to access/config the the gateway via its APIs.
  • If you want to build Tyk docker image yourself please use this Dockerfile

Project sturcture

This repo has a few libraries that contain the file required to demo some of the Tyk gateway capabilities:


Please continue reading to get Tyk up and running:

Option 1 - Running Full Tyk Deployment Using docker compose

Requirements

Before you start, please install the following binaries:

  • docker compose
  • HTTP Client - There are lots of options in the market:
  • jq - Optional. If you are using a commandline HTTP client like curl, jq will help you to beautify the returned json.

Start up the deployment

Use docker-compose.yaml to spin up a Tyk OSS environment with one command. This will start two services, Tyk gateway and Redis use the following command

$ docker-compose up -d

Check everything is up and running

In the example below we call the /hello endpoint using curl (you can use any HTTP client you want):

curl http://localhost:8080/hello -i

It retunrs the gateway's version and the connection status of Redis.

HTTP/1.1 200 OK
Content-Type: application/json
Date: Mon, 25 Jul 2022 19:16:45 GMT
Content-Length: 156

{
  "status": "pass",
  "version": "v3.2.1",
  "description": "Tyk GW",
  "details": {
    "redis": {
      "status": "pass",
      "componentType": "datastore",
      "time": "2022-07-25T19:16:16Z"
    }
  }
}

Check the loaded apis

To get the list of APIs that Tyk gateway services, run the following:

curl http://localhost:8080/tyk/apis -H "X-Tyk-Authorization: foo"

or in vscode in a some-file.http:

http://localhost:8080/tyk/apis
X-Tyk-Authorization: foo

The reasponse is json array of the API definitons. To beautify the list, use jq:

curl http://localhost:8080/tyk/apis -H "X-Tyk-Authorization: foo" | jq .

Notice that we used the api key (secret) to connect to the gateway. /tyk/apis is the way to configure or check the configuration of Tyk Gateway via APIs and as such it must be protected so only you can connect it.


Option 2 - Running Tyk using docker

If you want to run docker (not docker compose), use the instructions in this doc to get up and running.

Hybrid Gateway - for paying users only!

Hybrid gateway is the same Tyk OSS gateway but here it's connecting to a control plane layer (specifically to a component called MDCB). The control plane can be self managed or via the SaaS offering on Tyk cloud. As such, this option can be used only by paying clients (including users that trial the paying option).

FYI Tyk cloud has also a Cloud Free plan but Hybrid gateways are not part of it.

To set up a Hybrid gateway/cluster of gateways, do the following:

  1. Change the following 3 values in the gateway config file (in this repo it is referred as tyk.hybrid.conf:
    "slave_options": {
        "rpc_key": "<ORG_ID>",
        "api_key": "<API-KEY>",
        "connection_string": "<MDCB-INGRESS>:443",

it should look like this:

    "slave_options": {
        "rpc_key": "j3jf8as9991ad881349",
        "api_key": "adk12k9d891j48df824",
        "connection_string": "persistent-bangalore-hyb.aws-usw2.cloud-ara.tyk.io:443",
  1. Use the hybrid config file in docker compose by mounting it into the Gateway in docker-compose.yml

Change from

- ./tyk.standalone.conf:/opt/tyk-gateway/tyk.conf

To:

- ./tyk.hybrid.conf:/opt/tyk-gateway/tyk.conf

That's it! Now run docker-compose up


PRs

PRs with new examples and fixes are most welcomed. A contributor guide will be added in the future but for the time being, please explain your PR in the description and provide evidence for manual testing of the code.

SLA

First response (clarifying questions/guidance on improvements/answering questions) - target of 48 hours Detailed review and feedback on PRs - target 7 days


Bugs

We'd love to know about any bug or defect you find, no matter how small it is.

SLA

First response (clarifying questions/guidance on improvements/answering questions) - target of 48 hours


Features

We'd love to hear from you. Any feedback, idea or feature request is most welcomed.

SLA

First response (clarifying questions/guidance on improvements/answering questions) - target 72 hours


Todo

Add pump to the docker compose so we can stream analytics to a data sink.


Questions

For question on products, please use Tyk Community forum.

Clients can also use [email protected].

Potential clients and evaluators, please use [email protected].

About

Docker compose deployment to run Tyk OSS Gateway

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 94.0%
  • Makefile 6.0%