Как обеспечить и управлять Amazon EKS с легкостью

AWS является безоговорочным лидером облачного рынка со стоимостью 180 миллиардов долларов, занимая 33% общей доли рынка, согласно данным Synergy Research Group. Их доминирование распространяется и на управляемое пространство Kubernetes. Результаты опроса Cloud Native Computing Foundation 2019 и более свежего опроса Logicata Kubernetes показывают, что EKS лидирует по популярности среди конкурентов (например, GKE, AKS и т.д.).


Источник: CNCF Survey 2019

Однако по мере того, как все больше приложений подключается к EKS, управление несколькими кластерами и рабочими нагрузками остается сложной задачей. В этой статье мы рассмотрим несколько способов обеспечения кластера EKS и использование KubeSphere в качестве уровня платформы для безопасного развертывания и обслуживания контейнерных приложений на Kubernetes.

eksctl

eksctl — это инструмент с открытым исходным кодом, разработанный совместно AWS и Weaveworks для создания и управления кластерами EKS. За кулисами eksctl создает стек CloudFormation для предоставления и обновления артефактов AWS.

После установки eksctl кластер может быть загружен императивно с помощью флагов командной строки или декларативно через конфигурационный файл:

через командную строку:

eksctl create cluster --name=cluster-1 --nodes=4
Войти в полноэкранный режим Выйти из полноэкранного режима

или через конфигурационный файл:

apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: basic-cluster
  region: us-east-2

nodeGroups:
  - name: ng-1
    instanceType: m5.large
    desiredCapacity: 10
    volumeSize: 80
    ssh:
      allow: true # will use ~/.ssh/id_rsa.pub as the default ssh key
  - name: ng-2
    instanceType: m5.xlarge
    desiredCapacity: 2
    volumeSize: 100
    ssh:
      publicKeyPath: ~/.ssh/ec2_id_rsa.pub
Enter fullscreen mode Выйти из полноэкранного режима

Подобно командам kubectl, изменения конфигурационного файла могут быть применены с помощью флага -f: eksctl create cluster -f <file-name.yaml>.

eksctl поддерживает полный сайт документации с различными параметрами конфигурации, такими как включение CloudWatch, нодгрупп Fargate, аддонов EKS (например, CNI, драйвер EBS, core-dns), а также приятные интеграции для поддержки IRSA. EKS workshop также содержит пошаговое руководство с видео по загрузке кластера EKS.

Если вы знакомы с CloudFormation или хотите использовать красивую обертку, которую совместно поддерживает команда AWS, eksctl — отличный выбор для обслуживания кластеров EKS.

Модуль Terraform EKS

Другим популярным вариантом является использование Terraform для обеспечения кластера EKS либо с помощью официального модуля EKS, либо с помощью подмодулей для VPC, EKS и/или nodegroups по отдельности. Полный пример для модуля EKS загружает кластер EKS с самоуправляемыми и управляемыми AWS узлами с включенным по умолчанию шифрованием KMS.

Поскольку Terraform является одним из наиболее популярных IaC-провайдеров, преимущество использования Terraform для управления EKS заключается в возможности поддерживать один и тот же технологический стек. Если вы также используете мультиоблачность или планируете в будущем перейти на AKS или GKE, использование Terraform будет более предпочтительным, чем eksctl.

Наконец, для глубокого погружения в проектирование и инициализацию готового к производству кластера EKS, вы можете ознакомиться с некоторыми советами в этой статье.

Установка KubeSphere на Amazon EKS

Теперь, когда у нас есть функциональный кластер EKS, мы можем установить KubeSphere с помощью kubectl.

Сначала нам нужно обновить kubeconfig, чтобы он соответствовал нашему вновь созданному кластеру:

aws eks --region <my-region> update-kubeconfig --name <my-cluster-name>
Войти в полноэкранный режим Выйти из полноэкранного режима

Затем мы можем применить манифесты kubectl для установки:

kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.2.1/kubesphere-installer.yaml

kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.2.1/cluster-configuration.yaml
Войти в полноэкранный режим Выйти из полноэкранного режима

После завершения установки вы должны увидеть:

#####################################################
###              Welcome to KubeSphere!           ###
#####################################################
Account: admin
Password: P@88w0rd
NOTES:
1. After logging into the console, please check the
   monitoring status of service components in
   the "Cluster Management". If any service is not
   ready, please wait patiently until all components
   are ready.
2. Please modify the default password after login.
#####################################################
https://kubesphere.io             2020-xx-xx xx:xx:xx
Войти в полноэкранный режим Выйти из полноэкранного режима

Кроме того, KubeSphere сотрудничает с AWS для простой установки KubeSphere в качестве AWS Quick Start. При этом будет использоваться шаблон CloudFormation для развертывания кластера EKS и автоматической установки KubeSphere. Вы можете отредактировать шаблон CloudFormation, чтобы удалить создание VPC и EKS и запустить установку KubeSphere только с существующим кластером.

Управление Amazon EKS с помощью KubeSphere

Хотя Amazon предоставляет некоторые дополнительные сервисы, такие как VPC CNI, CoreDNS, EBS CSI и kube-proxy к основному предложению EKS, это довольно пустой продукт с точки зрения дополнительных инструментов, необходимых для готовой к производству платформы Kubernetes. Он не поставляется с какими-либо ingress-контроллерами (например, nginx, traefik и т.д.), автоскалерами (например, karpenter, cluster autoscaler), агентами логирования и мониторинга, а также такими распространенными инструментами, как external dns или cert-manager. Если вы также планируете поддерживать мультитенантность на EKS, то вы также должны самостоятельно настроить пространства имен и необходимые компоненты RBAC.

Именно здесь KubeSphere может помочь облегчить бремя, предоставляя верхний слой платформы. KubeSphere поставляется с интеграцией с Jenkins, протоколированием/мониторингом, сеткой сервисов, контроллерами входа и т.д., обеспечивая полный опыт управления приложениями. Управление пользователями также встроено через рабочие пространства и проекты, которые назначают пользователей и роли RBAC в пространства имен, соответствующие каждому проекту. Основную панель можно использовать для развертывания новых микросервисов с помощью конвейеров Jenkins или использовать App Store для развертывания популярных диаграмм Helm, таких как etcd, redis, tomcat, postgresql и т. д.

KubeSphere также выигрывает, когда задействовано несколько кластеров (например, мультирегиональных или мультисредовых). KubeSphere следует модели федерации, где KubeSphere, запущенная в главном кластере, может управлять нижележащими кластерами-членами. Используя KubeSphere, команды разработчиков платформы могут последовательно устанавливать, обновлять и управлять не только компонентами инфраструктуры, но и приложениями на нескольких кластерах.


Image Credit: New Stack

Заключение

Кривая обучения для освоения Kubernetes высока. Но с помощью Amazon EKS пользователи могут переложить управление основной плоскостью и основными дополнительными компонентами на Amazon. С помощью eksctl и Terraform команды могут легко создавать множество кластеров Kubernetes в масштабе. Чтобы сделать еще один шаг вперед, воспользуйтесь богатой экосистемой интеграций, которую предоставляет KubeSphere, чтобы еще больше облегчить бремя управления кластерами Kubernetes и приложениями в облаке.

Оцените статью
Procodings.ru
Добавить комментарий