• Stars
    star
    196
  • Rank 198,553 (Top 4 %)
  • Language
    Go
  • License
    Mozilla Public Li...
  • Created over 4 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Tyk Operator for Kubernetes

Tyk Operator

Go Report Card

Tyk Gateway is a modern, ultra-performant, purpose-built, and open source API Gateway.

Tyk Operator brings Full Lifecycle API Management capabilities to Kubernetes. You can configure Ingress, APIs, Security Policies, Authentication, Authorization, Mediation by using GitOps best practices with Custom Resources and Kubernetes-native primitives.

API Management with Tyk Operator


Introduction | Documentation | Learning with Videos | Quickstart Examples | IDE Integration | Community


Introduction

What can you do with Tyk Operator?

Tyk Operator can configure Tyk Gateway as a drop-in replacement for standard Kubernetes Ingress. You can manage your API definitions and security policies with it. It also works with the Classic Portal so you can manage your Classic Portal declaratively.

Custom Tyk Objects are available as CRDs and documentation for each of these custom resources are available here.

Tyk Licensing

Tyk Operator and Tyk Gateway are both 100% Open Source. Tyk Operator will operate on a single gateway.

Feel free to reach to our commercial team (or your account manager for existing customers) if you need advice about architecture, licensing, or just to discuss your requirements for runnning in HA, scaling across clusters, nodes & namespaces.

What benefits Tyk Operator has?

You can get the benefits of GitOps with declarative API configurations:

  • Security and Compliance: All changes must go through peer review through pull requests. The configurations are versioned in your version control system and approved by your API Product Owner and Platform team.

  • Kubernetes-Native Developer Experience: API Developers enjoy a smoother Continuous Integration process as they can develop, test, and deploy the microservices and API configurations together using familiar development toolings and pipeline.

  • Reliability: With declarative API configurations, you have a single source of truth to recover after any system failures, reducing the meantime to recovery from hours to minutes.

Documentation

Read more from our Official doc site.

Learn about our CRDs:

Learning with Videos

Quickstart Examples

HTTP Proxy

apiVersion: tyk.tyk.io/v1alpha1
kind: ApiDefinition
metadata:
  name: httpbin
spec:
  name: httpbin
  do_not_track: false
  use_keyless: true
  protocol: http
  active: true
  proxy:
    target_url: http://httpbin.org
    listen_path: /httpbin
    strip_listen_path: true

TCP Proxy

apiVersion: tyk.tyk.io/v1alpha1
kind: ApiDefinition
metadata:
  name: redis-tcp
spec:
  name: redis-tcp
  active: true
  protocol: tcp
  listen_port: 6380
  proxy:
    target_url: tcp://localhost:6379

GraphQL Proxy

apiVersion: tyk.tyk.io/v1alpha1
kind: ApiDefinition
metadata:
  name: trevorblades
spec:
  name: trevorblades
  use_keyless: true
  protocol: http
  active: true
  proxy:
    target_url: https://countries.trevorblades.com
    listen_path: /trevorblades
    strip_listen_path: true
  graphql:
    enabled: true
    execution_mode: proxyOnly
    schema: |
      directive @cacheControl(maxAge: Int, scope: CacheControlScope) on FIELD_DEFINITION | OBJECT | INTERFACE

      enum CacheControlScope {
        PUBLIC
        PRIVATE
      }

      type Continent {
        code: ID!
        name: String!
        countries: [Country!]!
      }

      input ContinentFilterInput {
        code: StringQueryOperatorInput
      }

      type Country {
        code: ID!
        name: String!
        native: String!
        phone: String!
        continent: Continent!
        capital: String
        currency: String
        languages: [Language!]!
        emoji: String!
        emojiU: String!
        states: [State!]!
      }

      input CountryFilterInput {
        code: StringQueryOperatorInput
        currency: StringQueryOperatorInput
        continent: StringQueryOperatorInput
      }

      type Language {
        code: ID!
        name: String
        native: String
        rtl: Boolean!
      }

      input LanguageFilterInput {
        code: StringQueryOperatorInput
      }

      type Query {
        continents(filter: ContinentFilterInput): [Continent!]!
        continent(code: ID!): Continent
        countries(filter: CountryFilterInput): [Country!]!
        country(code: ID!): Country
        languages(filter: LanguageFilterInput): [Language!]!
        language(code: ID!): Language
      }

      type State {
        code: String
        name: String!
        country: Country!
      }

      input StringQueryOperatorInput {
        eq: String
        ne: String
        in: [String]
        nin: [String]
        regex: String
        glob: String
      }

      """The `Upload` scalar type represents a file upload."""
      scalar Upload
    playground:
      enabled: true
      path: /playground

Universal Data Graph - Stitching REST with GraphQL

apiVersion: tyk.tyk.io/v1alpha1
kind: ApiDefinition
metadata:
  name: udg
spec:
  name: Universal Data Graph Example
  use_keyless: true
  protocol: http
  active: true
  proxy:
    target_url: ""
    listen_path: /udg
    strip_listen_path: true
  graphql:
    enabled: true
    execution_mode: executionEngine
    schema: |
      type Country {
        name: String
        code: String
        restCountry: RestCountry
      }

      type Query {
        countries: [Country]
      }

      type RestCountry {
        altSpellings: [String]
        subregion: String
        population: String
      }
    type_field_configurations:
      - type_name: Query
        field_name: countries
        mapping:
          disabled: false
          path: countries
        data_source:
          kind: GraphQLDataSource
          data_source_config:
            url: "https://countries.trevorblades.com"
            method: POST
            status_code_type_name_mappings: []
      - type_name: Country
        field_name: restCountry
        mapping:
          disabled: true
          path: ""
        data_source:
          kind: HTTPJSONDataSource
          data_source_config:
            url: "https://restcountries.com/v2/alpha/{{ .object.code }}"
            method: GET
            default_type_name: RestCountry
            status_code_type_name_mappings:
              - status_code: 200
    playground:
      enabled: true
      path: /playground

IDE Integration

API developers may add K8s extensions to popular IDEs to enjoy auto-completion while editing Tyk CRD YAML files. Here's the detail steps.

VS Code

Watch video tutorial here.

Steps
  1. Go to the following link: https://marketplace.visualstudio.com/items?itemName=ms-kubernetes-tools.vscode-kubernetes-tools
  2. Click on Install. This will prompt you to open Visual Studios.
  3. Click Open Visual Studios at the subsequent prompt. This will open VS Code and take you to the Extensions' section.
  4. Click Install in the Kubernetes extension page.

Note: The extension should take effect immediately. In case it doesn't, simply restart VS Code.

GoLand

Steps
  1. Open Plugins settings following official GoLand documentation https://www.jetbrains.com/help/go/managing-plugins.html
  2. Install Kubernetes plugin (https://plugins.jetbrains.com/plugin/10485-kubernetes)
  3. Open GoLand Preferences as described here,
  4. Go to Languages & Frameworks > Kubernetes
  5. Click Add URLs and add https://raw.githubusercontent.com/TykTechnologies/tyk-operator/{version_tag}/helm/crds/crds.yaml,
    1. For example, if you would like to use CRDs of v0.9.0, replace {version_tag} with v0.9.0 and add https://raw.githubusercontent.com/TykTechnologies/tyk-operator/v0.9.0/helm/crds/crds.yaml
    2. Please add CRDs of master for latest CRDs, as follows https://raw.githubusercontent.com/TykTechnologies/tyk-operator/master/helm/crds/crds.yaml goland-support
  6. Apply and save changes.

Community

Tyk Operator is under active development.

We are building the operator to enable you to build and ship your APIs faster and more safely.

If you find any defects, please raise an issue. We welcome code contributions as well.

If you require any features that we have not yet implemented, please take your time to create a GitHub issue detailing your use case so that we may prioritise accordingly.

For larger and more in-depth feature requests, please consider starting an RFC thread in the Discussions area.

More Repositories

1

tyk

Tyk Open Source API Gateway written in Go, supporting REST, GraphQL, TCP and gRPC protocols
Go
9,653
star
2

tyk-pump

Tyk Analytics Pump to move analytics data from Redis to any supported back end (multiple back ends can be written to at once).
Go
122
star
3

tyk-identity-broker

Tyk Authentication Proxy for third-party login
Go
108
star
4

tyk-gateway-docker

Docker compose deployment to run Tyk OSS Gateway
JavaScript
92
star
5

tyk-pro-docker-demo

Tyk Pro demo using docker and docker compose, supercedes tyk_quickstart
Shell
72
star
6

tyk-helm-chart

A Helm chart repository to install Tyk Pro (with Dashboard), Tyk Hybrid or Tyk Headless chart.
Mustache
71
star
7

tyk-docs

Docs for Tyk Open source API gateway and API management platform. 100% Cloud native
SCSS
67
star
8

tyk-sync

Tyk Sync - move Tyk configurations between multiple environments
Go
65
star
9

tyk-kubernetes

Tyk + Kubernetes integration (guide).
61
star
10

tyk-demo

Tyk Docker Demo with full Pro Tyk Installation and more!
Shell
53
star
11

demo-slo-prometheus-grafana

SLIs and SLOs with Prometheus and Grafana for your APIs managed by Tyk
JavaScript
46
star
12

tyk-ansible-performance-testing

Ansible playbook to run performance tests for the Tyk Gateway, as well as Kong Gateway, and Apollo Server
Shell
42
star
13

tyk-cli

Tyk plugin bundler utility
Go
36
star
14

custom-plugin-examples

Custom plugin examples for the Tyk Gateway - if you ever needed to extend the functionality!
C#
34
star
15

gromit

The glue that bonds AWS, terraform and Github Actions.
Go
29
star
16

tyk-k8s-bootstrap

Bootstraps tyk-stack Helm Chart in Kubernetes.
Go
28
star
17

tyk-oss-k8s-deployment

Deployment yamls to run Tyk Gateway and Redis in a Kubernetes environment
28
star
18

tyk-custom-portal

Custom developer portal writing for the documentation purpose.
Ruby
25
star
19

custom-go-plugin

A barebones repository for creating & developing go plugins.
Shell
25
star
20

go-plugins-template

Examples of using native Go plugin, to dynamically extend and patch your Go apps.
Go
25
star
21

github-actions

Collection of shared github actions
Python
24
star
22

tyk-ui

Collection of re-usable UI components used to build Tyk products
JavaScript
24
star
23

tyk-k8s-demo

Get started with Tyk on k8s
Shell
23
star
24

mserv

Mserv is a bundle server and gRPC plugin runner for Tyk middleware written in Go
Go
23
star
25

tyk-protobuf

Protocol Buffer definitions for Tyk gRPC middlewares.
Java
22
star
26

drl

Distributed Load Balancer Helper Library
Go
22
star
27

tyk-charts

Smarty
22
star
28

golang-project-template

Use it as a baseline for your Golang projects
Go
21
star
29

tyk-ansible

Shell
21
star
30

vscode-tyk

Tyk VSCode extension
JavaScript
21
star
31

tyk-k8s-integrations

Shell
17
star
32

akita-helm-chart

Helm charts for akita that can be added to a kubenertes cluster to create OAS automatically.
16
star
33

packagecloud-action

Github Action to upload packages to packagecloud.io
Shell
15
star
34

goverify

RSA Verifier
Go
14
star
35

momo

Momo will give your API wings!
Go
14
star
36

tyk-analytics-tests

JavaScript
14
star
37

portal-tests

UI automated tests for Portal
JavaScript
14
star
38

actions

GitHub Actions used on various Tyk Cloud projects
14
star
39

tyk-hybrid-dc

For connecting Hybrid Gateways to Tyk Cloud
Shell
13
star
40

graphiql

JavaScript
13
star
41

tyk-bank

Full Stack application running with Tyk Gateway
TypeScript
13
star
42

tyk-pro-mdcb-docker-demo

Dockerfile
12
star
43

tyk-pump-docker-pub

Tyk Pump Docker Build
Dockerfile
12
star
44

tyk-plugin-demo-golang

Tyk Plugin Demo with Go (gRPC based)
Go
11
star
45

tyk-awesome-plugins

10
star
46

ui_test_automation

JavaScript
9
star
47

tyk-terraform

Terraform modules and examples for deploying Tyk on various platforms
HCL
9
star
48

tyk-plugin-demo-python

Custom Authentication With a Python Plugin
Python
8
star
49

tyk-plugin-demo-dotnet

Tyk rich plugin demo, using a gRPC backend written in C# / .NET.
C#
8
star
50

native-oauth-middleware-poc

8
star
51

tyk-hybrid-docker

Tyk Hybrid Mode Docker Image
Shell
8
star
52

terraform-provider-tyk

Go
7
star
53

tyk-dashboard-languages

Langauge packs for Tyk Dashboard UI
7
star
54

tyk-k8s

Kubernetes ingress controller and sidecar injector for Tyk API Gateway
Go
7
star
55

qa-automation-utils

7
star
56

codecraft-day3-evilfizzbuzz

Go
7
star
57

demo-api-observability-opentelemetry

Demo - API Observability with Tyk, OpenTelemetry, Jaeger and Grafana
JavaScript
7
star
58

tykctl

OpenAPI Specification for the cloud controller
Go
6
star
59

tykcommon

Tyk common objects [DEPRECATED]
Go
6
star
60

tyk-cluster-framework

Wrapper for pub/sub transports
Go
6
star
61

tyk-plugin-demo-java

A Java gRPC plugin for Tyk.
Java
6
star
62

tyk-grpc-proxy-bakery-docker

Docker container to make building gRPC proxies for Tyk easier.
Shell
5
star
63

tyk-grpc-go-basicauth-jwt

Custom BasicAuth with JWT to Upstream
Go
5
star
64

native-go-auth-middleware

Built to be run natively as a package by Tyk Gateway, will check basic auth credentials against AWS' DynamoDB
Go
5
star
65

tyk-api-platform-k8s-demo

This repository will help you get started with Tyk OSS in kubernetes and allow you to leverage OSS tools such as Keycloak and the Tyk Operator to manage your API authentication and authorization in k8s using OAuth2.0
5
star
66

tyk-jenkins-cicd-example

Example of a Jenkins CI/CD workflow
4
star
67

tyk-plugin-correlation

Add a correlation ID to your requests, and trace them as they pass through your infrastructure. Requirements
Python
4
star
68

tyk-oauth-flow-example

A full OAuth flow example project using the Tyk API Gateway
Go
4
star
69

tyk-examples

A repository containing example API definitions and policies for Tyk products.
3
star
70

tyk-docker-simple-node-api

Shell
3
star
71

meetups

Repo for our meetups aroiund the world
JavaScript
3
star
72

tyk-email-driver

Common Tyk mmail driver
Go
3
star
73

tyk-heroku

Tyk Hybrid application for Heroku
Smarty
3
star
74

tyk-tutorials

Shell
3
star
75

pm

Tyk Project management and Release management tools
Go
3
star
76

opentelemetry

Internal Tyk Opentelemetry library
Go
3
star
77

tyk-performance-testing

HCL
3
star
78

tyk-plugin-coprocess-grpc-java-custom-auth

A Java gRPC plugin for Tyk using Custom Middleware Authentication
Java
3
star
79

tyk-plugin-queue

Send messages to a queue server.
Python
3
star
80

go-plugin-compiler-action

Github Action to build a go plugin for a gateway version
Shell
3
star
81

storage

Tyk storage abstraction library
Go
3
star
82

labs-streams

Go
3
star
83

go-bindata

Go
2
star
84

graphql-translator

graphql-translator is a library that takes OpenAPI and AsyncAPI documents and translates them into GraphQL documents.
Go
2
star
85

tyk-apis

generate open api schema from go structs using kubebuilder validation annotation
Go
2
star
86

auth-poc-examples

Integrating different auth types right in the UI
TypeScript
2
star
87

again

graceful restarts with multiple listeners support for Go
Go
2
star
88

plugin-middleware

Go
2
star
89

nordic-2018-lab

Go
2
star
90

tykcommon-logger

[DEPRECATED] Common logging across Tyk projects
Go
2
star
91

tyk-plugin-datadog

This plugin sends log data to a Datadog agent.
Python
2
star
92

tyk-build-env

Docker environment used to build official images and plugins
Dockerfile
2
star
93

tyk-plugin-loggly

Send log data to Loggly.
Python
1
star
94

tyk-python-ldap-demo

Demo Tyk plugin to authenticate an API against an LDAP server
Python
1
star
95

tyk-plugin-webhook

Trigger a webhook from Tyk.
Python
1
star
96

mongostore

Gorilla's Session store implementation with MongoDB. Fork from original to support deprecated mgo library.
Go
1
star
97

tyk-swagger-definitions

Tyk swagger (OpenAPI) definition files (DEPRECATED)
1
star
98

tyk-plugin-demo-ruby

Ruby
1
star
99

backstage-tyk-entity-provider

TypeScript
1
star
100

tyk-ci

Infrastructure definition for CI
HCL
1
star