我设置了一个对象,根据路径Ingress将流量路由到适当的位置。我想在另一个. 我想知道这是否可能?ServiceUrlIngressPod
我尝试设置一个Service但Ingress似乎不起作用。
pea*_*ake 10
因此,无论出于何种原因(SSR、大量微服务等),您都希望使用其入口路径映射来访问 k8s 资源,而不是通过其内部名称来调用每个服务。例如,您有一个像这样的入口配置:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ingress-service
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/use-regex: 'true'
spec:
rules:
- host: example.com
http:
paths:
- path: /api/users/?(.*)
backend:
serviceName: auth-service
servicePort: 80
- path: /api/cart/?(.*)
backend:
serviceName: cart-service
servicePort: 80
Run Code Online (Sandbox Code Playgroud)
并且您想auth-service使用http://example.com/api/auth而不是访问http://auth-service。
您所要做的就是将域部分(example.com在我们的例子中)替换为入口服务 url。这取决于您的配置和环境,但通常看起来像http://[SERVICE_NAME].[NAMESPACE],例如:
http://ingress-nginx-controller.ingress-nginxhttp://my-release-ingress-nginx-controller(这里我们仅使用服务名称部分,因为 helm 在默认命名空间中安装 ingress)获取命名空间:kubectl get namespaces
获取命名空间内的服务名称kubectl get services -n [NAMESPACE]。
Nic*_*Ben -1
在集群内部services,您的 Pod 用于访问其他 Pod。
客户端可以从集群外部ingress访问服务。
入口资源允许连接到服务。因此,您的 pod 需要可通过服务(以下示例中的 my-svc-N)访问,您将在入口定义中使用该服务。
看一下这个例子:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: example-ing
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
backend:
serviceName: default-http-backend
servicePort: 80
rules:
- host: my-kube.info
http:
paths:
- path: /
backend:
serviceName: my-svc-1
servicePort: 80
- host: cheeses.all
http:
paths:
- path: /aaa
backend:
serviceName: my-svc-2
servicePort: 80
- path: /bbb
backend:
serviceName: my-svc-3
servicePort: 80
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8148 次 |
| 最近记录: |