kubeshop / kusk-gateway

Kusk-gateway is an OpenAPI-driven API Gateway for Kubernetes
https://kubeshop.github.io/kusk-gateway/
MIT License
260 stars 21 forks source link

first run at overlays #966

Closed jasmingacic closed 1 year ago

jasmingacic commented 1 year ago

Signed-off-by: jasmingacic jasmin.gacic@gmail.com

Be gentle it is very crude at this point a lot of improv but hold on :D

netlify[bot] commented 1 year ago

Deploy Preview for kusk-docs-preview canceled.

Name Link
Latest commit c1667db8924449ab9a200f1e9f6b9f65fef856c9
Latest deploy log https://app.netlify.com/sites/kusk-docs-preview/deploys/637cb6a1deab8600094975a8
jasmingacic commented 1 year ago

Testing samples:

OpenApi spec:

components: {}
info:
  title: simple-api
  version: 0.1.0
openapi: 3.0.0
paths:
  /hello:
    get:
      responses:
        "200":
          content:
            application/json:
              example:
                message: Hello from a mocked response!
              schema:
                properties:
                  message:
                    type: string
                type: object
          description: A simple hello world!
  /validated:
    post:
      requestBody:
        content:
          application/json:
            schema:
              properties:
                name:
                  type: string
              required:
                - name
              type: object
      responses:
        "200":
          content:
            text/plain:
              example: Hello mocked Kusk!
              schema:
                type: string
          description: ""

Overlay sample:

overlays: 1.0.0
extends: ./test.yaml
actions:
  - target: "$"
    update:
      x-kusk:
        upstream:
          service:
            name: httpbin
            namespace: default
            port: 8080

run go run cmd/kusk/main.gp generate -i overlay.yaml Output:


---
apiVersion: gateway.kusk.io/v1alpha1
kind: API
metadata:
  name: simple-api
  namespace: default
spec:
  fleet:
    name: kusk-gateway-envoy-fleet
    namespace: kusk-system
  spec: |
    components: {}
    info:
      title: simple-api
      version: 0.1.0
    openapi: 3.0.0
    paths:
      /hello:
        get:
          responses:
            "200":
              content:
                application/json:
                  example:
                    message: Hello from a mocked response!
                  schema:
                    properties:
                      message:
                        type: string
                    type: object
              description: A simple hello world!
      /validated:
        post:
          requestBody:
            content:
              application/json:
                schema:
                  properties:
                    name:
                      type: string
                  required:
                  - name
                  type: object
          responses:
            "200":
              content:
                text/plain:
                  example: Hello mocked Kusk!
                  schema:
                    type: string
              description: ""
    x-kusk:
      upstream:
        service:
          name: httpbin
          namespace: default
          port: 8080