Juega Doom en Kubernetes |

¿Alguna vez has sentido nostalgia por Doom y otros videojuegos de bloques, esos que no requerían mucho más que un mouse y la esperanza de sobrevivir en una LAN con tus amigos? Tú sabes de qué estoy hablando; ¿los días en los que usaste los fines de semana para averiguar cómo podías viajar con tu escritorio y cuántas Mountain Dews podías poner en los bolsillos de tus pantalones cargo? Si este recuerdo pone un sentimiento cálido en tu corazón, pues este artículo es para ti.

Prepárate para volver a jugar a Doom, solo que esta vez jugarás con un propósito comercial legítimo: crear el caos. yo usare el mio bifurcación de Kube DOOM (con un nuevo gráfico de Helm porque así es como paso mis fines de semana a veces). También tengo una solicitud de extracción con el DOOM original de Kube creador del que estoy esperando oír hablar.

El primer artículo de esta serie explicó qué es la ingeniería del caos y el segundo mostró cómo obtener el estado estacionario del sistema para que pueda compararse con un estado de caos. En los próximos artículos, presento algunas herramientas de ingeniería del caos que puede usar: Litmus para probar fallas y experimentos arbitrarios en su clúster de Kubernetes; Chaos Mesh, un orquestador de caos de código abierto con una interfaz de usuario web; y Kube-monkey para realizar pruebas de esfuerzo de sus sistemas mediante la programación de módulos de terminación aleatorios en su clúster.

En este sexto artículo, usaré Pop! _OS 20.04, Helm 3, Minikube 1.14.2, un visor VNC y Kubernetes 1.19.

Índice

    Configurar Minikube

    Si aún no lo has hecho, instalar Minikube de cualquier manera que tenga sentido para su entorno. Si tiene suficientes recursos, le recomiendo darle a su máquina virtual un poco más que la memoria y la potencia de la CPU predeterminadas:

    $ minikube config set memory 8192
    ❗  These changes will take effect upon a minikube delete and then a minikube start
    $ minikube config set cpus 6
    ❗  These changes will take effect upon a minikube delete and then a minikube start

    Luego inicie y verifique el estado de su sistema:

    $ minikube start
    ?  minikube v1.14.2 on Debian bullseye/sid
    ?  minikube 1.19.0 is available! Download it: https://github.com/kubernetes/minikube/releases/tag/v1.19.0
    ?  To disable this notice, run: 'minikube config set WantUpdateNotification false'

    ✨  Using the docker driver based on user configuration
    ?  Starting control plane node minikube in cluster minikube
    ?  Creating docker container (CPUs=6, Memory=8192MB) ...
    ?  Preparing Kubernetes v1.19.0 on Docker 19.03.8 ...
    ?  Verifying Kubernetes components...
    ?  Enabled addons: Almacenamiento-provisioner, default-storageclass
    ?  Done! kubectl is now configured to use "minikube" by default
    $ minikube status
    minikube
    type: Control Plane
    host: Running
    kubelet: Running
    apiserver: Running
    kubeconfig: Configured

    Preinstalación de pods con Helm

    Antes de continuar, deberá implementar algunos pods en su clúster. Para hacer esto, generé un gráfico de Helm simple y cambié las réplicas en mi archivo de los valores 1 a 8.

    Si necesita generar un gráfico de Helm, puede leer mi artículo sobre cómo crear un gráfico de Helm como guía. Creé un gráfico de Helm llamado nginx y creé un espacio de nombres para instalar mi gráfico usando los comandos a continuación.

    Crear un espacio de nombres:

    $ kubectl create ns nginx

    Instale el gráfico en su nuevo espacio de nombres con un nombre:

    $ helm install chaos-pods nginx -n nginx

    NAME: chaos-pods
    LAST DEPLOYED: Sun May 23 10:15:52 2021
    NAMESPACE: nginx
    STATUS: deployed
    REVISION: 1
    NOTES:
    1. Get the application URL by running these commands:
      export POD_NAME=$(kubectl get pods --namespace nginx -l "app.kubernetes.io/name=nginx,app.kubernetes.io/instance=chaos-pods" -o jsonpath="{.items[0].metadata.name}")
      export CONTAINER_PORT=$(kubectl get pod --namespace nginx $POD_NAME -o jsonpath="{.spec.Contenedores[0].ports[0].containerPort}")
      echo "Visit http://127.0.0.1:8080 to use your application"
      kubectl --namespace nginx port-forward $POD_NAME 8080:$CONTAINER_PORT

    Instalar Kube DOOM

    Puedes usar cualquier Equipo de red virtual (VNC) visor que desee; lo instalé Tigre VNC en mi caja de linux. Hay varias formas de configurar Kube DOOM. Antes de generar mi gráfico de Helm, podía configurarlo con chico o utilícelo localmente con Docker y el LÉAME contiene instrucciones para tales usos.

    Comience con un git clone:

    $ git clone git@github.com:Alynder/kubedoom.git
    Cloning into 'kubedoom'...

    Luego cambie el directorio a kubedoom/helm carpeta:

    $ cd kubedoom/helm/

    Dado que el archivo de valores base ya está configurado correctamente, solo necesita ejecutar un único comando de instalación:

    $ helm install kubedoom kubedoom/ -n kubedoom
    NAME: kubedoom
    LAST DEPLOYED: Mon May 31 11:16:58 2021
    NAMESPACE: kubedoom
    STATUS: deployed
    REVISION: 1
    NOTES:
    1. Get the application URL by running these commands:
      export NODE_PORT=$(kubectl get --namespace kubedoom -o jsonpath="{.spec.ports[0].nodePort}" services kubedoom-kubedoom-chart)
      export NODE_IP=$(kubectl get nodes --namespace kubedoom -o jsonpath="{.items[0].status.addresses[0].address}")
      echo http://$NODE_IP:$NODE_PORT

    Todo debe estar instalado, configurado y listo para usar.

    Juega con Kube DOOM

    Ahora solo tienes que entrar, ejecutar algunos comandos y empezar a jugar a tu nuevo videojuego de caos. El primer comando es un reenvío de puerto, seguido del comando de conexión del visor VNC. La conexión del visor VNC requiere una contraseña, es decir idbehold.

    Encuentre su pod para reenviar puertos:

    $ kubectl get pods -n kubedoom
    NAME                                       READY   STATUS    RESTARTS   AGE
    kubedoom-kubedoom-chart-676bcc5c9c-xkwpp   1/1     Running   0          68m

    ejecutar el port-forward comando usando el nombre de su pod:

    $  kubectl port-forward  kubedoom-kubedoom-chart-676bcc5c9c-xkwpp 5900:5900 -n kubedoom
    Forwarding from 127.0.0.1:5900 -> 5900
    Forwarding from [::1]:5900 -> 5900

    Todo está listo para jugar, por lo que solo necesita ejecutar el comando del visor VNC (que se muestra a continuación con la salida):

    $  vncviewer viewer localhost:5900

    TigerVNC Viewer 64-bit v1.10.1
    Built on: 2020-04-09 06:49
    Copyright (C) 1999-2019 TigerVNC Team and many others (see README.rst)
    See https://www.tigervnc.org for information on TigerVNC.

    Mon May 31 11:33:23 2021
     DecodeManager: Detected 64 CPU core(s)
     DecodeManager: Creating 4 decoder thread(s)
     CConn:       Connected to host localhost port 5900

    A continuación, verá la solicitud de contraseña, así que ingrésela (idbehold, como se indicó anteriormente).

    Una vez que haya iniciado sesión, debería poder caminar y ver a sus enemigos con nombres de pod.

    Soy malo en este juego, así que uso algunos trucos para divertirme un poco más:

    • Chico idspispopd camina directamente a través de una pared para llegar a tu ejército de cápsulas.
    • ¿No puedes manejar el arma? Eso es genial; yo tambien soy malo si escribes idkfa y presiona el numero 5, obtendrás un arma mejor.

    Así es como se ve cuando matas algo (utilicé k9s para esta vista).

    Notas finales

    Como esta aplicación requiere una función de administrador de clúster, debe prestar mucha atención a los nombres de los pods; es posible que se encuentre con un pod del sistema kube y será mejor que escape. Si matas a uno de esos pods, estarás matando una parte importante del sistema.

    Me encanta esta aplicación porque es la forma más rápida de jugar a la ingeniería del caos. Me recordó lo malo que era en este videojuego, pero fue divertido intentarlo. ¡Buena caza!

    Artículos de interés

    Subir