如何在特定命名空间中安装 Kong 并使用 Kubernetes Ingress 将请求路由到服务?

问题描述 投票:0回答:1

我正在尝试将 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

kubernetes kubernetes-helm kong kong-ingress
1个回答
0
投票

当您有多个入口控制器且 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
© www.soinside.com 2019 - 2024. All rights reserved.