k8sにてIngressと言えばk8s内のPodを公開する機能です。
またIngress ControllerにはNginxやHaProxyなどの種類があることも公式のドキュメントで触れられていますね。
そういった説明を読んでいて、ふとNginxで動いているならPodだけでなく外部のサービスにリバースプロキシできれば構成の幅が広がるのでは?と思い設定を調べてみました。
結果だけ先に話すとk8s外へのリバースプロキシは可能でした。
以下が構成yamlになります。ポイントはPodができると自動的に作成されるEndpointoを手動で作成するってところでしょうかね?
apiVersion: v1
kind: Endpoints
metadata:
name: external-media
subsets:
- addresses:
- ip: 192.168.11.202
ports:
- port: 9000
apiVersion: v1
kind: Service
metadata:
name: external-media
spec:
ports:
- port: 9000
protocol: TCP
targetPort: 9000
clusterIP: None
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: external-media
annotations:
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/proxy-body-size: 1024m
spec:
rules:
- host: media.ranranhome.info
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: external-media
port:
number: 9000
これでPodで起動していないサービスを外部に公開できます。
