127 lines
4.3 KiB
Markdown
127 lines
4.3 KiB
Markdown
\newpage
|
||
|
||
Cookies dans Kube
|
||
-----------------
|
||
|
||
Maintenant que nous en savons un peu plus sur Kubernetes, nous allons commencer
|
||
à déployer notre application ChocoMiner dans notre cluster. Pour cela, nous
|
||
allons devoir :
|
||
|
||
- lancer des déploiements de ces images ;
|
||
- exposer avec un ClusterIP les services qui ont besoin de communiquer
|
||
entre-eux ;
|
||
- exposer avec un NodePort l'interface graphique de contrôle.
|
||
|
||
|
||
### Lancement des *pod*s
|
||
|
||
#### Via Helm
|
||
|
||
[Helm](https://helm.sh/) est l'équivalent d'un gestionnaire de paquets, mais
|
||
pour Kubernetes. Nous avons pu voir dans la section précédente qu'il faut
|
||
parfois écrire des fichiers de description YAML assez volumineux (et encore,
|
||
celui du tableau de bord est tout petit !) afin de se faire comprendre de
|
||
Kubernetes.
|
||
|
||
Helm se veut donc, notamment, être un moyen de packager une application, pour
|
||
que ce soit plus simple de l'ajouter à son cluster k8s. L'[artifact
|
||
hub](https://artifacthub.io/) est une agrégation de différents dépôts,
|
||
permettant de trouver facilement son bonheur. On va y trouver
|
||
[`influxdb`](https://artifacthub.io/packages/helm/influxdata/influxdb) dont on
|
||
va avoir besoin pour la suite.
|
||
|
||
Mais d'abord, il va nous falloir [installer
|
||
Helm](https://helm.sh/docs/intro/install/). Il utilisera la même configuration
|
||
que `kubectl`, il n'y a rien de plus à configurer.
|
||
|
||
Une fois `helm` installé, et le dépôt `influxdata` ajouté, comme précisé dans
|
||
la documentation du *chart* d'InfluxDB, nous pouvons le déployer dans notre
|
||
cluster :
|
||
|
||
```bash
|
||
helm install influxdb influxdata/influxdb
|
||
```
|
||
|
||
Les valeurs de configuration indiquées dans le `README` du *chart* se modifient
|
||
ainsi :
|
||
|
||
```bash
|
||
helm upgrade -f values.yml your-influx-name influxdata/influxdb
|
||
```
|
||
|
||
Il vous sera entre autres nécessaire d'ajouter un administrateur afin de pouvoir
|
||
utiliser la base de données.
|
||
|
||
Nous pouvons ensuite faire de même avec
|
||
[Chronograf](https://artifacthub.io/packages/helm/influxdata/chronograf) ou
|
||
mixer avec la méthode ci-dessous (en adaptant certaines valeurs).
|
||
|
||
|
||
#### Via `kubectl`
|
||
|
||
Si vous ne souhaitez pas utiliser `helm`, vous pouvez vous rabattre sur les
|
||
YAML que l'on a utilisés jusqu'à maintenant, et utiliser `kubectl`. Commençons
|
||
par lancer `influxdb` :
|
||
|
||
```bash
|
||
kubectl apply -f https://virli.nemunai.re/influxdb.yaml
|
||
```
|
||
|
||
Pour chronograf, la commande suivante fonctionnerait, mais prenons exemple sur
|
||
le fichier YAML d'InfluxDB pour Chronograf :
|
||
|
||
```bash
|
||
kubectl create deployment chronograf --image=chronograf -- chronograf \
|
||
--influxdb-url=http://influxdb:8086 \
|
||
--influxdb-username=chronograf \
|
||
--influxdb-password=eBoo8geingie8ziejeeg8bein6Yai1a
|
||
```
|
||
|
||
#### Notre application
|
||
|
||
```bash
|
||
TAG=0.1
|
||
for SERVICE in hasher rng worker; do
|
||
kubectl create deployment $SERVICE --image=nemunaire/$SERVICE:$TAG
|
||
done
|
||
```
|
||
|
||
#### Exposer les ports
|
||
|
||
Pour trois des applications, des `ClusterIP` font l'affaire, car ils n'ont pas
|
||
besoin d'être exposés en dehors du cluster.
|
||
|
||
```bash
|
||
kubectl expose deployment influxdb --port 8086
|
||
kubectl expose deployment rng --port 80
|
||
kubectl expose deployment hasher --port 80
|
||
```
|
||
|
||
Si vous avez utilisé le *chart* Helm d'InfluxDB, Un `ClusterIP` a été
|
||
automatiquement créé.
|
||
|
||
Par contre, notre Chronograf doit être exposé, on lui alloue donc un NodePort :
|
||
|
||
```bash
|
||
kubectl create service nodeport chronograf --tcp=8888 --node-port=30001
|
||
```
|
||
|
||
À ce stade, nous devrions pouvoir accéder à l'interface de Chronograf !
|
||
|
||
Le port 30001 est exposé par `kind` (cela faisait partie des ports redirigés par
|
||
Docker entre le nœud *master* et votre machine !), nous devrions donc pouvoir
|
||
nous rendre sur : <http://localhost:30001/> pour y voir Chronograf.
|
||
|
||
Pour afficher un graphique intéressant, on se rend dans la partie
|
||
*Explore*, puis on choisit la base `chocominer.autogen`, puis la table `hashes`
|
||
et enfin on sélectionne l'élément `value`. Pour être tout à fait juste, il faut
|
||
choisir la fonction `summ`, car nous voulons afficher le nombre total de
|
||
condensat générés. Un second graphique intéressant est celui du nombre de
|
||
pépites trouvées : il faut compter (`count`) le nombre d'éléments dans la table
|
||
`chunks`.
|
||
|
||
![Montée en charge progressive dans Chronograph](nuggets-graph.png)
|
||
|
||
Vous n'avez pas la même courbe de progression ? Alors continuons pour augmenter
|
||
la puissance de notre *rig* !
|