web-dev-qa-db-ja.com

NGINXIngressのグローバル静的IP名

IngressコントローラーをGoogleContainerEngineで実行するのに問題があります。基本認証でNGINXIngress Controllerを使用し、予約済みのグローバル静的IP名を使用したい(これは、Google Cloud Adminインターフェースの[外部IPアドレス]セクションで作成できます)。 gceクラスを使用すると、基本認証(gceクラスではサポートされていないと思います)を除いてすべて正常に機能します。nginxクラスを使用しようとすると、入力コントローラーが起動しますが、予約したIPアドレスを入力します。 Google CloudAdminインターフェースはIngressControllerに接続されません。誰かがこれを機能させる方法を知っていますか?これが私の設定ファイルです:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: webserver
  annotations:
    kubernetes.io/ingress.global-static-ip-name: "myreservedipname"
    kubernetes.io/ingress.class: "nginx"
    ingress.kubernetes.io/auth-type: basic
    ingress.kubernetes.io/auth-realm: "Auth required"
    ingress.kubernetes.io/auth-secret: htpasswd
spec:
  tls:
    - secretName: tls
  backend:
    serviceName: webserver
    servicePort: 80
14
N. v Doorn

私は舵取りで解決策を見つけました。

helm install --name nginx-ingress stable/nginx-ingress \
      --set controller.service.loadBalancerIP=<YOUR_EXTERNAL_IP>

Gcloudで付けた名前ではなく、external-ipを使用する必要があります。

また、私の場合は、権限用に--set rbac.create=trueも追加しました。

5
silgon

外部IPアドレスは、Ingressコントローラーを指すことができるロードバランサーに接続できます。

1つの重要な注意事項-外部IPアドレスは 同じリージョン でKubernetesクラスターとして予約する必要があります。

これを行うには、次のようにtype: LoadBalancerを使用してNginx-ingressサービスをデプロイし、ExternalIP値を設定する必要があります。

kind: Service
apiVersion: v1
metadata:
  name: ingress-nginx
  namespace: ingress-nginx
  labels:
    app: ingress-nginx
spec:
  loadBalancerIP: <YOUR_EXTERNAL_IP>
  type: LoadBalancer
  selector:
    app: ingress-nginx
  ports:
  - name: http
    port: 80
    targetPort: http
  - name: https
    port: 443
    targetPort: https

デプロイ後、Kubernetesは、入力のエントリポイントとなる目的の静的IPを使用して新しいロードバランサーを作成します。

@silgon、私が見るように、あなたはすでにそれをやろうとしましたが、肯定的な結果はありませんでした。しかし、それは機能するはずです。そうでない場合は、IPアドレスと構成の地域をもう一度確認してください。

3
Anton Kostenko