higress icon indicating copy to clipboard operation
higress copied to clipboard

higress 支持 externalName类型的service

Open qixiaobo opened this issue 11 months ago • 5 comments

Why do you need it?

目前我们使用ingressrule 后面跟上externaleName的类型的Service来访问阿里云 OSS 但是同样的配置在higress无法实现

How could it be?

apiVersion: v1
kind: Service
metadata:
  name: oss-f6-static-svc
  namespace: test
spec:
  type: ExternalName
  externalName: f6-static.oss-cn-shanghai.aliyuncs.com
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: front-root-view-ingress
  annotations:
    kubernetes.io/ingress.class: higress
    nginx.ingress.kubernetes.io/rewrite-target: /hiveview/test/index.html
    nginx.ingress.kubernetes.io/upstream-vhost: f6-static.oss-cn-shanghai.aliyuncs.com
    nginx.ingress.kubernetes.io/use-regex: "true"
spec:
  rules:
    - host: m-test.f6car.org
      http:
        paths:
          - path: /
            backend:
              serviceName: oss-f6-static-svc
              servicePort: 80

{"authority":"m-test.f6car.org","bytes_received":"0","bytes_sent":"0","downstream_local_address":"10.200.69.182:80","downstream_remote_address":"10.200.65.0:7638","duration":"0","istio_policy_status":"-","method":"GET","path":"/","protocol":"HTTP/1.1","request_id":"af21d795-ef17-4bd4-8a3a-f10d9721cc12","requested_server_name":"-","response_code":"503","response_flags":"NC","route_name":"test/thai-root-view-ingress","start_time":"2024-03-04T09:42:00.832Z","trace_id":"-","upstream_cluster":"-","upstream_host":"-","upstream_local_address":"-","upstream_service_time":"-","upstream_transport_failure_reason":"-","user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0","x_forwarded_for":"10.200.65.0"}

但是如果我们换成其他svc都可以正常工作

Other related information

Add any other context or screenshots about the feature request here.

另外我看也有其他人反馈类似的问题 https://github.com/alibaba/higress/discussions/799

qixiaobo avatar Mar 05 '24 02:03 qixiaobo

我测试了externalname service,是没问题的,是不是你的ingress和service不在一个命名空间?

johnlanni avatar Mar 05 '24 02:03 johnlanni

external name service里需要指定端口:

apiVersion: v1
kind: Service
metadata:
  name: oss-f6-static-svc
  namespace: test
spec:
  type: ExternalName
  externalName: f6-static.oss-cn-shanghai.aliyuncs.com
  ports:
  - port: 80
    protocol: TCP

johnlanni avatar Mar 05 '24 02:03 johnlanni

image 还是不行 image

qixiaobo avatar Mar 05 '24 02:03 qixiaobo

apiVersion: v1
kind: Service
metadata:
  name: httpbinorg
  namespace: default
spec:
  type: ExternalName
  externalName: httpbin.org
  ports:
  - port: 80
    protocol: TCP
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: foo
  namespace: default
spec:
  ingressClassName: higress
  rules:
  - http:
      paths:
      - backend:
          service:
            name: httpbinorg
            port:
              number: 80
        path: /get
        pathType: Prefix
status:
  loadBalancer: {}

image

@qixiaobo 这是我的测试配置,你可以对比看下你的配置,检查下是哪里配置有问题

johnlanni avatar Mar 05 '24 02:03 johnlanni

可以试试删除service再重新创建

johnlanni avatar Mar 05 '24 02:03 johnlanni