4204d4

ESH26 - Énoncé du projet de session

💡 Acte d’énoncer, d’exprimer en termes nets.

🛑 Version 0.2b - Il y aura des modifications au courant de la semaine!



Ce projet comporte deux étapes de réalisation.


Étape 1 - Déployer des applications en mode local - 👉 remise le 16 mai


Captures d’écrans et détails sur les applications


Harbor



Homepage

Détails

NOTE: 🛑 Si harbor a été démarré avec le mot de passe par défaut, il faudra effacer la base de données et recommencer la configuration:

sudo docker-compose down -v
rm -r /data/database
rm -r /data/registry
sudo ./prepare
sudo docker-compose up -d

Wordpress

Contenu NFS des thèmes Wordpress


Node-red


Contenu NFS de Node-red


Mattermost


Jenkins

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: jenkins-pvc
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: local-path
  resources:
    requests:
      storage: 5Gi


💡 Voici des astuces d’aide à la réalisation du projet

Certificats pour Harbor

# Générer le certificat
sudo certbot certonly --standalone -d 4204d4.duckdns.org

# Renseigner le fichier `harbor.yml`
nano harbor.yml
https:
  # https port for harbor, default is 443
  port: 443
  # The path of cert and key files for nginx
  certificate: /etc/letsencrypt/live/4204d4.duckdns.org/fullchain.pem
  private_key: /etc/letsencrypt/live/4204d4.duckdns.org/privkey.pem


Exemples de PV, PVC à partir d’un volume NFS

Voir ici

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-nfs-node-red
spec:
  ...
  storageClassName: nfs-node-red
  nfs:
    server: esh26-mon-matricule.duckdns.org
    path: /esh26/node-red

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-nfs-node-red
spec:
  storageClassName: nfs-node-red
  ...


Renseigner un fichier à partir d’un configMap

# ============================================================
# ConfigMap — config.yaml de Homepage
# ============================================================
apiVersion: v1
kind: ConfigMap
metadata:
  name: homepage-config
data:
  config.yaml: |
    title: Homepage
    theme: dark
    color: slate
  
    allowedHosts: homepage.esh26

Exemple d’utilisation du dépôt harbor

apiVersion: apps/v1
kind: Deployment
metadata:
  name: homepage
spec:
  replicas: 1
  selector:
    matchLabels:
      app: homepage
  template:
    metadata:
      labels:
        app: homepage
    spec:
      containers:
      - name: homepage
        image: harbor.matricule.duckdns.org/esh26/homepage:esh26

### Lancer une application multi-fichiers YAML

# kustomization.yaml
# kubectl apply -k ./
resources:
  - esh26.yaml
  - traefik-ns.yaml
  - jenkins.yaml
  - node-red.yaml
  - wordpress.yaml

PV et PVC

Dans les notes de cours, il est indiqué qu’un PVC est toujours dépendant d’un PV.

Par contre, pour un volume local il est possible d’utiliser la classe storageClassName: local-path si le service local-path à été installé.

# Installation d'un `local-path-storage`
kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/v0.0.32/deploy/local-path-storage.yaml

Liste des ressources du projet - partie 01

$ kga
NAME                              READY   STATUS    RESTARTS   AGE
pod/homepage-76fb784c47-gqspg     1/1     Running   0          24h
pod/jenkins-55b96dfc79-t9h4n      1/1     Running   0          23h
pod/mariadb-8544495789-4s4sv      1/1     Running   0          24h
pod/mattermost-69f568bcf9-rtk76   1/1     Running   0          24h
pod/node-red-68b55c5bfb-xhz65     1/1     Running   0          24h
pod/wordpress-5d9548759d-v7dh5    1/1     Running   0          24h

NAME                         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)            AGE
service/homepage             ClusterIP   10.109.226.194   <none>        80/TCP             24h
service/kubernetes           ClusterIP   10.96.0.1        <none>        443/TCP            24h
service/mariadb-service      ClusterIP   10.100.209.86    <none>        3306/TCP           24h
service/service-jenkins      ClusterIP   10.103.139.150   <none>        80/TCP,50000/TCP   23h
service/service-mattermost   ClusterIP   10.107.102.101   <none>        8065/TCP           24h
service/service-node-red     ClusterIP   10.100.73.1      <none>        80/TCP             24h
service/wordpress-service    ClusterIP   10.104.185.125   <none>        80/TCP             24h

NAME                         READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/homepage     1/1     1            1           24h
deployment.apps/jenkins      1/1     1            1           23h
deployment.apps/mariadb      1/1     1            1           24h
deployment.apps/mattermost   1/1     1            1           24h
deployment.apps/node-red     1/1     1            1           24h
deployment.apps/wordpress    1/1     1            1           24h

NAME                                    DESIRED   CURRENT   READY   AGE
replicaset.apps/homepage-76fb784c47     1         1         1       24h
replicaset.apps/jenkins-55b96dfc79      1         1         1       23h
replicaset.apps/mariadb-8544495789      1         1         1       24h
replicaset.apps/mattermost-69f568bcf9   1         1         1       24h
replicaset.apps/node-red-68b55c5bfb     1         1         1       24h
replicaset.apps/wordpress-5d9548759d    1         1         1       24h

Étape 2 - Déployer des applications en nuage - remise le 25 mai

Dans un cluster k8s de type auto-pilote, sur google, nommé tu-parles-dun-projet


Liste des dépots harbor et des applications dans le nuage

Matricule Nom Prénom Liens
1146373 Charbonneau Félix harbor
app-cloud
1929205 Moussette David harbor
app-cloud
2133738 Boudreault Charles harbor
app-cloud
2135251 Latreille Léa harbor
app-cloud
2176750 Lamonde Louis harbor
app-cloud
2236171 Papineau Émy 👍 harbor
app-cloud
2248071 Bilodeau Lilianne harbor
app-cloud
2251141 Bouchareb Saad harbor
app-cloud
2464026 Ezzahiri Adam harbor
app-cloud
2467525 Guertin Ubert harbor
app-cloud
2482651 Korotkov Maxim harbor
app-cloud
2487266 Goudreau Gabriel 👍 harbor
app-cloud
6226374 Gosselin-Beaudoin Xavier harbor
app-cloud
6294775 Paradis Laury-Ann harbor
app-cloud
6313976 Lamirande Xavier harbor
app-cloud
1191869 Bebnowski-Lavoie Guillaume harbor
app-cloud
1970541 Asfaw Marcus harbor
app-cloud
2156548 Mechmachi Achraf harbor
app-cloud
2241079 Légaré Christopher harbor
app-cloud
2257181 Rivet Olivier harbor
app-cloud
2357057 Rimpel Morel Chelsey harbor
app-cloud
2383950 Lalonde Félix harbor
app-cloud
2384502 Guay Raphaël harbor
app-cloud
2482798 Archambault Derek harbor
app-cloud
6220854 Paradis Louam harbor
app-cloud
6235015 Diallo Abdoulaye harbor
app-cloud
6289173 Dubois Zachary harbor
app-cloud
6297476 Forget Antoine harbor
app-cloud
6313680 Nibimenya Maëlys harbor
app-cloud