Я установил кластер k8s с помощью kubeadm (v1.18) на виртуальной машине Ubuntu. Теперь мне нужно добавить Ingress Controller. Я выбрал nginx (но я открыт для других решений). Я установил его в соответствии с docs , раздел "bare-metal":
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-0.31.1/deploy/static/provider/baremetal/deploy.yaml
Установка мне кажется прекрасной:
kubectl get all -n ingress-nginx
NAME READY STATUS RESTARTS AGE
pod/ingress-nginx-admission-create-b8smg 0/1 Completed 0 8m21s
pod/ingress-nginx-admission-patch-6nbjb 0/1 Completed 1 8m21s
pod/ingress-nginx-controller-78f6c57f64-m89n8 1/1 Running 0 8m31s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/ingress-nginx-controller NodePort 10.107.152.204 <none> 80:32367/TCP,443:31480/TCP 8m31s
service/ingress-nginx-controller-admission ClusterIP 10.110.191.169 <none> 443/TCP 8m31s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/ingress-nginx-controller 1/1 1 1 8m31s
NAME DESIRED CURRENT READY AGE
replicaset.apps/ingress-nginx-controller-78f6c57f64 1 1 1 8m31s
NAME COMPLETIONS DURATION AGE
job.batch/ingress-nginx-admission-create 1/1 2s 8m31s
job.batch/ingress-nginx-admission-patch 1/1 3s 8m31s
Однако при попытке применить пользовательский Ingress я получаю следующую ошибку:
Error from server (InternalError): error when creating "yaml/xxx/xxx-ingress.yaml": Internal error occurred: failed calling webhook "validate.nginx.ingress.kubernetes.io": Post https://ingress-nginx-controller-admission.ingress-nginx.svc:443/extensions/v1beta1/ingresses?timeout=30s: Temporary Redirect
Есть идеи, что может быть не так?
Я подозревал DNS, но другие службы NodePort работают должным образом, а DNS работает в кластере.
Единственное, что я вижу, это то, что у меня нет бэкэнда default-http, который упоминается в документах здесь . Однако в моем случае это кажется нормальным, согласно этой ветке .
И последнее, но не менее важное: я также пробовал установку с манифестами (после удаления входящего- nginx из предыдущей установки) и установка через Helm-диаграмму . Результат тот же.
Я в значительной степени новичок в k8s, и это моя игровая площадка. Так что я также открыт для альтернативных решений, если мне не нужно настраивать весь кластер с нуля.
Обновление: С «применением пользовательского Ingress» я означает: kubectl apply -f <myIngress.yaml>
Содержимое myIngress.yaml
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: my-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /someroute/fittingmyneeds
pathType: Prefix
backend:
serviceName: some-service
servicePort: 5000