Mi primera prueba de CKAD fue bien rustica, no aprobe 64% , y necesitaba 66% para pasar. Respondi 14 de 18 preguntas
Empece a estudiar con modelos de prueba, y luego si acerte 100%.
Me paso similar con CKA. Mi primer intento fue 58%. Respondi 11 de 16 preguntas, pero concientemente sabia que me faltaron 5 preguntas por intentar. Mas que nada aquellas que tenian que ver con la instalacion y configuracino del nodo de kubernetes.
Las preguntas que me faltaron en el CKA fueron las siguientes.
- Instalar ArgoCD sin los CRDs, mediante Helm
- Extraer informacion de un Custom Resource Definition, en especifico la documentacion de una propiedad.
- Instalar y unir un nodo mediante kuubeadm
- Instalar Calico para Network Policies
- Instalar paquetes de Debian para CRI.
- Crear un CSR (CertificateSigningRequest) para un usuario. Esto creo que es la pregunta que respondi mal.
Tambien habia una pregunta en la que necesitaba usar journalctl y systemctl pero entre en panico y olvide los comandos. No recuerdo si era parte de la pregunta de unir el nodo mediante kubeadm o la pregunta 1 que falle de las 11 que respondi.
Vamos con la mas sencilla, otra con la que entre en panico escenico porque en mi casa uso CachyOs y en el trabajo RHEL.
Instalar un paquete de base debian.
En general es sencillo para instalar en debian se usa:
- dpkg
En este caso un paquete en el mismo equipo seria:
- dpkg -i /ruta/del/archivo.deb
En particular el paquete que me pidieron configurar tenia que ver con CRI (Container Runtime Interface) pero no recuerdo si era containerd.
Si fuera el caso, necesita ejecutar el siguiente comando
- containerd config default | sudo tee /etc/containerd/
Esto crea el archivo de configuracion por defecto y ‘tee’ lee del standin y lo copia a un archivo.
Y ya luego iniciar el servicio.
- systemctl restart containerd
- systemctl enable containerd
- systemctl status containerd
- systemctl start containerd
Ya finalmente otro comando importante es:
* crictl info
crictl si viene en un .deb se instala con dpkg
Y si viene en un .tarball se descomprime tar zxvf y se ejecuta.
Otro punto importante que no debo olvidar es que si guardo en /usr/local/bin ya es parte del path.
Crear un CertificateSigningRequest (CSR)
En general es mas facil de lo que parece.
Necesito varias cosas en mi nodo. La pregunta ya provee varias felizmente porque no me acuerdo nunca de los comandos de Openssl y tampoco los puedo buscar en la prueba.
Necesitamos un ‘private key’
Necesitamos un ‘csr’
Existe una pagina de ‘Manage TLS in a cluster’ en la pagina oficial de kubernetes que tiene la informacion que quiero (https://kubernetes.io/docs/tasks/tls/managing-tls-in-a-cluster/)
Especificamente como crear la tonta firma:
apiVersion: certificates.k8s.io/v1
kind: CertificateSigningRequest
metadata:
name: my-svc.my-namespace
spec:
request: $(cat server.csr | base64 | tr -d '\n')
signerName: example.com/serving
usages:
- digital signature
- key encipherment
- server auth
De aca es importante el ApiVersoin, es uno ed esos namespace nuevos y tediosos de memorizar.
El Kind: Es intuititvo
y en el spec: el request es importante se puede cargar de un archivo, o lo puedo pegar a lo macho con base64
y el signerName: esta en una pagina de documentacion, puede que la pregunta me no brinde.
Una vez tengo todo configurado aplico.
y luego necesito ejecutar el siguiente ccomando
- kubectl certificate approve <nombre-certificado>
Con eso estamos, no necesito extraerlo ni nada raro segun la prueba, ni crear el kubeconfig ni otras cosas.
Lo que si necesito es que el Role y el nombre del usuario sean parte del CSR.
Felizmente encontre una guia para firmar con openssl en la misma pagina de K8. https://kubernetes.io/docs/tasks/tls/certificate-issue-client-csr/
La pagina se llama ‘Issue a certificate for CSR’ y hace toda la generacion incluyendo el private key. Que en este caso ya se provee.