有同事提的需求,实现了,作个记录。
使用K8s服务的ExternalName定义集群外部资源
为达到k8s集群内外资源的统一整合,达到后续平稳迁移和集中管理的目的。现测试了service中的ExternalName,用于将集群外的服务映射为集群内的资源。
一, yaml定义(external-name.yaml)
kind: Service
apiVersion: v1
metadata:
name: demo-extenal-name
namespace: default
spec:
type: ExternalName
externalName: ex-demo.com.cn
二, 应用到集群
Kubectl apply -f external-name.yaml
三, 进入pod测试(curl -H是定义主机名, service需要加上namespace)
/usr/src/app # curl http://ex-demo.com.cn/ip-ngx/get/header
/usr/src/app # curl -H "Host:ex-demo.com.cn" http://demo-extenal-name.default/ip-ngx/get/header
从返回结果可以看到,访问demo-extenal-name.default服务与直接访问ex-demo.com.cn一样效果。
PS:
这是映射端口一样的情况,如果存在端口不一致,则可以再用自定义的EndPoint来对映。
此处不涉。