Skip to content

Kubewarden en Rancher Manager Server

La UI Extension para Kubewarden se intregra perfectamente con la consola de Rancher Manager Server. La extensión UI automatiza la instalación y configuración de Kubewarden y configura el acceso a las políticas mantenidas por SUSE. La extensión UI brinda acceso a un catálogo seleccionado de políticas listas para usar. Con la extensión UI, se pueden explorar, instalar y configurar estas políticas.

La UI Extension para Kubewarden proporciona una descripción general de los componentes de Kubewarden y su comportamiento. Esto incluye el acceso a las métricas de Kubewarden y a los eventos de seguimiento. Un operador puede comprender el impacto de las políticas en el clúster y solucionar problemas.

Además, La UI Extension para Kubewarden interfaz de usuario de Policy Reporter, que brinda una descripción visual del estado de cumplimiento del clúster de Kubernetes. Con esta interfaz de usuario, un operador puede identificar rápidamente todos los recursos de Kubernetes que no cumplen, comprender los motivos de las infracciones y actuar en consecuencia.

Instalación de UI Extension para Kubewarden

  1. Ingresar a la consola web de Rancher Manager Server y dirigirse al botón de Extensiones ubicado en la parte inferior izquierda 🧩
  2. Cuando se encuentre en la pantalla de Extensions, agregar el Repositorio de Extensions de Rancher, en la pantalla de Extensions, en el menú de los tres puntos verticales, seleccionar la opción Manage Repositories
  3. A continuación dar click en el botón Create
  4. En el campo Name colocar: rancher-ui-plugins
  5. En Target seleccionar Git repository...
  6. En el campo Git Repo URL colocar lo siguiente: https://github.com/rancher/ui-plugin-charts y dar click en Create
  7. Verifica que en la página de Repositories aparezca un nuevo Repositorio llamado Rancher Extensions y que se encuentre en estado Active
  8. Regresar a la consola web de Rancher Manager Server y dirigirse al botón de Extensiones ubicado en la parte inferior izquierda, debes comprobar que en la pestaña Available tengas como opción Kubewarden
  9. Dar click en el botón Install de la Extension Kubewarden
  10. Selecciona la versión 2.1.0 y dar click en el botón Install
  11. Aparecerá un mensage como el siguiente: Extensions changed - reload required, debes dar click en el botón Reload
  12. Dirigirse al Cluster de Kubernetes llamado cluster1
  13. En el menú principal del cluster, veras una nueva opción llamada Kubewarden, debes dar click en ese menú.

Instalación Kubewarden (cluster1)

📝 ESTA PRACTICA SE REALIZARA EN CLUSTER1

  1. En este punto nos encontramos listos para instalar Kubewarden en el cluster de Kubernetes y administrar políticas desde la Consola Wen de Rancher Manager con la Extension de Kubewarden, debes dar click en el botón Install Kubewarden
  2. A continiación aparecerá el siguiente mensaje: You will need the Kubewarden Helm repository (https://charts.kubewarden.io) to install the kubewarden chart, por lo que debes dar click en el botón Add Kubewarden Repository
  3. Nos aparecerá el siguiente mensage: Kubewarden App Install This will take you to the app installation page for Kubewarden. Dar click en el botón Install Kubewarden
  4. En la siguiente pantalla Install: Step 1 dar click en el botón Next
  5. En la siguiente pantalla Install: Step 2 marcar con un check la opción Enable Policy Reporter UI y dar click en el botón Install
  6. Esperar a que finalice la instalación de Kubewarden, se mostrará un log que hasta el final debe mostrar mensaje similar al siguiente:
    SUCCESS: helm upgrade --install=true --namespace=cattle-kubewarden-system --timeout=10m0s --values=/home/shell/helm/values-kubewarden-controller-2.0.11.yaml --version=2.0.11 --wait=true rancher-kubewarden-controller /home/shell/helm/kubewarden-controller-2.0.11.tgz
    
  7. En el menú principal del cluster, veras una nueva opción llamada Kubewarden, debes dar click en ese menú y llegarás a la ventana Welcome to Kubewarden
  8. Se te mostrará el mensaje: The default PolicyServer and policies are not installed, click the button below to begin installing this chart. A continuación dar click en el botón Install Chart
  9. En la siguiente pantalla Install: Step 1 dar click en el botón Next
  10. En la siguiente pantalla Install: Step 2 dar click en el botón Install
  11. Esperar a que finalice la instalación de Kubewarden-defaults, se mostrará un log que hasta el final debe mostrar mensaje similar al siguiente:
    SUCCESS: helm upgrade --install=true --namespace=cattle-kubewarden-system --timeout=10m0s --values=/home/shell/helm/values-kubewarden-defaults-2.0.0.yaml --version=2.0.0 --wait=true rancher-kubewarden-defaults /home/shell/helm/kubewarden-defaults-2.0.0.tgz
    
  12. En el menú principal del cluster, veras una nueva opción llamada Kubewarden, debes dar click en ese menú y llegarás a la ventana Welcome to Kubewarden en donde debe aparecer del Policy Servers como Active

Crear una nueva Política: Pod Privileged Policy

  1. Expandir el menú Kubewarden y dirigirse a la opción ClusterAdmissionPolicies y dar click en el botón Create
  2. Aparecera el siguiente mensaje: Official Kubewarden policies are hosted on ArtifactHub, in order to show these you will need to add artifacthub.io to the whitelist-domain setting., por lo que debes dar click en el botón Add ArtifactHub To Whitelist
  3. A continuación aparecerán una serie de opciones con las políticas disponibles en ArtifactHub para poder utilizar, por lo que debes ubicar la política llamada Pod Privileged Policy y seleccionarla.
  4. En la siguiente pantalla, bajar hasta el final de la página y dar click en el botón Next
  5. En la siguiente pantalla, en la pestaña General en el campo Name colocar lo siguiente: privileged-pods
  6. Verificar que el campo llamado Policy Server, este seleccionado con el nombre default
  7. Revisar las configuraciones definidas en la pestaña Rules, no hacer ningún cambio.
  8. Revisar las configuraciones definidas en la pestaña Namespace Selector, no hacer ningún cambio.
  9. Posteriormente dar click en el botón Finish
  10. Esperar a que la configuración finalice y que aparezca la política en estado Active

Validando la Política: Pod Privileged Policy

  1. Ingresar como usuario administrador al cluster de Kubernetes con el siguiente comando:

    export KUBECONFIG=/home/student/rke2_conn/cluster1/cluster1_kubeconfig.yaml
    

  2. Creemos un Pod con un Contenedor que no está en modo privileged:

    kubectl apply -f - <<EOF
    apiVersion: v1
    kind: Pod
    metadata:
      name: unprivileged-pod
    spec:
      containers:
        - name: nginx
          image: nginx:latest
    EOF
    
    Esto producirá el siguiente resultado:
    pod/unprivileged-pod created
    
    El Pod se creó exitosamente, con lo que comprobamos que contenedores que NO esten en modo privilegiado se crearan sin ningún inconveniente.

  3. Ahora, creemos un Pod con securityContext en privileged con valor true, la configuración securityContext: privileged: true proporciona a los contenedores permisos extendidos en el host, lo que puede ser necesario para ciertas aplicaciones pero conlleva riesgos significativos de seguridad.

    kubectl apply -f - <<EOF
    apiVersion: v1
    kind: Pod
    metadata:
      name: privileged-pod
    spec:
      containers:
        - name: nginx
          image: nginx:latest
          securityContext:
              privileged: true
    EOF
    
    La política ha denegado la creación del Pod y debería ver el siguiente mensaje:
    Error from server: error when creating "STDIN": admission webhook "clusterwide-privileged-pods.kubewarden.admission" denied the request: Privileged container is not allowed
    
    Lo anterior comprueba que la politica creada anteriormente esta funcionando correctamente, ya que NO permite crear contnedores en modo privileged

Limpieza del ambiente

  1. Eliminar los recursos tipo ClusterAdmissionPolicies y/o AdmissionPolicies que haya creado, para lo cual debes seleccionarlos y dar click en el botón Delete
  2. Eliminar los recursos tipo PolicyServers que haya creado, para lo cual debes seleccionarlos y dar click en el botón Delete
  3. En la consola web de Rancher Manager Server dirigirse al botón de Extensiones ubicado en la parte inferior izquierda.
  4. En la pestaña Installed ubicar Kubewarden y dar click en el botón Uninstall
  5. Aparecerá un mensage como el siguiente: Extensions changed - reload required, debes dar click en el botón Reload
  6. Aperturar una terminal en el servidor proporcionado con usuario student e ingresar el cluster utilizando la opción de KUBECONFIG:
    export KUBECONFIG=/home/student/rke2_conn/cluster1/cluster1_kubeconfig.yaml
    
  7. Eliminar los CDRs creados en la instalación de Kubewarden
    kubectl delete crd admissionpolicies.policies.kubewarden.io clusteradmissionpolicies.policies.kubewarden.io policyservers.policies.kubewarden.io clusterpolicyreports.wgpolicyk8s.io policyreports.wgpolicyk8s.io
    
  8. Eliminar los clusterrole creados en la instalación de Kubewarden
    kubectl delete clusterrole kubewarden-controller-manager-cluster-role kubewarden-controller-metrics-reader kubewarden-controller-proxy-role audit-scanner-cluster-role kubewarden-controller-manager-cluster-role kubewarden-context-watcher
    
  9. Eliminar los clusterrolebinding creados en la instalación de Kubewarden
    kubectl delete clusterrolebinding kubewarden-controller-manager-cluster-role kubewarden-controller-proxy-rolebinding audit-scanner-cluster-role-viewer audit-scanner-cluster-role kubewarden-context-watcher
    
  10. Eliminar los mutatingwebhookconfiguration creados en la instalación de Kubewarden
    kubectl delete mutatingwebhookconfiguration kubewarden-controller-mutating-webhook-configuration
    
  11. Eliminar los kubectl delete validatingwebhookconfiguration kubewarden-controller-validating-webhook-configuration creados en la instalación de Kubewarden
    kubectl delete validatingwebhookconfiguration kubewarden-controller-validating-webhook-configuration
    
  12. Eliminar los namespaces: rancher-kubewarden-crds y cattle-kubewarden-system
    kubectl delete ns rancher-kubewarden-crds cattle-kubewarden-system