Kubernetes on Azure (AKS)
Kubernetes cluster migration (latest version : 1.20.7)
APIs migration before update, then rolling upgrade.
Helm v3 evangelisation.
Multi Ingress controllers (Nginx Kubernetes community) + cert_manager (Let's encrypt).
SLL/TLS keys and certificates managed by cert-manager.
Persistent storage
In fact, only 2 storage classes are available on Azure ("default" : RWO ; "azurefile" : RWX which is much more expensive). Switch to the appropriate storage class (persitent volume claims) according to rolling upgrade needs.
Monitoring console (Grafana for metrics and logs).
Grafana 8.1 deployed inside a K8s cluster.
Prometheus deployed and customized inside all K8s clusters to collect all metrics.
Promtail + Loki deployed and customized inside all K8s clusters to collect all logs.
Custom dasboards added on Grafana to display relevant graphics and logs.
Distributed tracing (all components deployed in a K8s cluster).
OpenTelemetry to collect tracing.
both Jaeger and Zipkin user interfaces.
Continuous integration.
Avoid Dockerfile to use BuildPacks (Paketo builder).
Kubernetes on premise:
Kubernetes cluster installation using CRI-O container engine + Calico or Cilium CNI.
Helm v3:
Deploy chart information stored into a PostgreSQL database instead of Kubertes Secret resources.
Many tutorials published on LinkedIn : ********-********-226b657/detail/recent-activity/shares/
Openshift (Kubernetes fork)
Evangelize good practices and adapted utilities:
Helm v3 promotion for the deployment of Kubernetes resources; separate the configuration of these resources from the application settings; modularity of applications using umbrella charts).
Writing use case examples.
Promote community graphics: ******** and edits them as needed.
Promote tools that improve productivity; readability and maintainability (management of secrets by sealed-secrets; continuous deployment using suitable tools such as ArgoCD or FluxCD; moving towards "serverless" technologies (e.g Fission ; Knative).
Update the existing Openshift 3.11 cluster:
to correct mistakes and security flaws
to make operative the first version of the CI / CD pipeline
to make specific OpenShift resources compliant with Kubernetest :
DeploymentConfig -> Deployment
Route -> Ingress + Secret
SecurityContextConstraint -> PodSecurityPolicy
to consider OpenShift 4.x migration (How to proceed, difficulties)
Edit Helm (v3) charts:
to manage Sonatype Nexus Helm repositories (proxy/hosted)
to define dependencies (modularity).
Review and correct the OCI image creation pipeline using Kaniko builder (Jenkins PodTemplate)
Use Helm charts to deploy utilities (e.g. Sonarqube ; Jenkins ...).
Provide expertise for security (image vulnerability, RBAC: service accounts + user accounts).
Linux, Ansible, SELinux
Linux
"bash" scripts (using "curl" and "jq" to interface RESTful applications).
Ansible
Modular design promotion (a configurable role limited to one action such as for example to manage "logrotate", and which will be used in different playbooks or other roles), to consider a continuous integration pipeline (e.g. using "molecule" as test tool).
Promotion of the use of (commit) tags for installation ; upgrade and cleanup.
Installing roles via ansible-galaxy.
Encryption of passwords and sensitive files using "ansible-vault".
Use of the community roles of ******** hub, even if it requires modifying them, creating other branches (Git), to avoid "reinventing the wheel"
Development of complete roles and playbooks for utilities deployment.
SELinux
"context" settings (files; ports) mandotory for REHL 8.x (e.g. non RedHat service).
NetApp/Trident
storagesclass settings for Kubernetes stateful applications.
"clone volume" feature for persistent volumes backup.
Agile, DevOps
Agile methodology
Promote the notion of difficulty (story points <=> complexity and amount of sweat), risk of failure, possibility of abandonment or change of solution for engineering projects, and maintain the notion of size of T-shirts for more common operations.
DevOps
Instead of the continuous integration chain leading to a deployment, promote GitOps principles where Git repositories (hosted by tools like BitBucket; GitLab ...) are the benchmark of truth. Continuous integration chains (which creates images, Helm cards) deposit in these registers on one side, and on the other, continuous deployment tools (such as ArgoCD; FluxCD ...) are absorbed in these repositories all the artifacts needed to deploy or update any application (hosted in a Kubernetes cluster).
Due to the Covid-19 pandemic, the mission for BNP Paribas was suspended ...
Tutorials about RHEL / CentOS 8.1 upgrade:
NetworkManager.
KVM.
En mission pour BNP Paribas (Suisse) : Docker/Kubernetes/Helm et intégration de nouveaux
projets.
Intégrer sous Docker/kubernetes.
◦ Adapter des applications wealth management à un cluster Docker (Swarm ou/et
Kubernetes) configuré pour répondre aux exigences sécuritaires du client.
◦ Renforcer la sécurité des containers Docker.
◦ Deploiement d'applications dans un cluster Kubernetes (Docker EE).
◦ Rédaction de guides de bonnes pratiques et évangélisation des principes de
containerisation :
◦ Docker :
▪ construction optimisée des images
▪ construction "multi staging"
◦ Kubernetes :
▪ principes de base : namespace ; pod ; service ; configmap ; secret
▪ réalisation de scripts bâtis autour de la commande "kubectl" en utilisant le filtre
JSONPath
▪ les contrôleurs : Deployment ; Job ; CronJob ; DaemonSet
▪ non persistent storage, Secret ; ConfigMap
▪ persistent storage : StorageClass ; PersistentVolume ; persistentVolumeClaim
▪ services : ClusterIP ; NodePort
▪ limitiation des resources au niveau d'un Namespace: LimitRange (pod/container) ;
ResourceQuota
▪ Events ; logs & metrics
▪ éviction des pods d'un node ("cordon" ; "drain" ; "undrain" ; "PodDisruptionBudget")
▪ label des nodes, "nodeSelector"
▪ Ingress
▪ création de containers "sidecar" pour récupérer les logs d'un autre container du
même pod
Configuration des hooks "PreStart" et "PostStop" au niveau container.
◦ Sécurité :
▪ RBAC
ServiceAccount ; x509 user account
Role ; CluserRole
RoleBinding ; ClusterRoleBinding
◦ Helm v2/v3
▪ création de charts pour déployer des applications
▪ installation de la stack EFK (Elasticsearch ; Fluent bit ; Kibana) pour collecter les logs.
Attention : la suite ELK n'est pas adaptée à Kubernetes !
◦ Kubernetes operator :
▪ Etudier l'installation de MongoDB EE via un operator
Intégrer de nouvelles applications.
◦ Mettre en place dans l'environnement du client, des applications conçues par des startup, Toucan Toco par exemple : ********-bnpwealth-management-mise-sur-toucan-toco-pour-sa-dataviz-72814.html .
Mission de conseil :
◦ Intégration DevOps dans un mode GitOps (Git est la référence de tous les artifacs,
l'intégration continue dépose dans un repository Git les images de container + Helm
charts + custom resources ; le déploiement continu se fait à l'aide de webhooks définis
dans Git).
◦ Remplacement de Docker pour construire les images OCI par des alternatives : Kaniko et
Jib.
Déploiements dans le cloud (à la maison) :
◦ Création de tutoriels dans un cluster Kubernetes dans un cloud DigitalOcean.
En mission pour la SNCF : containerisation des logiciels middleware.
L’objectif est de délivrer tous les logiciels middleware sous la forme de containers Docker.
◦ Création des fichiers Dockerfile et Jenkinsfile ("stages" : récupérations des fichiers Git ;
construction des images et envoi vers le Docker registry approprié géré par Portus).
◦ Fabrication des images grâce à un POD OpenShift (Jenkins slave server on demand).
◦ Validation des images à l'aide de "docker inspect" et BATS.
◦ La construction des images (Jenkins pipelines) se fait dans des pods OpenShift hébergé
sur un cloud Azure.
En inter-mission : approfondissement des compétences orientées DevOps pour rebondir sur de
nouvelles missions.
L’objectif est d’obtenir un déploiement d’applications sous la forme de containers Docker.
◦ Création de machines virtuelles KVM pour limiter le nombre de machines physiques à
utiliser.
◦ Création de nouvelles images à partir des images de base de la forge Docker Hub.
◦ Stockage de ces images dans une "registry".
◦ Étude de solutions d’orchestration.
◦ Configuration des machines à l’aide de l’outil Ansible.
Les tutoriels sont à découvrir sur http://frederic-********.********
En mission chez April Technologies : expert Linux.
Reprise en main de l’existant pour le rendre de nouveau opérationnel et en assurer le support
niveau 3.
...