約1年前に2つの環境で顧客用にkubernetesクラスターを作成しました。名前空間で分離されたステージングとプロダクション。現在、アプリケーションの次のバージョンを開発しており、この開発作業のための環境が必要なので、独自の名前空間にベータ環境を作成しました。
これは、MetalLBおよびnginx-ingressを備えたベアメタルkubernetesクラスターです。 nginxイングレスコントローラーはhelmでインストールされ、イングレスは次のマニフェストで作成されます(名前空間はデプロイパイプラインによって適用され、マニフェストには表示されません)。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: api-ingress
annotations:
#ingress.kubernetes.io/ssl-redirect: "true"
#kubernetes.io/tls-acme: "true"
#certmanager.k8s.io/issuer: "letsencrypt-staging"
#certmanager.k8s.io/acme-challenge-type: http01
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/configuration-snippet: |
more_set_headers "X-Robots-Tag: noindex, nofollow";
nginx.ingress.kubernetes.io/enable-cors: "true"
nginx.ingress.kubernetes.io/cors-allow-methods: "GET, OPTIONS"
nginx.ingress.kubernetes.io/cors-allow-Origin: "*"
nginx.ingress.kubernetes.io/cors-allow-credentials: "true"
spec:
tls:
- hosts:
- ${API_DOMAIN}
secretName: api-cert
rules:
- Host: ${API_DOMAIN}
http:
paths:
- backend:
serviceName: api
servicePort: 80
マニフェストkubernetesを適用すると、次のエラーが返されます。
サーバーからのエラー(InternalError): "STDIN"の作成時のエラー:内部エラーが発生しました:webhook "validate.nginx.ingress.kubernetes.io"の呼び出しに失敗しました:投稿 https:// ingress-nginx-controller-admission。 ingress-nginx.svc:443/extensions/v1beta1/ingresses?timeout = 30s :service "ingress-nginx-controller-admission" not found
入力マニフェストのapiVersionをnetworking.k8s.io/v1beta1
に更新しようとしましたが(これは新しいnginx-ingressコントローラーがhelmを介してインストールされるapiVersionです)、同じエラーが発生します。
私の最初の疑いは、これは、現在のインストールと1年前のインストールとの間のnginx-ingressの変更に関連しているということです。しかし、どのネームスペースでもingress-nginx-controller-admission
というサービスを見つけることができないため、次に進む方法がわかりません。
SSL証明書にはWebhookにあるように見えるいくつかの問題があります。
Chaning failurePolicy:Fail to Ignoreが私のために働いた
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-0.32.0/deploy/static/provider/baremetal/deploy.yaml
詳細については、チェック:
https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/