¿Estás visitando desde Perú?
Ingresá a Linware Perú ⯈
Continuar en Linware Perú ⯈
×
¿Qué estás buscando?
BUSCAR!
BLOG
ECK en entorno de producción
Publicada el 24/05/2022

Este artículo lo guiará sobre cómo poner en marcha un entorno ECK listo para la producción que contiene,

  • monitoreo de pila dedicado,
  • servidor de flota y agente elástico (con integración de kubernetes),
  • ajuste de escala automático de búsqueda elástica,
  • afinidad de nodos y selector de nodos,
  • SAML con autorización0,
  • arquitectura caliente, templada, fría, congelada,
  • caducidad del certificado SSL del monitor de latidos,
  • DNS externo (con integración CloudFlare),
  • cert-manager (con integración let's encrypt),
  • controlador de ingreso (usando Cloudflare para registrar los puntos finales),
  • Opcional: esrally para validar el ajuste de escala automático y ejecutar el punto de referencia contra el clúster de es

Recuerde que debe tener una licencia básica o empresarial para ejecutar ECK.

Manifestación

Para ver la demostración y los archivos, acceda a  https://github.com/framsouza/eck-ready-for-production

administrador de certificados

cert-manager agrega certificados y emisores de certificados como tipos de recursos en Kubernetes y simplifica el proceso de obtención, renovación y uso de esos certificados. Es muy importante que el administrador de Kubernetes use cert-manager para manejar el certificado, y en este ejemplo vamos a usar cert-manager con let's encrypt para acceder a Kibana. Recuerde que los certificados TLS para la capacidad de transporte de Elasticsearch que se utilizan para las comunicaciones internas entre los nodos de Elasticsearch son administrados por ECK y no se pueden cambiar.

ingresos

El controlador de entrada es un equilibrador de carga especializado para Kubernetes, que acepta tráfico desde fuera del clúster de Kubernetes y lo equilibra en pods.

DNS externo

Es un complemento que configura servidores DNS públicos sobre servicios de Kubernetes expuestos, en estos ejemplos estamos integrando DNS externos con Cloudflare. Para cada recurso de ingreso/servicio que nos envíe, se creará una entrada de DNS en Cloudflare con la dirección IP respectiva; en los registros de dns externos, debería poder ver lo siguiente:

 
level=info msg="Using inCluster-config based on serviceaccount-token"nlevel=info msg="Created Kubernetes client https://10.76.0.1:443"nlevel=info msg="Changing record." action=CREATE record=kibana.framsouza.co ttl=1 type=A zone=4cd4c7c1cb8f7bf3a7482749654ae6fbnlevel=info msg="Changing record." action=CREATE record=monitoring.framsouza.co ttl=1 type=TXT zone=4cd4c7c1cb8f7bf3a7482749654ae6fb
 

Como instalar

Asegúrese de respetar el orden de ejecución de los comandos:

 

  1. Cree un clúster de GKE con tipo Kubernetes activo, tibio, frío o congelado para cada grupo de nodos dedicado, asegúrese de tener suficientes recursos para ejecutar los pods en los nodos.
  2. Cree una asignación de roles de clúster que le otorgue permiso para instalar el operador ECK
    • kubectl create clusterrolebinding cluster-admin-binding --cluster-role=cluster-admin --user=
  3. Instalar operador ECK
    • helm repo add elastic https://helm.elastic.co && helm repo update && helm install elastic-operator elastic/eck-operator -n elastic-system --create-namespace
  4. Cree una clase de almacenamiento dedicada aplicando los archivos storageclass-hot.yaml y storageclass-warm.yaml
  5. Descarga tu licencia y aplícala vía secreta (o aplica el archivo license.yaml)
    • kubectl create secret generic eck-license --from-file -n elastic-system && kubectl label secret eck-license "license.k8s.elastic.co/scope"=operator -n elastic-system
  6. Cree el clúster de monitoreo (se creará un monitoreo de llamadas ns ) mediante la aplicación de monitoreo-es.yaml
  7. Crear recurso de búsqueda elástica, elasticsearch.yaml
  8. Crear recurso kibana, kibana.yaml
  9. Crear recurso de flota, fleet.yaml
  10. Crear latido del corazón, latido del corazón.yaml
  11. Instalar dns externos
    • kubectl apply -f external-dns.yml
  12. Instalar administrador de certificados
    • kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.7.1/cert-manager.yaml
  13. Instalar entrada-nginx,
    • actualización de timón --instalar entrada-nginx entrada-nginx --repo https://kubernetes.github.io/ingress-nginx --namespace entrada-nginx --create-namespace
  14. Crear recurso de ingreso, ingress.yaml
  15. Crear aplicación de emisor de clúster, clusterissuer.yaml
  16. Cree el certificado de cifrado let's, certificate.yaml

Accediendo

Para este ejemplo, estoy usando una llamada de dominio framsouza.co y como estoy usando dns externos, la entrada de DNS se agregará automáticamente a Cloudflare, https://kibana.framsouza.co y https://monitoring.framsouza. compañía _ Puede verificar que la conexión sea segura y que estemos usando un certificado válido con let's encrypt.

Si desea iniciar sesión con SAML, asegúrese de ajustar la sesión de saml en elasticsearch.yml según su entorno.

Validación de escalado automático

(Opcional)

Para confirmar si el ajuste de escala automático funciona como se esperaba, puede usar esrally para probarlo y ejecutar un punto de referencia en su clúster. Asegúrese de tener params-file.json con el siguiente contenido:

{

    "número_de_réplicas": 1,

    "número_de_fragmentos": 2

}

entonces solo necesita ejecutar y esperar un par de horas hasta que finalice la prueba.

 
docker run -v /tmp/params-file.json:/tmp/params-file.json elastic/rally race --track=http_logs --target-hosts=${IP}:9200 --pipeline=benchmark-only --client-options="timeout:60,use_ssl:true,verify_certs:false,basic_auth_user:'elastic',basic_auth_password:'${PASSWORD}'"  --track-params=/tmp/params-file.json
 

Echa un vistazo a esrally-result.txt .

 

Sigue aprendiendo sobre ECK:

 

Ir al Blog