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
Подобно командам 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 и приложениями в облаке.