我想做的是在default命名空间中有一个服务,并在我的其他命名空间中有入口,它们指向该服务。我尝试实现如下所示的服务和Ingress,但没有成功。

kind: Service
apiVersion: v1
metadata:
  name: serviceX
  namespace: default
spec:
  type: ExternalName
  externalName: serviceX.default.svc.cluster.local
ports:
- port: 123


kind: Ingress
apiVersion: extensions/v1beta1
metadata:
  name: web-ingress-test-vpndev
  namespace: my-namespace
spec:
  tls:
  - hosts:
    - abc.my-namespace.domain.com
    secretName: tls-secret-my-namespace
  rules:
  - http:
      paths:
      - path: "/"
        backend:
          serviceName: serviceX
          servicePort: 123
status:
  loadBalancer:
    ingress: {}

我知道我可以在每个命名空间中实现服务,但是我想知道是否可以有一个服务。如果我尝试在入口的externalName处理程序中键入服务的backend->serviceName,则会收到错误消息,说该服务的名称只能包含数字,字母和'-'。

最佳答案

我不得不说这不是一个好方法。因为不同NS中的所有入口都将转换为Nginx规则,并在入口 Controller 容器中生效。

如果您看一下Nginx规则(入口 Controller Pane 中的nginx.conf),您会看到location中的每个nginx.conf块都有变量set $namespace "****";,这意味着该入口已被NS隔离

另外,如果您仍然想实现自己的想法,则可能需要修改入口 Controller 。

关于kubernetes - 是否有可能从另一个 namespace 指向服务的入口?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59305999/

10-15 20:22