我正在尝试将 Kong 设置为 Kubernetes 集群中的 API 网关。我有一个名为
quick-links-service
的服务在 default
命名空间中运行,我想在 kong
命名空间中安装 Kong 以将请求路由到该服务。这是我的 Ingress 资源的 YAML:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: quick-links-ingress
annotations:
konghq.com/strip-path: 'true'
spec:
ingressClassName: kong
rules:
- host: kong.example
http:
paths:
- path: /quick-links
pathType: Prefix
backend:
service:
name: quick-links-service
port:
number: 3000
我尝试使用以下命令在 kong 命名空间中使用 Helm 安装 Kong:
helm install kong kong/kong --namespace kong --set admin.useTLS=false,admin.enabled=true,admin.http.enabled=true
我转发了
kong
pod 的端口:
kubectl port-forward kong-kong-b7f7889d-mwlf9 -n kong 8001:8001
当我点击
http://localhost:80001/services
时,我得到以下回复:
{
"next": null,
"data": [
{
"id": "0061fec8-7d38-5786-aa81-4174caf13e05",
"enabled": true,
"write_timeout": 60000,
"tls_verify": null,
"name": "default.quick-links-service.3000",
"retries": 5,
"path": "/",
"port": 3000,
"tags": [
"k8s-name:quick-links-service",
"k8s-namespace:default",
"k8s-kind:Service",
"k8s-uid:c5065699-bbef-41ba-a495-a6b643021da6",
"k8s-version:v1"
],
"ca_certificates": null,
"client_certificate": null,
"protocol": "http",
"connect_timeout": 60000,
"created_at": 1708140855,
"read_timeout": 60000,
"tls_verify_depth": null,
"host": "quick-links-service.default.3000.svc",
"updated_at": 1708140855
}
]
}
但是,我在配置 Kong 将请求路由到
quick-links-service
时遇到了麻烦。
如何正确配置 Kong 和 Ingress 资源来实现此目的并在本地使用 kong 访问
quick-links
?
当您有多个入口控制器且 Kong 不是默认控制器时,您应该使用 Kong CRD 来指定其配置。
Kong 入口控制器提供自定义资源定义
KongIngress
来定义 Kong 特定配置属性:
apiVersion: configuration.konghq.com/v1
kind: KongIngress
metadata:
name: quick-links-ingress
labels:
quick-links-ingress-selector
route:
strip_path: true
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: quick-links-ingress
labels:
quick-links-ingress-selector
spec:
ingressClassName: kong
rules:
- host: kong.example
http:
paths:
- path: /quick-links
pathType: Prefix
backend:
service:
name: quick-links-service
port:
number: 3000