Skip to content

Commit

Permalink
fix helm
Browse files Browse the repository at this point in the history
  • Loading branch information
loic-roux-404 committed Feb 4, 2023
1 parent 48cc3d9 commit 0d4b9ef
Show file tree
Hide file tree
Showing 7 changed files with 49 additions and 15 deletions.
2 changes: 2 additions & 0 deletions charts/microservice/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ postgresql:
enablePostgresUser: false
database: db
username: ekommerce
volumePermissions:
enabled: true
primary:
persistence:
enabled: true
Expand Down
3 changes: 3 additions & 0 deletions docs/3-3-terraform-azure-network-vm.md
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,7 @@ Enfin on met en place le **wildcard** pour la zone dns afin que tous les sous do

```tf linenums="187" title="infra/main.tf"
resource "azurerm_dns_a_record" "paas" {
depends_on = [namedotcom_domain_nameservers.namedotcom_paas_ns]
name = "*"
zone_name = azurerm_dns_zone.paas.name
resource_group_name = data.azurerm_resource_group.paas.name
Expand All @@ -137,6 +138,8 @@ resource "azurerm_dns_a_record" "paas" {
```

> Warning: N'oublions pas de relié les ressources namedotcom et azure avec `depends_on`, car ce sont deux fournisseurs de services différents. On évite ainsi des problèmes de synchronisation DNS.
C'est comme cela que l'on arrive à avoir un nom de domaine comme `kubeapps.paas-exemple-tutorial.live` qui pointe vers l'ingress de k3s.

---
Expand Down
16 changes: 8 additions & 8 deletions docs/4-1-helm-chart.md
Original file line number Diff line number Diff line change
Expand Up @@ -223,12 +223,8 @@ secret:
env:
secret:
PG_USER: ekommerce
PG_PASSWORD: password
PG_CONNECTION: jdbc:postgresql://client-postgresql.default.svc.cluster.local:5432/db
primary:
persistence:
enabled: true
existingClaim: "postgresql-data-claim"
PG_PASSWORD: password
```

Expand All @@ -237,12 +233,16 @@ Puis on configure le chart postgres pour qu'il utilise les secrets et le "persis
```yaml linenums="25" title="charts/microservice/values.yaml"
postgresql:
auth:
existingSecret: all-secrets
secretKeys:
userPasswordKey: PG_PASSWORD
password: password
enablePostgresUser: false
database: db
username: ekommerce
volumePermissions:
enabled: true
primary:
persistence:
enabled: true
existingClaim: "postgresql-data-claim"
```

Nous pouvons vérifier avec `helm lint charts/microservice` si il n'y a pas d'erreurs puis aussi voir le résultat de notre chart avec `helm template charts/microservice`
35 changes: 29 additions & 6 deletions docs/4-2-helm-chart-deploy.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,31 @@
# 4.2 Déploiement du chart

Si vous n'avez pas suivi le tutoriel en utilisant un repository git, vous pouvez créer un repository sur github [ici](https://github.com/new) et y ajouter le chart. Ceci vous permettra de mettre à disposition un repository helm grâce github pages. Ainsi vous pourrez utiliser le chart sur votre cluster kubernetes.
Si vous n'avez pas suivi le tutoriel en utilisant un repository git, vous pouvez créer un repository sur github pour votre organisation avec ce type d'url : [https://github.com/organizations/<votre-org>/repositories/new](https://github.com/organizations/<votre-org>/repositories/new). Ceci vous permettra de mettre à disposition un repository helm grâce github pages et ainsi d'utiliser le chart sur le cluster kubernetes.

> Nous utiliserons l'outil CD [chart_releaser_action](https://helm.sh/docs/howto/chart_releaser_action/) développé pour automatisé la publication de chart avec github actions (CI/CD)
On va donc initialiser un repository git et pour l'instant ne pas y ajouter le chart tout de suite :

```bash
git clone https://github.com/my-org/my-repo
cd my-repo
git add .
git init
git remote add origin git@github.com:<my-org>/<my-repo>.git
git add infra playbook README.md
git commit -m "chore: Helm chart"
git push
```

Ensuite créer une branche vide et orpheline pour github pages :
> Note: Par défaut lorsque l'on initialise un repository git, la branche main est créée.
> Note : on ne push pas sur la branche main pour le moment car la CI github n'est pas encore mise en place
Ensuite, on va placer le dossier chart dans un espace temporaire git "stash" pour le commit plus tard

```bash
git add .
git stash
```

On créer une branche vide et orpheline pour github pages :

```bash
git checkout --orphan gh-pages
Expand Down Expand Up @@ -87,6 +100,16 @@ git commit -m "chore: chart releaser action"
git push
```

Enfin, on enlève le dossier `charts` du stash et on le commit :

```bash
git stash pop
git add .
git commit -m "chore: add chart"
```

L'objectif est de modifier les fichiers du chart pour que git détecte un changement et déclenche la CD github action.

Notre chart va donc se déployer sur github pages et être disponible à l'adresse suivante : `https://my-org.github.io/my-repo`. N'hésitez pas à consulter l'avancement du job [ici](https://github.com/esgi-lyon/paas-tutorial/actions/runs/) et à suivre le déploiement sur [l'onglet deployments](https://github.com/esgi-lyon/paas-tutorial/deployments)

Enfin vous pouvez ajouter le repo à helm pour tester que la publication a bien fonctionner :
Expand Down Expand Up @@ -134,7 +157,7 @@ container:
```yaml
ingress:
# ...
enabled: false
enabled: true
hosts:
- host: client.k3s.local
paths:
Expand Down
5 changes: 5 additions & 0 deletions docs/5-allez-plus-loin.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,11 @@ J'ai essayé plusieurs fois le provision de la vm avec des configurations diffé
Il s'agit probablement du cache dns qui vous renvoi l'entrée ip d'une ancienne vm car le time to live n'a pas encore expiré. Pour cela dans chrome nous devons nettoyer ce cache pour faire comme si nous n'étions jamais aller sur le site.
Dans votre navigateur chrome [chrome://net-internals/#dns]() faites "un clear host cache" et réessayez.

Aussi on peut utiliser un flush cache global si cela ne fonctionne toujorus pas :

- [pour le dns de google](https://developers.google.com/speed/public-dns/cache?hl=fr)
- [pour le dns de cloudflare](https://1.1.1.1/purge-cache/)

> Pour faire des tests en cas réel, il est préférable d'utiliser des entrées `dex_hostname` et `kubeapps_hostname` différentes que vous n'utilisez pas pour un environnement (staging ou production).
### Exercice
Expand Down
2 changes: 1 addition & 1 deletion infra/cloud-init.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ datasource:
ephemeral0: /dev/disk/cloud/azure_resource

runcmd:
- [sleep, 20]
- [sleep, 100]

ansible:
install_method: pip
Expand Down
1 change: 1 addition & 0 deletions infra/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,7 @@ resource "namedotcom_domain_nameservers" "namedotcom_paas_ns" {
}

resource "azurerm_dns_a_record" "paas" {
depends_on = [namedotcom_domain_nameservers.namedotcom_paas_ns]
name = "*"
zone_name = azurerm_dns_zone.paas.name
resource_group_name = data.azurerm_resource_group.paas.name
Expand Down

0 comments on commit 0d4b9ef

Please sign in to comment.