Tanzu Kubernetes Grid - Desplegar clusters que confíen en certificados autofirmados

Cuando desplegamos clusters de Kubernetes con VMware TKG en nuestro datacenter, es probable que necesitemos que el cluster confíe en certificados autofirmados. Ya sea para poder utilizar una Registry privada o para algún otro servicio que necesitemos consumir desde el cluster.


Para lograr esto vamos a hacer uso de YTT que es una de las Carvel Tools que debemos instalar como parte del "tanzu cli". YTT es una herramienta que nos permite crear templates de archivos YAML y crear nuevos a partir de varios archivos más pequeños.

En nuestro Linux con Tanzu CLI existe una carpeta en el siguiente path:

~/.config/tanzu/tkg/providers/infrastructure-vsphere/ytt/

En esta carpeta vamos a agregar un nuevo archivo de nombre "tkg-custom-ca.yaml" con el siguiente contenido:

#@ load("@ytt:overlay", "overlay")
#@ load("@ytt:data", "data")

#! This ytt overlay adds additional custom CA certificates on TKG cluster nodes, so containerd and other tools trust these CA certificates.
#! It works when using Photon or Ubuntu as the TKG node template on all TKG infrastructure providers.

#! Trust your custom CA certificates on all Control Plane nodes.
#@overlay/match by=overlay.subset({"kind":"KubeadmControlPlane"})
---
spec:
  kubeadmConfigSpec:
    #@overlay/match missing_ok=True
    files:
      #@overlay/append
      - content: #@ data.read("tkg-custom-ca.pem")
        owner: root:root
        permissions: "0644"
        path: /etc/ssl/certs/tkg-custom-ca.pem
    #@overlay/match missing_ok=True
    preKubeadmCommands:
      #! For Photon OS
      #@overlay/append
      - '! which rehash_ca_certificates.sh 2>/dev/null || rehash_ca_certificates.sh'
      #! For Ubuntu
      #@overlay/append
      - '! which update-ca-certificates 2>/dev/null || (mv /etc/ssl/certs/tkg-custom-ca.pem /usr/local/share/ca-certificates/tkg-custom-ca.crt && update-ca-certificates)'

#! Trust your custom CA certificates on all worker nodes.
#@overlay/match by=overlay.subset({"kind":"KubeadmConfigTemplate"}), expects="1+"
---
spec:
  template:
    spec:
      #@overlay/match missing_ok=True
      files:
        #@overlay/append
        - content: #@ data.read("tkg-custom-ca.pem")
          owner: root:root
          permissions: "0644"
          path: /etc/ssl/certs/tkg-custom-ca.pem
      #@overlay/match missing_ok=True
      preKubeadmCommands:
        #! For Photon OS
        #@overlay/append
        - '! which rehash_ca_certificates.sh 2>/dev/null || rehash_ca_certificates.sh'
        #! For Ubuntu
        #@overlay/append
        - '! which update-ca-certificates 2>/dev/null || (mv /etc/ssl/certs/tkg-custom-ca.pem /usr/local/share/ca-certificates/tkg-custom-ca.crt && update-ca-certificates)'

Si se fijan, el código referencia a un archivo "tkg-custom-ca.pem". Debemos crear este archivo en la misma carpeta y dentro poner todos los certificados .crt en los que necesitemos confiar.

Eso es todo, a partir de este momento, todo nuevo cluster de TKG desplegado desde este Linux, confiarán en los certificados auto firmados que hayamos definido.


Comentarios

Entradas populares de este blog

vRA8 - Definir redes disponibles por Projecto

Aria Automation - crear lista ordenada de key-value en custom forms con Orchestrator

Demo simple de GSLB con AVI