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
私は舵取りで解決策を見つけました。
helm install --name nginx-ingress stable/nginx-ingress \
--set controller.service.loadBalancerIP=<YOUR_EXTERNAL_IP>
Gcloudで付けた名前ではなく、external-ip
を使用する必要があります。
また、私の場合は、権限用に--set rbac.create=true
も追加しました。
外部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アドレスと構成の地域をもう一度確認してください。