假设我有一个不在Kubernetes上托管的服务。我还在kubernetes集群上设置了入口控制器和证书管理器。
因为使用kubernetes入口来控制对服务的访问非常简单,所以我想要一个指向非kubernetes服务的kubernetes入口。
例如,我有一个托管在<代码>https://10.0.40.1:5678(需要ssl,但需要自签名证书),并希望访问服务。实例com。
如果外部服务上配置了dns条目,则可以使用kubernetes externalName服务。
---
apiVersion: v1
kind: Service
metadata:
name: my-service
namespace: prod
spec:
type: ExternalName
externalName: myexternal.http.service.com
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: externalNameservice
namespace: prod
spec:
rules:
- host: service.example.com
http:
paths:
- backend:
serviceName: my-service
servicePort: 80
path: /
这样,kubernetes创建cname记录my-service指向myexternal.http.service.com
因此,我使用ingress nginx在非标准端口上代理托管外部服务实现了这一点
apiVersion: v1
kind: Service
metadata:
name: external-service-expose
namespace: default
spec:
type: ExternalName
externalName: <external-service> # eg example.example.com
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: external-service-expose
namespace: default
annotations:
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" #important
spec:
rules:
- host: <some-host-on-your-side> # eg external-service.yourdomain.com
http:
- path: /
pathType: Prefix
backend:
service:
name: external-service
port:
number: <port of external service> # eg 4589
tls:
- hosts:
- external-service.yourdomain.com
secretName: <tls secret for your domain>
当然,您需要确保托管url可以从集群内部访问,可以通过启动调试pod并执行简单的检查来完成
curl -v https://example.example.com:4589
您可以通过为外部服务器手动创建服务和endpoint对象来实现这一点。
对象将如下所示:
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: 10.0.40.1
ports:
- name: app
port: 5678
protocol: TCP
然后,您可以创建一个将指向带有端口80
的Serviceexout-ip
的Inete对象:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: external-service
spec:
rules:
- host: service.example.com
http:
paths:
- backend:
serviceName: external-ip
servicePort: 80
path: /
此问题与问题类似,但更多是围绕规则中可以配置的路径。 入口应该能够同时处理内部服务和外部服务。外部服务的URL应该类似于超文本传输协议://host_name: 80/es。当用户点击此url时,应该将其重定向到外部服务。 服务定义和入口规则的配置如下,但会导致404。我哪里做错了? 入口规则 服务和endpoint定义 当我尝试使用URL时,它会起作用http://host_name:80以及以
我正在尝试在kubernetes上部署nginx,kubernetes版本是V1.5.2,我已经部署了3个副本的nginx,下面是YAML文件, 现在我要在节点的端口30062上公开它的端口80,为此我在下面创建了一个服务,
我正在尝试用MiniKube在azure VM上从外部运行和访问Hello节点服务。 minikube启动--Driver=VirtualBox 已创建部署 kubectl创建部署hello-node--image=k8s.gcr.io/echoServer 公开部署 kubectl公开部署hello-node--type=loadbalancer--port=8080 假设kubectl get
我想让流量如下所示: 外部客户端https请求(例如。https://my-app-out-side-cluster.com) - 我遵循这篇文章来配置我的入口和外部流量,但是,由于我在集群外的服务是http,所以在使用https发出请求时,我会遇到SSL错误。但是,将请求更改为http是可行的,这是不需要的。 我的问题是,有没有办法 在入口中终止SSL(使用入口控制器) 是否将流量重定向到群集外
我正在DigitalOcean上使用CoreOs和库伯内特斯构建一个容器集群,我已经看到,为了向世界公开Pod,您必须使用Type: LoadBalancer创建一个服务。我认为这是最佳解决方案,因此您不需要在nginx或haagent等kubernetes之外添加外部负载均衡器。我想知道是否可以使用DO的浮动IP创建它。
我有关于kubernetes入口的问题。 我想将入口与我的亚马逊帐户和/或私有云一起使用,并想分配外部IP。 可以为“服务:服务文档-外部ip”章节分配外部ip,但找不到为入口:入口文档分配外部ip的方法。 我的问题是直接针对库伯内特斯团队的。Simon在这个主题中也提出了类似的问题:如何在GKE 2上强制库伯内特斯入口使用SSL,但当我对私有云AWS感兴趣时,他问了GKE。 提前谢谢你。 [更新