All Projects → justeat → kongverge

justeat / kongverge

Licence: other
A desired state configuration tool for Kong

Programming Languages

C#
18002 projects

Projects that are alternatives of or similar to kongverge

kongsul
Kong Api Gateway with Consul Service Discovery (MicroService)
Stars: ✭ 35 (+52.17%)
Mutual labels:  kong, kong-gateway
kong-api-gateway-plugin-and-microservices-demo
Creating plugin for Kong API Gateway and Simple micro services example
Stars: ✭ 20 (-13.04%)
Mutual labels:  kong, kong-gateway
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 (+160.87%)
Mutual labels:  kong, kong-gateway
Kong Dashboard
Dashboard for managing Kong gateway
Stars: ✭ 2,142 (+9213.04%)
Mutual labels:  kong, kong-gateway
django-api-bouncer
Simple Django app to provide API Gateways for micro-services
Stars: ✭ 18 (-21.74%)
Mutual labels:  kong, kong-gateway
Kongdash
An elegant desktop client for Kong Admin API
Stars: ✭ 449 (+1852.17%)
Mutual labels:  kong
Wicked.haufe.io
An API Management system based on Mashape Kong
Stars: ✭ 110 (+378.26%)
Mutual labels:  kong
Kongfig
Declarative configuration for Kong
Stars: ✭ 364 (+1482.61%)
Mutual labels:  kong
Docker Compose Healthcheck
How to wait for container X before starting Y using docker-compose healthcheck
Stars: ✭ 292 (+1169.57%)
Mutual labels:  kong
Kong Dist Kubernetes
Kubernetes managed Kong cluster
Stars: ✭ 250 (+986.96%)
Mutual labels:  kong
Kong Ingress
[DEPRECATED] A Kubernetes Ingress for Kong
Stars: ✭ 96 (+317.39%)
Mutual labels:  kong
Quarkus Microservices Poc
Very simplified shop sales system made in a microservices architecture using quarkus
Stars: ✭ 16 (-30.43%)
Mutual labels:  kong
Kong Plugin Response Cache
A Kong plugin that will cache responses in redis
Stars: ✭ 66 (+186.96%)
Mutual labels:  kong
Kong Docs Cn
微服务 Api 网关 Kong 最新文档中文版
Stars: ✭ 371 (+1513.04%)
Mutual labels:  kong
kong-plugin-url-rewrite
Kong API Gateway plugin for url-rewrite purposes
Stars: ✭ 43 (+86.96%)
Mutual labels:  kong
Konga
More than just another GUI to Kong Admin API
Stars: ✭ 3,596 (+15534.78%)
Mutual labels:  kong
Deck
decK: Configuration management and drift detection for Kong
Stars: ✭ 211 (+817.39%)
Mutual labels:  kong
Kongpose
Kong and Konga (admin webapp) development setup on docker-compose
Stars: ✭ 52 (+126.09%)
Mutual labels:  kong
Kong
🦍 The Cloud-Native API Gateway
Stars: ✭ 30,838 (+133978.26%)
Mutual labels:  kong
Kubernetes Ingress Controller
🦍 Kong for Kubernetes: the official Ingress Controller for Kubernetes.
Stars: ✭ 1,347 (+5756.52%)
Mutual labels:  kong

NuGet Build status

Kongverge

A Desired State Configuration tool for Kong.

A command-line tool written in cross-platform .NET Core 2.2.

See the tutorial for examples of how to use Kongverge.

Installation

Kongverge is built as a .NET core global tool.

You can install kongverge as a global tool as follows:

  • First, have .NET Core SDK 2.1 or later installed. At a commandline, dotnet --list-sdks should succeed and show an item for 2.1.0 or later.
  • Install with dotnet tool install kongverge --global.
  • You should then be able to run kongverge from the commandline e.g. kongverge --help

Other operations:

  • Update to latest: dotnet tool update kongverge --global
  • Uninstall: dotnet tool uninstall kongverge --global

This should all work on development and build machines, on Windows, Mac and Linux, as long as the .NET Core 2.1 SDK is installed. Alternatively, this can be built as a standard .NET Core application which only requires the .NET Core runtime rather than the SDK (technically you only need the SDK to install/update/uninstall a .NET core global tool - running it only requires the runtime).

Kong DTOs

Kongverge uses several DTOs to read from files and write to Kong (and vice versa). For simplicity, the field names on these objects generally match what is present in Kong. See KongConfiguration, KongRoute, KongService, KongPlugin which are used to serialize these kong concepts.

These objects also handle matching - i.e. reconciling the state described by files with the state in Kong, and performing actions in Kong as needed to make them the same. The possible cases for these objects are:

  • Unchanged; The object in Kong is identical to the object in config, so no action is required.
  • Changed; the object in Kong is matched with an object in config, but not all of the properties are the same. Action is required to update the object in place.
  • New; the object needs to be added to Kong.
  • Deleted; the object needs to be removed from Kong.

Kongverge is smart enough to perform some basic normalization when comparing object graphs to find differences: It does some basic sorting of arrays and sorting of object properties during comparison.

Kong's plugin model is more complex, as each plugin has its own set of properties used to configure it. We model this as a JObject and the equality comparison checks a normalized version of this object graph.

Kongverge is smart enough to validate these configuration objects when reading from files, taking into account that some properties have default values if omitted (in the case of plugins, it does this by inspecting the associated schema object), and thus will not show an omitted default value as changed.

Testing

Integration tests exist to test Kongverge against a real instance of Kong running in Docker. In order to build the integration tests project, you will need to have Docker installed locally. For development and CI-build purposes, the following steps are required:

  • Before running the integration tests, start the docker services by running docker-compose start from within the integration tests project folder.
  • After running the integration tests (or when required), stop the docker services by running docker-compose stop from within the integration tests project folder.
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].