Рубрики
Uncategorized

Установка Elasticsearch Iearch внутри кластера Kubernetes с рулем и террафором

Этот пост был первоначально опубликован в моем блоге: Установка Elasticsearch Inears внутри кластера Kubernetes W … Теги с Кубератуми, террафом, эластиковым поиском, дежоптом.

Этот пост был первоначально опубликован в моем блоге: Установка 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»