Dashboards de Kubernetes 3

Tras un primer artículo (Dashboards de Kubernetes 1) sobre Dashboards de Kubernetes generalistas, y un segundo (Dashboards de Kubernetes 2) centrado en dashboards específicos.

Vamos a analizar aquellas herramientas que aunque no son exactamente dashboards integrados en kubernetes si que van a funcionar como clientes externos que dan acceso a la plataforma.

Dashboards de Kubernetes

Octant

Está herramienta opensource de VMware (Con más de 3100 estrellas en github) y dentro del marco de herramientas VMware-Tanzu, está orientada a servir de herramienta explicativa de como está configurado y diseñado un entorno Kubernetes.

La herramienta funciona como un servicio web, por lo que puede ponerse como un servicio o ejecutarse en la máquina local con la condición de que se disponga de un .kube/config configurado con un usuario con permisos suficientes. Tanto en octant como en el resto de entornos probados hemos usado el usuario admin.

Como se instala

Nos descargamos el .deb o el .rpm de https://github.com/vmware-tanzu/octant/releases y lo instalamos con las herramientas del sistema operativo, si tenemos el .kube/config para acceder al cluster a revisar basta con ejecutar octant desde la linea de comandos.

Características

Dispone de un limitado conjunto de los objetos de Kubernetes, suficiente para los objetivos de dicha aplicación, pero incompleto para un gestor de Kubernetes.

En el siguiente gráfico podemos ver la lista de eventos que se muestra como un elemento más del menú de objetos.

Dashboards de Kubernetes 3 1

Pese a la limitación anterior y que no permite la modificación de los elementos, si dispone en cada elemento de una pestaña “Resource Viewer” donde se nos mostrará el estado del objeto examinado y de todos aquellos relacionados, algo que se ella a faltar en los gestor que hemos visto anteriormente y que nos permite discernir de un solo vistazo donde tenemos un problema con un servicio, como puede ser en el siguiente ejemplo:

Dashboards de Kubernetes 3 2

Otro ejemplo más de Resource Viewer

Dashboards de Kubernetes 3 3

Facilidad de uso

Cumple sin problemas con su capacidad de herramienta de demostración, pero a la espera de que su diseño basado en plugins de frutos (extensiones que nos permita una gestión de Kubernetes), no es una herramienta que salga de su planteamiento original.… Read the rest “Dashboards de Kubernetes 3”

Dashboards de Kubernetes 2

Tras un primer artículo (Dashboards de Kubernetes 1) sobre Dashboards de Kubernetes generalistas, este artículo se centra en aquellos dashboards que están orientados a ciertas necesidades.

Concretamente nos centraremos en tres dashboards que van a tres necesidades: Ver el estado de un gran número de pods, ver las relaciones entre objetos y obtener una visión de conjunto sobre una plataforma kubernetes sobre docker.

Dashboards de Kubernetes

Kube-ops-view

Con 1200 estrellas en Github este proyecto nos presenta un dashboard muy básico pensando en grandes granjas de servidores, en donde tengamos un importante volumen de pods que necesitemos revisar de un vistazo.

Como se instala

Creamos un espacio de nombres para instalar kube-ops-view:

kubectl create namespace kube-ops-view --dry-run -o yaml | kubectl apply -f -

Creamos una cuenta de sistema con capacidades de administrador

kubectl create -n kube-ops-view serviceaccount kube-ops-view-sa --dry-run -o yaml | kubectl apply -f -
kubectl create clusterrolebinding kube-ops-view-sa --clusterrole=cluster-admin --serviceaccount=kube-ops-view:kube-ops-view-sa --dry-run -o yaml | kubectl apply -f -

Y realizamos la ejecución de un despliegue junto con un servicio para su publicación

cat <<EOF |kubectl apply -n kube-ops-view -f -
 ---
apiVersion: v1
kind: Service
metadata:
  name: kube-ops-view
  namespace: kube-ops-view
spec:
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: 8080
  selector:
    app: kube-ops-view
  type: LoadBalancer
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: kube-ops-view
  name: kube-ops-view
spec:
  replicas: 1
  selector:
    matchLabels:
      app: kube-ops-view
  template:
    metadata:
      labels:
        app: kube-ops-view
    spec:
      serviceAccountName: kube-ops-view-sa
      containers:
      - image: hjacobs/kube-ops-view:0.11
        name: kube-ops-view
        ports:
        - containerPort: 8080

Pese a ser un único servicio (sin autenticación, importante) su contenedor tiene un tamaño parecido al de las soluciones anteriormente mostradas:

docker.io/hjacobs/kube-ops-view                   0.11                fd70a70b6d70d       40.8MB

Por lo que su despliegue ha de ser rápido.

Características

Su interfaz, mostrado en la siguiente figura es mínimo:

Dashboards de Kubernetes 2 30

Sin opciones de entrar en los objetos o de editar, la información aparece al pasar por encima de las “cajas”.… Read the rest “Dashboards de Kubernetes 2”

Dashboards de Kubernetes 1

Uno de los principales problemas al empezar a trabajar con Kubernetes es la falta de herramientas comprensibles sobre Kubernetes. Los dashboards de kubernetes (las herramientas de gestión de la plataforma) se convierten en el punto de entrada para muchos que quieren aprender Kubernetes.

En esta serie de articulos vamos a examinar algunos de los dashboards más usados, inluyendo algunos más específicos (octant, kontena) y dejando aquellos orientados a PaaS/CaaS (Rancher, Openshift) ya que en ambos casos se sobrepasa el alcance de herramientas de entrada a Kubernetes.

Dashboards de Kubernetes

Kubernetes Dashboard

Con más de 6000 estrellas en GitHUb, el dashboard oficial de Kubernetes es la opción estándar de este tipo de soluciones, a causa de las dependencias del mismo y su falta de compatibilidad con las versiones actuales de Kubernetes nos vamos a centrar en las versión v2-beta3.

Como se instala

Ejecutando el comando:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta3/aio/deploy/recommended.yaml

Se instala en el espacio de nombre “kubernetes-dashboard” y para obtener las métricas utiliza el servicio “dashboard-metrics-scraper” que se instala en el mismo espacio de nombres.

Se debe acceder vía IP external (servicio LoadBalancer o kubectl proxy), o configurar un Ingress con los mismos certificados SSL que la consola (lo que complica su despliegue).

Los contenedores que forman parte de esta solución son:

docker.io/kubernetesui/dashboard                  v2.0.0-beta3        6feddba9df747       32MB
docker.io/kubernetesui/metrics-scraper          v1.0.1               709901356c115       16.1MB

Por lo que su despliegue ha de ser rápido, ya que aunque son dos servicios son de reducido tamaño.

Características

Dispone de un interfaz limpio y claro, autenticación por token y un cuadro de mandos donde a un lado tenemos todos los elementos principales de Kubernetes y en la parte principal del panel una lista de los elementos seleccionados en el nombre de espacios seleccionado.

Panel principal:

Dashboards de Kubernetes 1 44

Por comodidad dispone de un tema oscuro, de los elementos a los que permite acceder tenemos los roles de seguridad.… Read the rest “Dashboards de Kubernetes 1”

Como publicar Kubernetes con External DNS, MetalLB y Traefik.

Kubernetes con External DNS, MetalLB y Traefik nos van a servir para que las aplicaciones web (en un entorno o no de microservicios) se publiquen, ya que los requisitos básicos son resolver por DNS el nombre del equipo y la ruta web que lleva a la aplicación.

El gran mapa

Como publicar Kubernetes con External DNS, MetalLB y Traefik. 60

Tras los pasos realizados en K3s: Kubernetes más simple y Helm v3 para desplegar PowerDNS sobre Kubernetes vamos a darle forma a una solución Kubernetes más completa para que pueda publicar servicios bajo su propio dominio y ruta y que a su vez sea accesible desde el exterior. Y siempre usando los mínimos recursos en esta tarea.

MetalLB

MetalLB que nos permitirá emular la potencia de los balanceadores de los entornos Cloud, los requisitos de está solución son una versión de Kubernetes 1.13 o superior, que no exista otro balanceador de red operativo y que el controlador de red esté soportado en la lista indicada en https://metallb.universe.tf/installation/network-addons/, debemos tener en cuenta que K3s incluye flannel que está soportado y que en el caso de otros como Weave se requieren una serie de modificaciones.

Para instalar MetalLB solo es necesario aplicar el archivo “yaml” que despliega todos los elementos:

$ sudo kubectl apply -f "https://raw.githubusercontent.com/danderson/metallb/master/manifests/metallb.yaml"

Y para activar MetalLB le creamos una configuración (archivo pool.xml) que tendrá la forma:

apiVersion: v1
kind: ConfigMap
metadata:
  namespace: metallb-system
  name: config
data:
  config: |
    address-pools:
    - name: my-ip-space
      protocol: layer2
      addresses:
      - 192.168.8.240/28

Que al aplicar con k3s kubectl apply -f pool.yml configurará MetalLB para que en el caso de que existan servicios con loadBalancer utilicen una de las IPs definidas en el rango especificado (en este caso 192.168.9.240/28).

MetalLB es una gran ventaja sobre otros tipos de soluciones locales, ya que no requiere del uso de SDN (como es el caso de Kubernetes sobre VMware NSX) o de servidores específicos para la publicación (como el caso de OpenShift, que ademas de SDN requiere de maquinas especificas para publicar servicios).… Read the rest “Como publicar Kubernetes con External DNS, MetalLB y Traefik.”

Helm v3 para desplegar PowerDNS sobre Kubernetes

En el artículo PowerDNS sobre Docker o Podman, fácil y rápido dejamos un punto pendiente sobre Kubernetes, esto es así porque la estructura de servicios de Kubernetes es mucho más compleja que la de Docker o Podman y por tanto hay que hacer un planteamiento completamente diferente.

Helm v3 para desplegar PowerDNS sobre Kubernetes 66

Empaquetar con Helm v3

Lo primero que debemos tener en mente es empaquetar aplicaciones para que su despliegue no requiera de amplios conocimientos sobre Kubernetes (hacer la vida al usuario más fácil) y lo segundo es que podemos tener muchos usuarios sobre el mismo entorno deseando querer la misma aplicación y no podemos crear un paquete para cada uno, debemos poder reutilizar el paquete creado.

En Kubernetes el estándar de paquetes es Helm que nos va a permitir gestionar despliegues de forma fácil y siendo reutilizables por usuario, proyecto, etc. El paquete Helm está formado por:

  • Chart.yaml: Que es la metainformación sobre el propio paquete.
  • templates: Carpeta donde vamos a definir los objetos que van a ser desplegados en Kubernetes, pero que van a tener ciertas modificaciones para que sean flexibles.
  • values.yaml: En los objetos a desplegar existirán una serie de variables que habrán de definirse (p.e. servidores a los que acceder, claves de acceso, bases de datos en un servidor, etc), en este fichero se definen los valores predefinidos de cada variable, para que posteriormente el usuario que lance el paquete pueda ajustarlo a su gusto.
  • NOTES.txt: Dentro de “templates” se coloca este archivo que contendrá un mensaje sobre el resultado de la instalación del paquete, como puede ser como obtener la IP o URL de acceso.
  • _helpers.tpl: Este archivo que también encontraremos dentro de la carpeta “templates” contiene definiciones de variables que podremos usar en las objetos, como es por ejemplo el nombre del paquete correctamente definido y que nos permitirá realizar múltiples despliegues de la misma aplicación en el mismo espacio de nombres simplemente cambiando el nombre de versión del despliegue.
Read the rest “Helm v3 para desplegar PowerDNS sobre Kubernetes”
Abrir publicación
PowerDNS sobre Docker o Podman, fácil y rápido 67

PowerDNS sobre Docker o Podman, fácil y rápido

Que es PowerDNS y DNS como servicio crítico

PowerDNS es un servidor DNS, siendo este un servicio especialmente crítico en cualquier infraestructura que deseemos desplegar, ya que es el principal punto de conexión entre servicios y operadores.

Si de todas las opciones que nos encontramos cuando buscamos un servidor DNS (podemos ver una larga lista en https://en.wikipedia.org/wiki/Comparison_of_DNS_server_software) buscamos las tres siguientes condiciones: que se pueda gestionar fácilmente, despliegue sencillo y OpenSource nos vamos a quedar en una solo opción: PowerDNS y para su gestión PowerDNS-admin.

PowerDNS ( cuyo desarrollo se puede ver en https://github.com/PowerDNS/pdns y tiene más de 1800 estrellas) es un potente servidor DNS cuya características más interesantes para la gestión son disponer de un servicio web con una potente API y ser capaz de almacenar la información en bases de datos, como MySQL.

Y seleccionamos PowerDNS-Admin por dos razones: Está activamente mantenido (https://github.com/ngoduykhanh/PowerDNS-Admin, más de 750 estrellas) y visualmente es un entorno más amigable al tener un formato parecido al que las herramientas de RedHat están usando actualmente.

¿Porqué PowerDNS con PowerDNS-Admin?

Porque conforman un potente paquete donde tenemos las siguientes ventajas:

  • Fácil de instalar
  • Fácil de mantener
  • Interfaz intuitivo
  • Todo está guardado en una base de datos (lo que facilita replicación, copias de seguridad, alta disponibilidad, etc).
  • No requiere configuración especial del navegador (como es el caso de RedHat IDM que requiere instalar el certificado del servidor).
  • Para la gestión de los operadores dispone de autenticación contra múltiples fuentes (LDAP, AD, SAML, Github, Google, etc).
  • Dispone de control sobre los permisos de acceso a los dominios

A estas ventajas hay que unirles la existencia de múltiples contenedores que facilitan sobremanera como desplegar y actualizar está solución.

PowerDNS sobre Docker o Podman, fácil y rápido 68

Desplegar PowerDNS con Docker-Composer

La solución con PowerDNS consta de tres partes: el servidor dns, para el cual haremos uso de contenedor pschiffe/pdns-mysql:alpine (https://github.com/pschiffe/docker-pdns/tree/master/pdns), el servidor de base de datos mariadb a través del contenedor yobasystems/alpine-mariadb
(https://github.com/yobasystems/alpine-mariadb) y el contenedor aescanero/powerdns-admin que hemos explicado en un post anterior (Docker: Reducir el tamaño de un contenedor).… Read the rest “PowerDNS sobre Docker o Podman, fácil y rápido”

Navegación de entradas

1 2 3
Volver arriba