Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Comment installer son Kubernetes en production ...

WeScale
November 14, 2018

Comment installer son Kubernetes en production sur AWS ? par Sébastien Lavayssière

Aujourd'hui le Cloud est au centre de vos infrastructures, et Kubernetes est sur toutes les lèvres. Les interrogations sur sa mise en place et son intégration sont nombreuses et suscitent l'intérêt de tous !
"Mais comment installer son Kubernetes en production sur AWS ?"
Au programme de cette première session des #WeSpeakCloud
Nous verrons comment automatiser l'installation d'un Kubernetes résilient, hautement disponible et scalable dans AWS.
Puis, nous ferons un point sur le monitoring nécessaire et la gestion des logs au sein de ce système.
Quelques pré-requis pour profiter pleinement de ce rdv :
- Connaître l’architecture sur AWS / Terraform
- YAML

WeScale

November 14, 2018
Tweet

More Decks by WeScale

Other Decks in Technology

Transcript

  1. Outils utilisés • Construction • Supervision • Déploiement Kubernetes dans

    AWS • Objets AWS • Cluster Kubernetes • Services Test • Namespace applicatif • Application Plan de la présentation Kubernetes dans AWS Etapes de construction
  2. • Démo en continu • Ma vision d’un ensemble de

    problématiques spécifiques ◦ pas forcément applicable / utile dans tous les cas • Notez vos questions / remarques Ce que va être cette présentation Kubernetes dans AWS Mon objectif
  3. • Terraform : pour IaC - sous la forme de

    nombreux layers • Kops : pour la création et le management de Kubernetes • Bash : pour lier les différents layers • ECR : pour stocker mes conteneurs applicatifs • Traefik : comme IngressController • Rook - Ceph : pour la persistance et la disponibilité des volumes • GitHub : pour le code source Construction Kubernetes dans AWS Les standards du marché
  4. • Prometheus : pour le monitoring • Grafana : pour

    un affichage user-friendly du monitoring • ElasticSearch : pour l’indexation et le stockage des logs • Kibana : pour l’affichage des logs • Fluentd : log-shipper Supervision Kubernetes dans AWS Les standards du marché
  5. • Manifests Kubernetes ◦ templates avec Jinja • Helm ◦

    stocké dans S3 via le plugin “S3” Déploiement Kubernetes dans AWS Les standards du marché
  6. Organisation du compte Kubernetes dans AWS Les objets de gestion

    - hors démo 1 VPC par plateform (toute la démo se fera ici) Bucket S3: Kops Bucket S3: Terraform Bucket S3: Helm Public Route53 DNS
  7. Dans le VPC Kubernetes dans AWS Networking - layer base

    Public Subnet - AZ a Public Subnet - AZ b Public Subnet - AZ c Private Subnet - AZ a Private Subnet - AZ b Private Subnet - AZ c Internet Gateway Private Route53 DNS NAT Gateway NAT Gateway NAT Gateway Route Route Route Route Route Route
  8. Dans le VPC Kubernetes dans AWS Services commun - layer

    base Elasticsearch API Gateway IAM
  9. Kops Kubernetes dans AWS Services commun - layer-kubernetes ASG: master-a

    ASG: master-b ASG: master-c Internal Load Balancer - Masters ASG: nodes ASG: storage-nodes
  10. Storage Backend Kubernetes dans AWS Multi-AZ ASG: nodes storage-nodes i3.large

    Rook Operator Cluster Pool i3.large i3.large StorageClass
  11. IngressController Kubernetes dans AWS Séparation des routes Internal Load Balancer

    - nodes nodes Bastion Admin Access Public Access External Load Balancer - nodes Admin IngressController Public IngressController Consul - Traefik Backend PVC - Ceph
  12. Supervision Kubernetes dans AWS Métriques Internal Load Balancer - nodes

    Bastion PVC - Ceph Prometheus Operator Prometheus ServiceMonitor NodeExporter ServiceMonitor kube-state-metrics ServiceMonitor Scheduler ServiceMonitor controller-manager Grafana
  13. Supervision Kubernetes dans AWS Logs Internal Load Balancer - nodes

    Bastion Admin Access Fluentd Elasticsearch ExternalName Ingress
  14. Gestion des droits AWS Kubernetes dans AWS Pour des pods

    Kube2IAM IAM Node: STS AssumeRole Pod A get Credential for Role
  15. Gestion des DNS Kubernetes dans AWS Pour les humains Kube2IAM

    ExternalDNS - Public Public Route53 DNS Private Route53 DNS ExternalDNS - Private get Credentials get Credentials Ingress Service ETCD
  16. Namespaces Kubernetes dans AWS Résumé kube-system: - ingress controller public

    - ingress controller admin - consul - external DNS * 2 - cluster-autoscaler - kube2iam monitoring: - prometheus operator - prometheus - k8s monitoring - alertmanager kube-public default ceph-rook-system
  17. • Je veux créer des namespaces pour mes applications :

    ◦ en limitant les droits RBAC, ◦ en limitant les ressources utilisables, ◦ en guidant la qualité de service de mes applications, ◦ et récupérer un fichier de configuration kubeconfig. Namespace applicatif Kubernetes dans AWS Mise en place d’un CI/CD
  18. • en partant d’un manifest Kubernetes • faire un chart

    Helm • le mettre à disposition sur S3 • tester avec le compte CI/CD créé précédemment Application test Kubernetes dans AWS Testons avec une application !
  19. • compte CI/CD dans AWS • approche FinOps pour les

    environnements en amont... • AWS service broker • ajouter un kube-chaos • https://github.com/WeScale/kubernetes-on-aws La suite... Kubernetes dans AWS Pour aller plus loin...
  20. 23 rue Taitbout 75009 Paris www.wescale.fr | blog.wescale.fr Aurélien Maury

    Directeur Technique 06 76 24 69 67 [email protected] Sébastien Lavayssière Flying Designer 06 24 99 47 48 [email protected] Laëtitia Bouyahia Cloud Account Manager 06 12 82 86 63 [email protected]
  21. • service non mature pour le moment • mais qui

    s’améliore de jour en jour • donc à évaluer régulièrement... Pourquoi ne pas utiliser EKS ? Kubernetes dans AWS Le service managé Kubernetes d’AWS...