私はGoogle Cloud Ingressを使用しています。また、nginx-ingress
とGKEで静的IPアドレスを使用して設定しようとしています。
ありがとう
Radek 'Goblin' Pieczonkaがすでに指摘しているように、そうすることは可能です。この件に関して 公式ドキュメント にあなたをリンクしたかっただけです:
1つのクラスターに複数のIngressコントローラーがある場合は、ingress.classアノテーションを指定することで1つを選択できます。たとえば、次のようなアノテーションでIngressを作成します。
metadata:
name: foo
annotations:
kubernetes.io/ingress.class: "gce"
gCEコントローラーをターゲットにして、nginxコントローラーにそれを無視させます。
metadata:
name: foo
annotations:
kubernetes.io/ingress.class: "nginx"
Google Cloud Platformを利用しているので、GoogleでのKubernetesのこの実装に関する詳細を説明できます。
次のことを考慮してください。
デフォルトでは、Kubernetes Engineは、Ingressを通じて公開されるHTTPアプリケーションに一時的な外部IPアドレスを割り当てます。
ただし、もちろん、入力リソースにアドレス指定された静的IPを使用できます ステップガイドへの公式ステップがあります 入力リソースを使用してIngressでHTTP負荷分散を作成し、リンクする方法を示します静的IP、またはすでに使用中の「エフェメラル」IPを静的に昇格させる方法。
試してみて、問題が発生した場合は、質問を更新して質問してください!
Nginx-ingressコントローラーの場合、サービスに外部IPを設定する必要があります。
spec:
loadBalancerIP: "42.42.42.42"
externalTrafficPolicy: "Local"
Helmを使用してnginx-ingressをデプロイする場合。
最初に静的IPアドレスを作成します。 Googleでは、ネットワークロードバランサー(NLB)は地域の静的IPのみをサポートしています。
gcloud compute addresses create my-static-ip-address --region us-east4
次に、IPアドレスをloadBalancerIPパラメータとしてnginx-helmをインストールします
helm install --name nginx-ingress stable/nginx-ingress --namespace my-namespace --set controller.service.loadBalancerIP=35.186.172.1
Kubernetes内で複数のIngressコントローラーを実行することは完全に問題ありませんが、インスタンス化することになっているIngressオブジェクトを認識する必要があります。それは次のような特別な注釈で行われます:
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: "nginx"
これは、このイングレスがnginxイングレスコントローラによってのみ提供されることが期待されることを示しています。
IPについては、Some cloud providers allow the loadBalancerIP to be specified.
これにより、サービスのパブリックIPを制御できます。