web-dev-qa-db-ja.com

Kubernetesイングレスが80/443以外でリッスンするようにカスタムポートを設定できますか?

特定のポートにルーティングできるという意味ではなく、イングレスがリッスンするポートを実際に変更するという意味です。

これは可能ですか?どうやって?これはどこに文書化されていますか?

9

kubernetesのドキュメント から:

Ingressは任意のポートまたはプロトコルを公開しません。 HTTPおよびHTTPS以外のサービスをインターネットに公開するには、通常、Service.Type = NodePortタイプまたはService.Type = LoadBalancerタイプのサービスを使用します。

AWSなどのクラウドプロバイダーでLoadBalancerをカスタマイズして、他のポートでリッスンすることもできます。

8
dlaidlaw

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
5
victortv

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の値を必要な値に変更します。

1
Matt