Comment puis-je accéder au tableau de bord Kubernetes via un chemin personnalisé dans Amazon EKS ?
Je souhaite accéder au tableau de bord Kubernetes via un chemin personnalisé dans Amazon Elastic Kubernetes Service (Amazon EKS).
Brève description
Pour accéder au tableau de bord Kubernetes, vous devez effectuer les opérations suivantes :
1. Créer ou utiliser un certificat auto-signé existant, puis le charger dans AWS Certificate Manager (ACM).
2. Déploiement du contrôleur d'entrée NGINX et exposition de celui-ci en tant que service NodePort
3. Créer un objet d'entrée pour le contrôleur d'entrée de l'Application Load Balancer. Demandez à l'objet Ingress de transmettre toutes les demandes provenant de l'équilibreur de charge d'application au NGINX Ingress Controller que vous déployez à l'aide d'un fichier manifeste.
4. Déploiement du tableau de bord Kubernetes.
5. Créer une entrée pour le contrôleur d'entrée NGINX.
Voici comment fonctionne la résolution :
1. L'Application Load Balancer transmet tout le trafic entrant au contrôleur d'entrée NGINX.
2. Le contrôleur d'entrée NGINX examine le modèle de chemin de la demande entrante (par exemple /custom-path/additionalcustompath).
3. Le contrôleur d'entrée NGINX remplace l'URL par /additionalcustompath avant de transmettre la demande au service kubernetes-dashboard.
Remarque : Cette solution ne fonctionne pas sur les clusters exécutant des versions de kubernetes antérieures à 1.19.
Solution
Création ou utilisation d'un certificat auto-signé existant, puis chargement de celui-ci dans ACM
Si votre Application Load Balancer utilise un certificat ACM existant avec l'Application Load Balancer, passez à la section « Déploiement du contrôleur d'entrée NGINX et exposition de celui-ci en tant que service NodePort ».
Remarque : les étapes suivantes s'appliquent à l'Amazon Machine Image (AMI) Amazon Linux version 2018.03.
1. Générez un certificat auto-signé à l'aide d'OpenSSL :
openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout kube-dash-private.key -out kube-dash-public.crt
Important : fournissez un domaine complet qualifié pour Common Name. (nom commun) Application Load Balancer autorise uniquement l'attachement de certificats ACM comportant des noms de domaines complets à l'écouteur 443.
Le résultat est similaire à ce qui suit :
Country Name (2 letter code) [XX]: State or Province Name (full name) []: Locality Name (eg, city) [Default City]: Organization Name (eg, company) [Default Company Ltd]: Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) []:kube-dashboard.com ==>This is important Email Address []:
3. Installez l'AWS Command Line Interface (AWS CLI) et configurez les informations d'identification.
Remarque : si vous recevez des erreurs lors de l'exécution de commandes AWS CLI, assurez-vous d'utiliser la version la plus récente de l'AWS CLI.
4. Chargez la clé privée et le certificat dans ACM dans votre région AWS :
aws acm import-certificate --certificate fileb://kube-dash-public.crt --private-key fileb://kube-dash-private.key --region us-east-1
Remarque : remplacez us-east-1 par le nom de votre région AWS.
Le résultat doit être similaire à ce qui suit :
{ "CertificateArn": "arn:aws:acm:us-east-1:your-account:certificate/your-certificate-id" }
5. Ouvrez la console ACM, puis vérifiez que le nom de domaine apparaît dans votre certificat ACM importé.
Remarque : si le nom de domaine n'apparaît pas dans la console ACM, la meilleur pratique consiste à recréer le certificat à l'aide d'un nom de domaine complet valide.
Déploiement du contrôleur d'entrée NGINX et exposition de celui-ci en tant que service NodePort
1. Créez l'espace de noms ingress-nginx :
kubectl create ns ingress-nginx
2. Installez Helm version 3.
3. Utilisez Helm pour déployer le contrôleur d'entrée NGINX :
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx helm repo update helm install nginx ingress-nginx/ingress-nginx --namespace ingress-nginx --set controller.service.type=NodePort
Remarque : pour que le contrôleur nginx-ingress s'exécute sur des nœuds Fargate, définissez allowPrivilegeEscalation : false dans le déploiement « nginx-ingress-nginx-controller »
Créer un objet d'entrée pour le contrôleur d'entrée de l'Application Load Balancer
Créez un objet Ingress à l'aide d'un fichier manifeste. Demandez à l'objet Ingress de transmettre toutes les demandes du contrôleur d'entrée de l'équilibreur de charge d'application au contrôleur d'entrée NGINX que vous avez déployé précédemment.
1. Déployez le contrôleur d'entrée de l'Application Load Balancer .
2. Créez un objet d'entrée pour le contrôleur d'entrée de l'Application Load Balancer en vous basant sur le fichier alb-ingress.yaml suivant :
--- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: "alb-ingress" namespace: "ingress-nginx" annotations: alb.ingress.kubernetes.io/scheme: internet-facing alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:your-region:your-account-id:certificate/XXXX-XXXX-XXXX-XXXX-XXXXX alb.ingress.kubernetes.io/healthcheck-path: /dashboard/ alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS":443}]' alb.ingress.kubernetes.io/actions.ssl-redirect: '{"Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "StatusCode": "HTTP_301"}}' labels: app: dashboard spec: ingressClassName: alb rules: - http: paths: - path: / pathType: Prefix backend: service: name: ssl-redirect port: name: use-annotation - path: / pathType: Prefix backend: service: name: "nginx-ingress-nginx-controller" port: number: 80
Remarque : remplacez alb.ingress.kubernetes.io/certificate-arn par l'Amazon Resource Name (ARN) de votre certificat ACM. Pour Fargate, ajoutez « alb.ingress.kubernetes.io/target-type : ip » dans les annotations
Le fichier manifeste précédent comporte les annotations suivantes :
L'annotation « alb.ingress.kubernetes.io/scheme » permet de créer un Application Load Balancer accessible sur Internet. L'annotation « alb.ingress.kubernetes.io/certificate-arn » permet d'associer l'ARN du certificat ACM à l'écouteur 443 de l'Application Load Balancer. L'annotation « alb.ingress.kubernetes.io/listen-ports » permet de créer les écouteurs pour les ports 80 et 443. L'annotation « alb.ingress.kubernetes.io/actions.ssl-redirect » permet de rediriger toutes les demandes transmises aux ports 80 à 443. L'annotation « alb.ingress.kubernetes.io/healthcheck-path » permet de définir le chemin de vérification de l'état sur /dashboard/.
3. Appliquez le fichier manifeste créé à l'étape 2 ci-dessus :
kubectl apply -f alb-ingress.yaml
Déploiement du tableau de bord Kubernetes
Pour déployer le tableau de bord Kubernetes, consultez Didacticiel : Déployer le tableau de bord Kubernetes (interface utilisateur Web).
Création d'une entrée pour le contrôleur d'entrée NGINX
1. Créez une entrée pour le contrôleur d'entrée NGINX en vous basant sur le fichier ingress-dashboard.yaml suivant :
--- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: dashboard namespace: kubernetes-dashboard annotations: nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" nginx.ingress.kubernetes.io/rewrite-target: /$2 nginx.ingress.kubernetes.io/configuration-snippet: | rewrite ^(/dashboard)$ $1/ redirect; spec: ingressClassName: nginx rules: - http: paths: - path: /dashboard(/|$)(.*) pathType: Prefix backend: service: name: kubernetes-dashboard port: number: 443
Remarque : l'annotation « nginx.ingress.kubernetes.io/rewrite-target » permet de réécrire l'URL avant de transmettre la demande aux pods du backend. Dans le chemin /dashboard(/|$)(.*) pourpath, (.*), permet de stocker l'URL dynamique qui est générée lors de l'accès au tableau de bord Kubernetes. L'annotation « nginx.ingress.kubernetes.io/rewrite-target » permet de remplacer les données capturées dans l'URL avant de transmettre la demande au service kubernetes-dashboard. L'annotation « nginx.ingress.kubernetes.io/configuration-snippet » permet de réécrire l'URL pour ajouter une barre oblique de fin (« / ») uniquement si vous accédez à ALB-URL/dashboard.
2. Appliquez le fichier manifeste ingress-dashboard.yaml :
kubectl apply -f ingress-dashboard.yaml
3. Vérifiez l'URL de l'Application Load Balancer dans le champ ADDRESS (Adresse) du fichier alb-ingress que vous avez créé précédemment :
kubectl get ingress alb-ingress -n ingress-nginx
Vous pouvez désormais accéder au tableau de bord Kubernetes à l'aide de l'adresse ALB-URL/dashboard/. Si vous accédez à ALB-URL/dashboard, une barre oblique de fin (« / ») est automatiquement ajoutée à l'URL.
Suppression des ressources que vous avez créées précédemment
1. Supprimez l'entrée pour le contrôleur d'entrée NGINX :
helm uninstall nginx -n ingress-nginx
2. Supprimez les composants du tableau de bord Kubernetes et Metrics Server :
kubectl delete -f eks-admin-service-account.yaml kubectl delete -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml kubectl delete -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.6/components.yaml>
3. Supprimez alb-ingress :
kubectl delete -f alb-ingress.yaml
Remarque : si vous avez créé des ressources AWS Identity and Access Management (IAM), vous pouvez supprimer le rôle IAM et la stratégie IAM.
4. Supprimez le contrôleur de l'équilibreur de charge AWS :
helm uninstall aws-load-balancer-controller -n kube-system
5. Supprimez l'espace de noms ingress-nginx :
kubectl delete ns ingress-nginx
6. Pour supprimer le certificat ACM que vous avez créé, exécutez la commande suivante :
aws acm delete-certificate \ --certificate-arn arn:aws:acm:us-east-1:your-account-id:certificate/XXXX-XXXX-XXXX-XXXX-XXXXX \ --region us-east-1
Remarque : remplacez certificate-arn par l'ARN de votre certificat. Remplacez us-east-1 par votre région AWS. Remplacez your-account-id par l'ID de votre compte.

Contenus pertinents
- demandé il y a 9 moislg...
- demandé il y a 9 moislg...
- demandé il y a 9 moislg...
- demandé il y a un anlg...
- AWS OFFICIELA mis à jour il y a 5 mois
- AWS OFFICIELA mis à jour il y a 2 ans
- AWS OFFICIELA mis à jour il y a 6 mois
- AWS OFFICIELA mis à jour il y a 6 mois