Attention ce sujet est pour les étudiants qui font le TP le vendredi 17 janvier. Ne le suivez pas si vous avez commencé le TP jeudi 16/01.
Pour ce TP vous utiliserez votre plateforme kubernetes créée au TP précédant. Pour finir, il faut que votre plateforme soit fonctionnelle avec un ingress-controler
fonctionnel aussi.
Un embryon de script de test est disponible ici test-kube.zip
Vous devez avoir 2 déploiement,
ingress
Pour le fonctionnement, il faut donc un secret et 2 services (un normal et un ingress).
~/TpNote
sur le manager de votre cluster. Vous devrez placer tous les fichier du TP dans ce répertoire.IPManager
, IPWorker1
et IPWorker2
.NomDNS
.NomDeGroupe
attention, les deux membres du groupe doivent remplir cette colonne, cela me permettra de retrouver les groupes. Ce nom va être utilisé dans le sujet et ne doit contenir que des lettres minuscules et des -
.Login
et un mot de passe dans la case MotDePasse
(Pas ceux de l'université !!).Pour ce TP noté automatiquement, vous devez faire bien attention à utiliser les noms qui sont demandés
Créez un secret :
secr-NOMDEGROUPE
où NOMDEGROUPE
doit être le nom de votre groupe et la valeur est le login déposé sur tomuss.user_tpnote
. pwd_tpnote
.
Si vous créer le secret avec un fichier yml
appelez le secret.yml
. Si c'est avec une commande, recopiez-la dans secret.sh
.
Attention Dans les fichiers ymlles secrets doivent être encodés en base64. La commande pour trouver la valeur est :
# Pour encoder $ echo -n "la valeurs à encoder" | base64 bGEgdmFsZXVycyDDoCBlbmNvZGVy # Pour décoder $ echo bGEgdmFsZXVycyDDoCBlbmNvZGVy | base64 -d la valeurs à encoder
N'oubliez pas le -n
de la commande echo
, cela ajoute un retour chariot à la valeur !!
Dans ce qui suis, NOMDEGROUPE
doit être remplacé par le nom de votre groupe.
redis-NOMDEGROUPE
{app: redis, tp: note, groupe: NOMDEGROUPE}
redis
["redis-server", "/etc/redis/redis.conf"]
/data
qui est vide au démarrage/etc/redis/
contenant au démarrage le fichier redis.conf
suivant (où NOMDELOGIN doit être le nom de l'utilisateur déposé sur tomuss récupéré à partir du secret): requirepass NOMDELOGIN
Rq : Pour les soucis d'initialisation, vous pouvez accéder au log d'un conteneurs d'initialisation en tapant :
kubectl logs NOMDUPOD -c NOMDUCONTENEUR
Cela va exécuter un serveur redis qui réclame une authentification. Pour le tester, vous pouvez utiliser la commande redis-client
dans le pod. Pour cela
$ kubectl exec -it NOMDUPOD redis-cli # on est connecé dans le serveur redis # test de la commande HELP 127.0.0.1:6379> HELP redis-cli 5.0.7 To get help about Redis commands type: "help @<group>" to get a list of commands in <group> "help <command>" for help on <command> "help <tab>" to get a list of possible help topics "quit" to exit To set redis-cli preferences: ":set hints" enable online hints ":set nohints" disable online hints Set your preferences in ~/.redisclirc # Test de la commande MGET 127.0.0.1:6379> MGET * (error) NOAUTH Authentication required. # Authentification, le login que j'utilise est ''fabien'' 127.0.0.1:6379> AUTH fabien OK # Retest de MGET, il n'y a pas de variable dans le serveur qui est vide au démarrage 127.0.0.1:6379> MGET * 1) (nil) 127.0.0.1:6379> QUIT
serv-redis-NOMDEGROUPE
6379
du service sur le port 6379
du pods redis
Pour le tester vous pouvez utiliser le pod busybox
du dernier TP :
$ kubectl exec -it NOMDUPODBUSYDUDERNIERTP sh # mon groupe est prof / # telnet serv-redis-prof 6379 Connected to serv-redis-tpnote GET TOTO -NOAUTH Authentication required. AUTH ee -ERR invalid password AUTH fabien +OK MGET * *1 $-1 QUIT +OK Connection closed by foreign host / #
Dans ce qui suis, NOMDEGROUPE
doit être remplacé par le nom de votre groupe.
php-NOMDEGROUPE
{app: php, tp: note, groupe: NOMDEGROUPE}
forge.univ-lyon1.fr:4567/fabien.rico/tpnotekube/php-redis-cli
SERVEUR_REDIS
égale au nom du serveur redis qui doit être contactéCC_LOGIN
égale au contenu du champs user_tpnote
du secret/var/www/html
initialisé avec le code php se trouvant dans l'archive http://perso.univ-lyon1.fr/fabien.rico/site/_media/cloud:2019:codephp.zip (les fichiers doivent être téléchargés, desarchivés et l'archive effacée durant l'initialisation).Rq : Pour les soucis d'initialisation, vous pouvez accéder au log d'un conteneurs d'initialisation en tapant :
kubectl logs NOMDUPOD -c NOMDUCONTENEUR
serv-php-tpnote
.ingress-NOMDEGROUP̈́
publiez le site php.À ce stade il est normal que le site ne trouve pas le mot de passe où le token
Pensez à supprimer le ingress du dernier TP qui pourrait perturber celui là. Pensez à noter le nom DNS utilisé dans tomuss.
Le mot de passe et le token doivent être distribués via le secret defini plus tôt. Vous trouverez le token dans les log du pod php.
token_tpnote
.token
contenant le token;password
contenant le mot de passe.Pour exporter seulement une partie de secret dans un volume et changer les noms des fichiers générés, il faut utilisez le shéma suivant lors de la définition du volume :
name: NOMDUVOLUME secret: secretName: NOMDUSECRET items: - key: NOMDELACLEF1 path: NOMDUFICHIERGENERE1 - key: NOMDELACLEF2 path: NOMDUFICHIERGENERE2
/secrets
du pod php.vous y etes presque
.tester le load balancing
Bravo
vous avez terminé.