Instalar load balancer
==========================================

Documento para instalar un cluster kubernetes con tres nodos, un master y dos workers.

Pasos a seguir una vez instalado y actualizado el sistema operativo.

1. **Instalación de los paquetes para acceso al cluster**:

MetalLB para exponer una IP pública a los servicios de Kubernetes.

.. code-block:: bash

    kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.15.2/config/manifests/metallb-native.yaml

    kubectl get pods -n metallb-system

Ajustar el rango de IPs a la red de la máquina virtual.

.. code-block:: bash

    kubectl apply -f - <<EOF
    apiVersion: metallb.io/v1beta1
    kind: IPAddressPool
    metadata:
      namespace: metallb-system
      name: my-ip-pool
    spec:
      addresses:
      - 172.16.4.11-172.16.4.12
    EOF

    kubectl apply -f - <<EOF
    apiVersion: metallb.io/v1beta1
    kind: L2Advertisement
    metadata:
      namespace: metallb-system
      name: l2-advertisement
    spec:
      ipAddressPools:
      - my-ip-pool
    EOF

2. **OPCIONAL: Acceso desde fuera del cluster**:

Accesos permitidos por el certificado (exterior al pfsense)

.. code-block:: bash

    openssl s_client -connect 192.168.4.44:6443 -showcerts </dev/null 2>/dev/null | openssl x509 -noout -text | grep -A 1 "Subject Alternative Name"

Se obtiene la configuración por defecto y se modifican alguna propiedades.

.. code-block:: bash

    kubeadm config print init-defaults > kubeadm-temp.yaml
    vi kubeadm-temp.yaml
      '''
      ---
        apiServer:
            certSANs:
            - 127.0.0.1
            - 172.16.1.20
            - master1.iglu.net
            - 192.168.4.33
        apiVersion: kubeadm.k8s.io/v1beta4
      '''

Se eliminan los certificados anteriores.

.. code-block:: bash

    rm /etc/kubernetes/pki/apiserver.*

Se aplica la nueva configuración para el certificado del API Server.

.. code-block:: bash

    kubeadm init phase certs apiserver --config=kubeadm-temp.yaml


