slides.pd 5.99 KB
Newer Older
Rémi Cailletaud's avatar
Rémi Cailletaud committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
---
header-includes:
    - '\usetheme[titleformat=smallcaps,numbering=none,progressbar=frametitle]{metropolis}'
    - '\usepackage[fixed]{fontawesome5}'
    - '\definecolor{links}{HTML}{661100}'
    - '\hypersetup{colorlinks,linkcolor=,urlcolor=links}'
title: Kubernetes à l'OSUG
subtitle: "Regards croisés administrateurs/utilisateurs"
author: R. Cailletaud - C. Coussot - J. Schaeffer - G. Mella - L. Bourgès - V. Chaffard
date: 18 mai 2022
institute: JRES 2022
---

#  \faGlobeEurope L'OSUG

* 9 unités de recherche, 5 équipes de recherche associées, 2 unités d'appui et de recherche (UAR)
* 28 Service Nationaux d'Observation (SNO)
* UAR OSUG: soutien au service info des laboratoires et aux SNO
* À la frontière des métiers ASR/Dev

# \faQuestion Pourquoi Kubernetes

:::::::::::::: {.columns}
::: {.column}
## Gestion de conf
* Peu de pratiques communes
* Trop de tâches d'administration pour les développeurs
:::
::: {.column}
## Les conteneurs
* De plus en plus de demandes
* Difficulté de gestion
* Questions de sécurité
:::
::::::::::::::

# \faDharmachakra Kubernetes à l'OSUG

* Trois ans de production, une dizaine d'applications métiers
* Sur cluster vSphere de 5 noeuds
* Utilisation de Packer pour construire les images des VMs
* Utilisation de Salt-Cloud pour déployer les clusters
* Clusters de production, de pré-production et de test
* Clusters et applications déployés en quelques minutes
* Utilisation de l'interface web Rancher pour les RBAC

# \faServer L'infrastructure

TODO: schema

# I. OZCAR|THEIA

:::::::::::::: {.columns}
::: {.column}
* _Greenfield_
* Architecture complexe
* Accompagnement indispensable
Rémi Cailletaud's avatar
Rémi Cailletaud committed
58
* La problématique du stockage persistent
Rémi Cailletaud's avatar
Rémi Cailletaud committed
59
60
61
62
63
64
65
66
67
* TODO: màj schema
:::
::: {.column}
![Architecture logicielle](./theia.png)
:::
::::::::::::::

# Le stockage: vSAN

Rémi Cailletaud's avatar
Rémi Cailletaud committed
68
69
70
71
* Volume dynamique, intégration aux infrastructures sous-jacentes
* Support communautaire minimal
* Problèmes fréquents lors des màj
* Kubernetes _In-Tree_ CSI dépréciés
Rémi Cailletaud's avatar
Rémi Cailletaud committed
72

Rémi Cailletaud's avatar
Rémi Cailletaud committed
73
# Le stockage: NetApp Astra Trident
Rémi Cailletaud's avatar
Rémi Cailletaud committed
74

Rémi Cailletaud's avatar
Rémi Cailletaud committed
75
76
77
* Utilisation de SUMMER, la solution de stockage mutualisée de l'UGA
* Impossible d'utiliser certaines fonctionnalités offertes par l'intégration Trident
* Déploiement demandant des étapes manuelles ≠ Infrastructure As Code
Rémi Cailletaud's avatar
Rémi Cailletaud committed
78

Rémi Cailletaud's avatar
Rémi Cailletaud committed
79
# Le stockage: NFS Client Provisioner
Rémi Cailletaud's avatar
Rémi Cailletaud committed
80

Rémi Cailletaud's avatar
Rémi Cailletaud committed
81
82
* Le provisionneur du pauvre
* Simple création de répertoires
Rémi Cailletaud's avatar
Rémi Cailletaud committed
83
* Maintenant _Kubernetes NFS Subdir External Provisioner_
Rémi Cailletaud's avatar
Rémi Cailletaud committed
84
85
* Utilisation de SUMMER
* Simple, fonctionne partout: un serveur NFS suffit
Rémi Cailletaud's avatar
Rémi Cailletaud committed
86
87
88

# Le cas des base de données

Rémi Cailletaud's avatar
Rémi Cailletaud committed
89
90
91
92
* Solutions existantes (opérateurs Kubernetes)
* Manque de maturité à l'époque… Frilosité de l'administrateur !
* Service d'hébergement PostgreSQL mutualisé à l'OSUG
* Effet structurant sur les architectures logicielles
Rémi Cailletaud's avatar
Rémi Cailletaud committed
93
94
95
96
97
98

# II. Les applications du Laboratoire d'Écologie Alpine

* Applications relativement simples (Symfony, Django), stateless
* Équipes de développement réduites
* Connaissances systèmes limitées
Rémi Cailletaud's avatar
Rémi Cailletaud committed
99
* Candidates idéales mais accompagnement indispensable !
Rémi Cailletaud's avatar
Rémi Cailletaud committed
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114

# L'architecture logicielle

* Pas dogmatique : langage, framework, IDE non imposés !
* Des architectures similaires
* Des bonnes pratiques: méthodologie _Twelve-Factor_
  * Utilisation de format déclaratif
  * Portabilité
  * Abstraction de l'OS
  * Code identique entre développement et production
  * Possibilité de passage à l'échelle


# CI/CD/GitOps

Rémi Cailletaud's avatar
Rémi Cailletaud committed
115
116
117
118
119
120
121
122
123
* Environnement idéal pour la mise en place d'automatisation
* Automatisation via des opérations Git
* Passage du développement à la production facilités
* Limitation des erreurs humaines
* Grande liberté pour les développeurs
* TODO: schéma

# CI/CD/GitOps: le schéma !

Rémi Cailletaud's avatar
Rémi Cailletaud committed
124
125
# Les images de conteneurs

Rémi Cailletaud's avatar
Rémi Cailletaud committed
126
127
128
129
130
131
132
133
134
* Multiplication des images «maison»: danger !
* Des bonnes pratiques:
  * `USER` non root
  * Choix de images de bases
  * Utilisation de build multistage et limitation du nombre de couches
  * Un conteneur == un processus
  * _Twelve-Factor_ (pas de configuration, journalisation sur la sortie standard…)
* Utilisation de scanner de vulnérabilités (Trivy)
* L'occasion d'un dialogue entre développeurs et administrateurs
Rémi Cailletaud's avatar
Rémi Cailletaud committed
135
136
137
138
139
140
141
142
143
144

# III. JMMC et RESIF

* JMMC
* RESIF
* brownfield

# La migration d'application

service statefull
Rémi Cailletaud's avatar
Rémi Cailletaud committed
145
volume statique
Rémi Cailletaud's avatar
Rémi Cailletaud committed
146
147
148
149
150
151
152
utilisation d'un large panel des fonctionnalités : startup/livenessprobes, cronjob
kustomize beta/prod et blue/green (topo blue/green)
java !
existdb !

# IV. Des cluster «jetables» !

Rémi Cailletaud's avatar
Rémi Cailletaud committed
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
* Des développeurs heureux 
* Nouveaux problèmes pour les administrateurs: cluster «pets»
* Mises à jour (OS, Kubernetes) et modification (configuration, services, ajout de nœuds) stressantes
* Solutions: des clusters «cattle»
* De zéro aux applications métiers !

# L'architecture générale

```mermaid
graph LR;
  request(HTTP request) --> frontend
  frontend(HAProxy Frontend) --> master1 & master2
  subgraph cluster2
    master1(master node<br>nginx-ingress) --> node11(worker 1) & node12(worker n)
  end
  subgraph cluster1
    master2(master node<br>nginx-ingress) --> node21(worker 1) & node22(worker n)
  end
```

Rémi Cailletaud's avatar
Rémi Cailletaud committed
173
174
# Infrastructure As Code

Rémi Cailletaud's avatar
Rémi Cailletaud committed
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
* Gestion de notre infrastructure (nos cluster K8s) via des fichiers descripteurs
* Utilisation de Packer pour les images de VM
* Utilisation de Terraform pour décrire l'infrastructure :
 * IPAM (EfficientIP SOLIDserver)
 * Hashicorp Vault
 * Grafana
 * vSphere
 * __terraform-vsphere-rke2__

# Déploiement

```mermaid
graph TB;
  terraform -- 1. Récupération IP<br>Ajout du DNS RR--> ipam.u-ga.fr
  terraform -- 2. Ajout de la source de données ----> grafana.osug.fr
  terraform -- 2. Ajout d'un AppRole Vault <br> Récupération des token R/O Gitlab--->vault.osug.fr
  terraform -- 3. Création du cluster K8s <br>  ------> vsphere(vSphere OSUG)
```

Rémi Cailletaud's avatar
Rémi Cailletaud committed
194
195
# La gestion des secrets

Rémi Cailletaud's avatar
Rémi Cailletaud committed
196

Rémi Cailletaud's avatar
Rémi Cailletaud committed
197
198
# ArgoCD

Rémi Cailletaud's avatar
Rémi Cailletaud committed
199
# Conclusion
Rémi Cailletaud's avatar
Rémi Cailletaud committed
200

Rémi Cailletaud's avatar
Rémi Cailletaud committed
201
202
séparation des rôles
dialogue
Rémi Cailletaud's avatar
Rémi Cailletaud committed
203

Rémi Cailletaud's avatar
Rémi Cailletaud committed
204
# Perspectives
Rémi Cailletaud's avatar
Rémi Cailletaud committed
205

Rémi Cailletaud's avatar
Rémi Cailletaud committed
206
207
* blablabla
* et bliblablo
Rémi Cailletaud's avatar
Rémi Cailletaud committed
208
209


Rémi Cailletaud's avatar
Rémi Cailletaud committed
210
# \faQuestion Questions
Rémi Cailletaud's avatar
Rémi Cailletaud committed
211

Rémi Cailletaud's avatar
Rémi Cailletaud committed
212
Présentation à l'aide de [Pandoc](https://pandoc.org),
Rémi Cailletaud's avatar
Rémi Cailletaud committed
213
214
[Metropolis Beamer Theme](https://github.com/matze/mtheme) 
and [FontAwesome](https://fontawesome.com/)
Rémi Cailletaud's avatar
Rémi Cailletaud committed
215
216

\faCreativeCommons\ \faCreativeCommonsBy\ \faCreativeCommonsSa