特定のポートにルーティングできるという意味ではなく、イングレスがリッスンするポートを実際に変更するという意味です。
これは可能ですか?どうやって?これはどこに文書化されていますか?
Ingressは任意のポートまたはプロトコルを公開しません。 HTTPおよびHTTPS以外のサービスをインターネットに公開するには、通常、Service.Type = NodePortタイプまたはService.Type = LoadBalancerタイプのサービスを使用します。
AWSなどのクラウドプロバイダーでLoadBalancerをカスタマイズして、他のポートでリッスンすることもできます。
NGINX Ingress Controller を使用していると思います。この場合、インストール中にkubectl apply
公式のyamlのように これは1つです のように、yamlをダウンロードしてポートを変更してみてください。 L4 AWS ELBに使用される上記のファイルは、次のようになります。
kind: Service
apiVersion: v1
metadata:
name: ingress-nginx
namespace: ingress-nginx
labels:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
annotations:
service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: "*"
service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: "60"
spec:
type: LoadBalancer
selector:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
ports:
- port: {custom port 1}
targetPort: http
- port: {custom port 2}
targetPort: https
別の方法は、より強力なイングレスコントローラーを使用することです。 ここにリストがあります 異なるコントローラの。私の個人的な選択は Ambassador です。開始ページに従っている場合は、選択したポートのサービス定義を変更するだけです。
---
apiVersion: v1
kind: Service
metadata:
name: ambassador
spec:
type: LoadBalancer
externalTrafficPolicy: Local
ports:
- port: {custom port}
targetPort: 8080
selector:
service: ambassador
Ingress の定義は ingress controller によってサポートされています。イングレスコントローラーは通常のKubernetesオブジェクトでデプロイされるため、イングレスコントローラーを公開するデプロイに関連付けられた Service が関連付けられます。そのサービスがデプロイされる方法は、各イングレスコントローラータイプと、使用しているデプロイ方法に固有です。
たとえば、 kubernetes/ingress-nginx
の一般的なクラウドデプロイは、タイプLoadBalancer
のサービスをデプロイします。
kind: Service
apiVersion: v1
metadata:
name: ingress-nginx
namespace: ingress-nginx
labels:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
spec:
externalTrafficPolicy: Local
type: LoadBalancer
selector:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
ports:
- name: http
port: 80
targetPort: http
- name: https
port: 443
targetPort: https
ロードバランサーの構成に使用するポートを変更するには、spec.ports[*].port
の値を必要な値に変更します。