我试图将kubernetes上的入口连接到外部服务,例如ip为172.217.21.14的172.217.21.14。
所以当我去service.test.ai的时候,它会把我送到google.com,但是它不起作用。
以下是清单:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
#kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/ingress.class: "nginx"
name: external-service
spec:
rules:
- host: service.test.ai
http:
paths:
- backend:
serviceName: external-ip
servicePort: 80
path: /apiVersion: v1
kind: Service
metadata:
name: external-ip
spec:
ports:
- name: app
port: 80
protocol: TCP
targetPort: 80
---
apiVersion: v1
kind: Endpoints
metadata:
name: external-ip
subsets:
- addresses:
- ip: 172.217.21.14
ports:
- name: app
port: 80
protocol: TCP发布于 2021-05-26 18:23:48
如果外部服务具有DNS名称域,则可以在kubernetes中使用外部服务。
所以流动会是这样的:
ingress > service > external service
apiVersion: v1
kind: Service
metadata:
name: external-service
spec:
type: ExternalName
externalName: google.com现在进场就像
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: externalNameservice
spec:
rules:
- host: service.example.com
http:
paths:
- backend:
serviceName: my-service
servicePort: 80
path: /如果您想使用IP地址,则只能使用您的方法。
apiVersion: v1
kind: Service
metadata:
name: external-ip
spec:
ports:
- name: app
port: 80
protocol: TCP
targetPort: 5678
clusterIP: None
type: ClusterIP
---
apiVersion: v1
kind: Endpoints
metadata:
name: external-ip
subsets:
- addresses:
- ip: 172.217.21.14
ports:
- name: app
port: 80
protocol: TCP检查服务clusterIP也检查SSL注释
nginx.ingress.kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/ssl-redirect: "false"UPdate:
正如您提到的,如果您想重定向或重写流量,我只是为两者提供一个小示例。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
cert-manager.io/cluster-issuer: wordpress-prod
nginx.ingress.kubernetes.io/configuration-snippet: |
if ($host = 'www.example.io' ) {
rewrite ^ https://example.io$request_uri permanent;
}
if ($scheme = http) {
return 301 https://exmple.io$request_uri;
}
if ($scheme = 'http') {
return 301 https://example.io$request_uri;
}
nginx.ingress.kubernetes.io/force-ssl-redirect: "True"
nginx.ingress.kubernetes.io/from-to-www-redirect: "True"
nginx.ingress.kubernetes.io/server-snippet: |
location ~ /test-check {
rewrite /test-check https://app.example.io$uri permanent;
}
location = /login {
rewrite / https://app.example.io/login permanent;
}
name: wordpress-prod-ingress
namespace: default
spec:
rules:
- host: example.io
http:
paths:
- backend:
serviceName: wordpress-site
servicePort: 80
path: /
- host: www.example.io
http:
paths:
- backend:
serviceName: wordpress-site
servicePort: 80
path: /
tls:
- hosts:
- example.io
- www.example.io
secretName: www-ssl-certificate发布于 2021-05-26 16:18:47
服务的目的是将流量平衡到集群中的豆荚中。我不认为您可以有指向外部端点的服务。如果你想这么做,把它放在你的入口处。
发布于 2021-05-27 14:02:07
如果是redirect,那么nginx入口控制器有一个名为永久重定向的注释
该注释允许返回永久重定向(返回代码301),而不是将数据发送到上游。例如,
nginx.ingress.kubernetes.io/permanent-redirect: https://www.google.com会将所有内容都重定向到Google。
所以你的入口应该是这样的:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/permanent-redirect: "www.google.com"
name: external-service
spec:
rules:
- host: service.test.ai
http:
paths:
- backend:
serviceName: external-ip
servicePort: 80
path: /下面是测试:
➜ ~ curl -H "Host: service.test.ai" 192.168.49.2/test -v
* Trying 192.168.49.2...
* TCP_NODELAY set
* Connected to 192.168.49.2 (192.168.49.2) port 80 (#0)
> GET /test HTTP/1.1
> Host: service.test.ai
> User-Agent: curl/7.52.1
> Accept: */*
>
< HTTP/1.1 301 Moved Permanently
< Date: Sun, 30 May 2021 19:27:52 GMT
< Content-Type: text/html
< Content-Length: 162
< Connection: keep-alive
< Location: www.google.com如果您希望在/之后重定向请求以及一些参数,请参见下面的入口示例。在这种情况下,您需要configuration-snippet或server-snippet
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
#kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/server-snippet: |
return 301 http://www.google.com$request_uri;
name: external-service
spec:
rules:
- host: service.test.ai
http:
paths:
- backend:
serviceName: external-ip
servicePort: 80
path: /有了这个,如果我卷曲我的入口,它就会和路径一起被重定向:
➜ ~ curl -H "Host: service.test.ai" 192.168.49.2/service-query-ai -v
* Trying 192.168.49.2...
* TCP_NODELAY set
* Connected to 192.168.49.2 (192.168.49.2) port 80 (#0)
> GET /service-query-ai HTTP/1.1
> Host: service.test.ai
> User-Agent: curl/7.52.1
> Accept: */*
>
< HTTP/1.1 301 Moved Permanently
< Date: Sun, 30 May 2021 19:31:57 GMT
< Content-Type: text/html
< Content-Length: 162
< Connection: keep-alive
< Location: http://www.google.com/service-query-aihttps://stackoverflow.com/questions/67708284
复制相似问题