All Projects → TykTechnologies → tyk-operator

TykTechnologies / tyk-operator

Licence: MPL-2.0 license
Tyk Operator for Kubernetes

Programming Languages

go
31211 projects - #10 most used programming language
Gherkin
971 projects
Makefile
30231 projects

Projects that are alternatives of or similar to tyk-operator

rabbitmq-operator
RabbitMQ Kubernetes operator
Stars: ✭ 16 (-81.82%)
Mutual labels:  k8s, operator-sdk
Scalecube Services
ScaleCube Services is a high throughput, low latency reactive microservices library built to scale. it features: API-Gateways, service-discovery, service-load-balancing, the architecture supports plug-and-play service communication modules and features. built to provide performance and low-latency real-time stream-processing. its open and designed to accommodate changes. (no sidecar in a form of broker or any kind)
Stars: ✭ 482 (+447.73%)
Mutual labels:  api-gateway, k8s
kong-map
Kongmap is a free visualization tool which allows you to view and edit configurations of your Kong API Gateway Clusters, including Routes, Services, and Plugins/Policies. The tool is being offered for installation via Docker and Kubernetes at this time.
Stars: ✭ 60 (-31.82%)
Mutual labels:  api-gateway, k8s
Tyk
Tyk Open Source API Gateway written in Go, supporting REST, GraphQL, TCP and gRPC protocols
Stars: ✭ 6,968 (+7818.18%)
Mutual labels:  api-gateway, k8s
Citrix K8s Ingress Controller
Citrix ADC (NetScaler) Ingress Controller for Kubernetes:
Stars: ✭ 256 (+190.91%)
Mutual labels:  api-gateway, k8s
Tyk Kubernetes
Tyk + Kubernetes integration (guide).
Stars: ✭ 63 (-28.41%)
Mutual labels:  api-gateway, k8s
tondra
Continuous Development on Kubernetes environments with Skaffold
Stars: ✭ 105 (+19.32%)
Mutual labels:  k8s
ansible-role-k8s
This role render an arbitrary number of Jinja2 templates and deploys or removes them to/from Kubernetes clusters.
Stars: ✭ 26 (-70.45%)
Mutual labels:  k8s
k8s-set-context
GitHub Action for setting context and retrieving Kubeconfig before deploying to Kubernetes clusters
Stars: ✭ 51 (-42.05%)
Mutual labels:  k8s
api-lambda-save-dynamodb
Deploy instantly on Serverless Application Repository
Stars: ✭ 55 (-37.5%)
Mutual labels:  api-gateway
fastify-gateway
A Node.js API gateway that just works!
Stars: ✭ 88 (+0%)
Mutual labels:  api-gateway
katana-skipper
Simple and flexible ML workflow engine
Stars: ✭ 234 (+165.91%)
Mutual labels:  k8s
mysql-operator
A Kubernetes Operator for MySQL Community Server
Stars: ✭ 21 (-76.14%)
Mutual labels:  operator-sdk
k8s-buildkite-plugin
Run any buildkite build step as a Kubernetes Job
Stars: ✭ 37 (-57.95%)
Mutual labels:  k8s
cicd-demo
A demo repository that shows CI/CD integration using DroneCI + ArgoCD + Kubernetes.
Stars: ✭ 36 (-59.09%)
Mutual labels:  k8s
horusec-platform
Horusec Platform is a set of web services that integrate with the Horusec CLI to facilitate the visualization and management of found vulnerabilities.
Stars: ✭ 32 (-63.64%)
Mutual labels:  operator-sdk
kong-ui
UI for KONG API Gateway
Stars: ✭ 20 (-77.27%)
Mutual labels:  api-gateway
netmaker
Netmaker makes networks with WireGuard. Netmaker automates fast, secure, and distributed virtual networks.
Stars: ✭ 4,147 (+4612.5%)
Mutual labels:  k8s
bff
A proxy to help your team adopt the Backend for Frontend (BFF) cloud pattern
Stars: ✭ 17 (-80.68%)
Mutual labels:  api-gateway
k8s-nuclei-templates
Nuclei templates for K8S security scanning
Stars: ✭ 85 (-3.41%)
Mutual labels:  k8s

Tyk Operator

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

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


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


Documentation

Read more about the concepts here.

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

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
  org_id: acme.com
  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

This section details the steps required to add K8s extensions to popular IDEs.

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.

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 the 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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].