Этот пост был первоначально опубликован в моем блоге: Установка Elasticsearch Iearch внутри кластера Kubernetes с рулем и террафором
Репозиторий GitHub: tf-helm-kubernetes-elasticsearch
Примечание : Это руководство использует террафору для создания вызовов API и управление государством. Если у вас установлен HELM на вашем компьютере, вы можете использовать это вместо этого для установки графика.
Что такое эластичности?
Согласно веб-сайту Elasticsearch:
Elasticsearch — это распределенный, открытый исходный и аналитический двигатель для всех типов данных, включая текстовые, численные, геопространственные, структурированные и неструктурированные.
Elasticsearch обычно используется в качестве базового двигателя для платформ, которые выполняют сложные текстовые поиски, регистрации или операции по аналитике в реальном времени. Стек лося (Elasticsearch, Logstash и Kibana) также стал стандартом De Facto, когда речь идет о регистрации, и это визуализация в контейнерных средах.
Архитектура
Прежде чем мы двигаться вперед, давайте посмотрим на основную архитектуру Elasticsearch:
Выше представляет собой обзор базовой Elasticsearch кластер Отказ Как видите, кластер разделен на несколько узлов. А Узел это сервер (физический или виртуальный), который хранит некоторые данные и является частью elasticsearch Cluster. А кластер С другой стороны, это коллекция нескольких узлов, которые вместе образуют кластер. Каждый узел в свою очередь может удерживать несколько осколков из одного или нескольких показателей. Различные виды узлов, доступных в Elasticsearch, являются Узел Master-Fireme , Узел данных , Ingest Node и Узел машины обучения (Не доступно в версии OSS). В этой статье мы будем смотреть только на узлы Master и Data для простоты.
Узел для мастера
Узел, который имеет Node.Master
Флаг установлен на истинный
, что заставляет его иметь право быть избранным как Мастер узел который контролирует кластер. Один из Учительным образом Узлы избираются как Мастер через Основной выборный процесс Отказ Ниже приведены некоторые из функций, выполненных Мастер узел :
- Создание или удаление индекса
- Отслеживание того, какие узлы являются частью кластера
- Решить, какие осколки выделить на какие узлы
Узел данных
Узел, который имеет Node.data
Флаг установлен на правда
Отказ Узлы данных Удерживайте осколки, которые содержат документы, которые вы проиндексировали. Эти узлы выполняют несколько операций, которые являются IO, памятью и CPU обширной в природе. Некоторые из функций, выполненных Узлы данных являются:
- Операции, связанные с данными, такие как CRUD
- Поиск
- Агрегаты
Терминология
Теперь, когда у нас есть основное представление о архитектуре Elasticsearch, давайте увидим, как эластичности посмотреть в кластере Kubernetes, используя руль и террафон. Перед продвижением вперед, давайте пройдем через некоторую основную терминологию.
Кубернаны : Kubernetes — это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными нагрузками и услугами, которая облегчает как декларативную конфигурацию, так и для автоматизации
Хелм : Helm — это менеджер пакета приложений, работающий на atop kubernetes. Это позволяет описать структуру приложений через удобные хелм-графики и управлять его простыми командами
Террафом : Terraform — это инструмент для строительства, изменения и управленческой инфраструктуры и качественно. Террафом может управлять существующими и популярными поставщиками услуг, а также пользовательские собственные решения
Установка
Во-первых, позвольте нам описать переменные и значения по умолчанию, необходимые для настройки кластера Elasticsearch:
Значения по умолчанию:
variable "elasticsearch" { type = object({ master_node = object({ volume_size = number cpu = number memory = number }) data_node = object({ volume_size = number cpu = number memory = number }) }) default = { master_node = { volume_size = 20 cpu = 1 memory = 1.5 } data_node = { volume_size = 20 cpu = 1 memory = 1.5 } } } variable "kubeconfig_file_path" { type = string default = "/my/file/path" }
Ради простоты, я предполагаю, что у вас установка рабочей рулины. Хотя, вы все еще можете перейти к Репозиторий GitHub Посмотрите, как установить Helm и Ciller на кластер Kubernetes с помощью террафора.
Terraform Helm Setup.
Этот шаг включает в себя объявление поставщика HELM и репозиторий Elasticsearch Helm, чтобы вытащить график HELM из
provider "helm" { kubernetes { config_path = var.kubeconfig_file_path } version = "~> 0.10.4" service_account = kubernetes_service_account.tiller.metadata[0].name install_tiller = true } data "helm_repository" "stable" { name = "elastic" url = "https://helm.elastic.co" }
Настройка основных узлов и узлов данных
Давайте посмотрим на некоторые из важных областей, используемых в следующих ресурсах выпуска HELM:
Clustername
— Это относится к названию кластера Elasticsearch и имеет значение по умолчаниюelasticsearch
Отказ Поскольку Elasticsearch смотрит на имя кластера при присоединении к новому узлу, лучше установить значение этого поля на что-то еще.NodeGroup
— Это говорит о диаграмме Elasticsearch Helm, будь то узел является главным подходящим узлом или узлом данныхstorageclassname.
— класс хранения Kubernetes, который вы хотите использовать для обеспечения прилагаемых томов. Вы можете пропустить это поле, если ваш облачный поставщик имеет определенный объект StorageClass по умолчаниюПроцессор
: Количество процессорных ядер, которое вы хотите дать на elasticsearch PODпамять
: Сумма памяти, которую вы хотите выделить на elasticsearch POD
Учительные подходящие узлы
resource helm_release "elasticsearch_master" { name = "elasticsearch-master" repository = data.helm_repository.stable.metadata[0].name chart = "elasticsearch" version = "7.6.1" timeout = 900 values = [ <
Узлы данных
resource helm_release "elasticsearch_data" { name = "elasticsearch-data" repository = data.helm_repository.stable.metadata[0].name chart = "elasticsearch" version = "7.6.1" timeout = 900 values = [ <
Счастливое кодирование! Ваше здоровье:)
Оригинал: «https://dev.to/_notanengineer/installing-elasticsearch-inside-a-kubernetes-cluster-with-helm-and-terraform-40jf»