Привет и спасибо, что нашли время прочитать мой вопрос.
Во-первых, у меня есть кластер EKS для использования общедоступных и частных подсетей.
Я создал кластер с использованием облачной информации, как описано в https://docs.aws.amazon.com/eks/latest/userguide/getting-started-console.html#vpc-create
Затем я инициализировал helm, создав учетную запись службы для tiller через kubectl apply -f (below file)
:
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: tiller
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: tiller
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: tiller
namespace: kube-system
а затем helm init --service-account=tiller
, за которым следует helm repo update
Затем я использовал helm для установки контроллера nginx-ingress через:
helm install --name nginx-ingress \
--namespace nginx-project \
stable/nginx-ingress \
-f nginx-ingress-values.yaml
где мой nginx-ingress-values.yaml:
controller:
service:
annotations:
service.beta.kubernetes.io/aws-load-balancer-access-log-emit-interval: "60"
service.beta.kubernetes.io/aws-load-balancer-access-log-enabled: "true"
service.beta.kubernetes.io/aws-load-balancer-access-log-s3-bucket-name: "abc-us-west-2-elb-access-logs"
service.beta.kubernetes.io/aws-load-balancer-access-log-s3-bucket-prefix: "vault-cluster/nginx"
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: "arn:aws:acm:us-west-2:123456789:certificate/bb35b4c4-..."
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: "http"
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "https"
service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: "60"
И пока все выглядит отлично, я вижу, что ELB создан и подключен для использования acm для https
Затем я устанавливаю kubernetes-dashboard через:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
и я могу получить к нему доступ через kubectl proxy
Но когда я добавляю правило входа для панели управления через: kubectl apply -f dashboard-ingress.yaml
Где dashboard-ingress.yaml:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: dashboard
annotations:
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
nginx.ingress.kubernetes.io/force-ssl-redirect: "false"
namespace: kube-system
spec:
# tls:
# - hosts:
# - abc.def.com
rules:
- host: abc.def.com
http:
paths:
- path: /dashboard
backend:
serviceName: kubernetes-dashboard
servicePort: 8443
затем, когда я пытаюсь перейти на http://abc.def.com/, я застреваю в бесконечном перенаправлении петля.
то же самое для https://abc.def.com/ и http://abc.def.com/dashboard
Я новичок в кубернетах и очень зациклился на этом. Любая помощь будет очень признательна
ОБНОВЛЕНИЕ - 05.09.2019: когда я вынимаю блок tls из ingress.yaml, я получаю
на серверную часть nginx, но http://abc.def.com перенаправляет меня на https://abc.def.com, и я получаю 502 Bad Gateway от openresty / 1.15.8.1
когда я затем пытаюсь перейти на https://abc.def.com/dashboard
Я получаю сообщение «404 страница не найдена», что является ответом контроллера nginx-ingress, насколько я понимаю.
ОБНОВЛЕНИЕ - 06.09.2019: Большое спасибо mk_sta за ответ ниже, который помог мне понять, чего мне не хватало.
Для тех, кто читает это в будущем, моя установка nginx-ingress через helm работает, как и ожидалось, но в моей установке kubernetes-dashboard отсутствовали некоторые ключевые аннотации. В конце концов я смог настроить helm для установки kubernetes-dashboard через:
helm install --name kubernetes-dashboard \
--namespace kube-system \
stable/kubernetes-dashboard \
-f kubernetes-dashboard-values.yaml
где kubernetes-dashboard-values.yaml - это:
ingress:
enabled: true
hosts: [abc.def.com]
annotations:
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
nginx.ingress.kubernetes.io/force-ssl-redirect: "false"
nginx.ingress.kubernetes.io/rewrite-target: /$2
paths: [/dashboard(/|$)(.*)]
Затем я могу получить доступ к панели управления по адресу http://abc.def.com/dashboard/ и https://abc.def.com/dashboard/
По какой-то причине, если я оставлю косую черту в конце, это не сработает.
На данный момент для меня этого достаточно.