---
# System prepended metadata

title: Fiche Techniques DevOps Initialisation

---

# Fiche Techniques DevOps Initialisation 
(10/08/2020 - 11/08/2020)
![](https://mk0wwweadeanetnfhmt9.kinstacdn.com/wp-content/uploads/2017/11/google_cloud_platform.png)

## Sommaire

## Tâches

### Obligatoires
- [x] Créer le cluster (Duplication).
- [x] Configurer kubectl pour accéder au cluster (kubeconfig)
- [x] Créer branche Github
- [ ] Modifier les variables d'environnement.
- [x] Créer une nouvelle DB, modifier la clef api, créer un système de backup.
- [x] Créer un bucket sur aws et changer la config pour désactiver la suppression auto des documents.
- [x] Créer les nouveaux certificats.
- [ ] Créer les nouvelles clefs api (Docusign, Stripe, AWS).
- [x] Lancer le déploiement
- [x] Exposer le déploiement 
- [x] Mettre en place Ingress-Nginx
- [x] Créer les entrées DNS
- [x] Mettre en place Grafana.
- [x] Migrer la bdd sur la dernière migration

### Optionnelles
- [ ] Créer un système de sécu pour éviter de rollback sans faire gaffe.
- [ ] Réduire bdd test
- [ ] Ajouter une restriction d'accès IP à CloudSQL
![](https://i.imgur.com/s8bS5sn.png)
- [ ] Ajouter une restriction role à l'accès bdd
- [ ] Ajouter au script de déploiement un avertissement à l'utilisateur sur l'environnement cible.

## Tips and Tricks

- **Configurer kubectl sur un nouveau cluster**
    > Pour configurer l'utilisation d'un nouveau cluster existant par kubectl il faut utiliser la commande `gcloud container clusters get-credentials <CLUSTER-NAME>`

- **Emplacement informations**
    >S'il y a un doute sur la localisation d'info normalement situé dans le docker-compose, il se peut qu'il se situe dans le déploiement.
    >
- **Exposer le déploiement**
    > `kubectl expose deployment hellia.app.prod --type="LoadBalancer" --name="hellia--app--prod"` 
    > 
- **Déployer le nginx pour router la bonne url pour au bon container**
    > `kubectl apply -f https://github.com/kubernetes/ingress-nginx/deploy/static/provider/cloud/deploy.yaml`
    > [Source](https://https://kubernetes.github.io/ingress-nginx/deploy/#gce-gke)
    > appliquer le ingress.yaml (dans le namespace default)
    > [Tuto](https://kubernetes.io/docs/concepts/services-networking/ingress/#name-based-virtual-hosting)
    > Vérifier que ça fonctionne avec curl `curl -H "Host: app.hellia.fr" <EXTERNAL-IP-INGRESS-CONTROLLER-SERVICE>`
- **Ajouter les entrées DNS**
    > Utiliser l'ip externe du Ingress controller 
    > 
- **Installation de cert-manager
    > [Tuto](https://cert-manager.io/docs/installation/kubernetes/)
    > Il faut déployer les resources liès à cert-manager : `kubectl apply --validate=false -f https://github.com/jetstack/cert-manager/releases/download/v0.16.1/cert-manager.yaml`
    > Troubleshoot :
    > C'est probabalement du à une installation incomplète. Il faut supprimer les resources créée : ` kubectl delete -f https://github.com/jetstack/cert-manager/releases/download/v0.16.1/cert-manager.yaml`
    > [Source](https://github.com/jetstack/cert-manager/issues/2053)
    > Et redéployer les resources
