#kong #knative #knative-serving
Вопрос:
Допустим, у нас есть много микросервисов, работающих на k8s, с развертываниями, службами и входами, доступными через входной шлюз kong на api.localhost.
Каждая микросервисная служба выполняется по определенному пути, например
api.localhost/foo
для микросервиса fooapi.localhost/bar
для микросервиса бара
Как добиться этого с помощью Knative с сетевым уровнем Kong? Что-то вроде этого не работает:
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: foo-api
labels:
networking.knative.dev/visibility: cluster-local
spec:
template:
spec:
containers:
- image: foo-image
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: kong
konghq.com/strip-path: "true"
ingress.kubernetes.io/service-upstream: "true"
name: foo
spec:
rules:
- host: api.localhost
http:
paths:
- backend:
service:
name: foo-api
port:
number: 80
path: /foo
pathType: ImplementationSpecific
https://github.com/Kong/kubernetes-ingress-controller/issues/584
https://knative.dev/docs/serving/samples/knative-routing-go/
Комментарии:
1. Я неправильно спрашиваю?
Ответ №1:
Я нашел это решение
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: knative-service-test
namespace: default
spec:
template:
spec:
containers:
- image: ealen/echo-server:latest
---
apiVersion: configuration.konghq.com/v1
kind: KongPlugin
metadata:
name: request-transformer-example
namespace: kong
plugin: request-transformer
config:
replace:
headers:
- 'host:knative-service-test.default.example.com'
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: demo
namespace: kong
annotations:
kubernetes.io/ingress.class: kong
plugins.konghq.com: request-transformer-example
spec:
rules:
- http:
paths:
- path: /temp
backend:
serviceName: kong-proxy
servicePort: 80
https://github.com/Kong/kubernetes-ingress-controller/issues/706
Но мне нужен правильный заголовок хоста в моем сервисе в вопросе мультитенантности.