Infrastructure de virtualisation et sécurité
Objectifs
- Découvrir Fedora CoreOS, un système conçu pour les conteneurs
- Découvrir Kubernetes et l’orchestration de conteneurs
- Découvrir OpenShift
- Découvrir Terraform
Important : Gardez une trace des différentes commandes utilisées et des configurations produites.
Fedora CoreOS
Découvrez le fonctionnement d’un système conçu pour les conteneurs avec le tutoriel de Fedora CoreOS.
Par défaut, le tutoriel utilise libvirt avec QEMU/KVM (Linux uniquement). Pour le réaliser sur une autre platforme :
- Provisioning Fedora CoreOS on VirtualBox
- Provisioning Fedora CoreOS on Amazon Web Services
- Provisioning Fedora CoreOS on Google Cloud Platform
Vous pouvez ensuite essayer d’autres exemples :
- Deploy Hashicorp Nomad on Fedora CoreOS
- Deploy a Matrix homeserver on Fedora CoreOS (nécessite un nom de domaine)
Kubernetes
- Apprendre les bases de Kubernetes
- En local avec minikube : https://minikube.sigs.k8s.io/docs/
- Sur GCP : Suivre le tutoriel intégré à la plateforme (Quickstart / Démarrage rapide)
- Sur AWS : Getting started with Amazon EKS
- Ensemble des tutoriels de Kubernetes : https://kubernetes.io/fr/docs/tutorials/
- Kubernetes By Example
OpenShift
Essayez OpenShift avec les tutoriels interactifs :
- Red Hat Developer : Learn
- Try OpenShift
- The OpenShift Security Guide Book : https://www.redhat.com/en/resources/openshift-security-guide-ebook
- OpenShift Local (équivalent minikube pour OpenShift) : https://developers.redhat.com/products/openshift-local/overview
- CRC (version open source upstream) :
- CodeReady Containers for OKD : https://www.okd.io/crc/
- CRC - Runs Containers : https://crc.dev/blog/
Fonctionnalités de sécurité d’OpenShift
OpenShift est configuré par défaut avec un ensemble de restrictions et de fonctionnalités de sécurité (voir la documentation, l’article dédié et l’ebook dédié). Ces restrictions améliorent la sécurité de la plateforme mais elles nécessitent parfois des changements dans les applications et conteneurs publiés sur le DockerHub qui ne suivraient pas les recommandations en terme de sécurité.
L’une de ces fonctionnalité est de lancer systématiquement les conteneurs sous un utilisateur différent de root
. De nombreuses images ne sont pas capables de gérer ce mode de fonctionnement correctement par défaut (c.f. TD précédent dans lequel vous deviez créer une image capable de fonctionner en non-root
).
Par exemple, l’ image de conteneur officielle de PostgreSQL ne fonctionne pas par défaut. Voici des examples de deployment pour vérifier ces éléments :
apiVersion: apps/v1
kind: Deployment
metadata:
name: pgsql-deployment
labels:
app: pgsql
spec:
replicas: 3
selector:
matchLabels:
app: pgsql
template:
metadata:
labels:
app: pgsql
spec:
containers:
- name: pgsql
image: postgres:12
env:
- name: POSTGRES_PASSWORD
value: "azerty"
ports:
- containerPort: 80
Red Hat fournit une image de conteneur avec PostgreSQL qui a été adaptée pour s’assurer que l’application ne tourne jamais en root, même si vous ne l’utilisez pas sur OpenShift :
apiVersion: apps/v1
kind: Deployment
metadata:
name: pgsqlrh-deployment
labels:
app: pgsqlrh
spec:
replicas: 3
selector:
matchLabels:
app: pgsqlrh
template:
metadata:
labels:
app: pgsqlrh
spec:
containers:
- name: pgsqlrh
image: registry.redhat.io/rhel8/postgresql-12
env:
- name: POSTGRESQL_ADMIN_PASSWORD
value: "azerty"
ports:
- containerPort: 80
La documentation liste les instructions pour créer des images de conteneurs propres et plus particulièrement les spécificités d’OpenShift. Faire cet effort n’est pas vain même si vous utilisez un cluster Kubernetes classique (non-OpenShift) puisque ne pas faire tourner en root les applications dans les conteneurs est l’un des principe de sécurité de base pour un cluster.
Terraform
Découvrez le fonctionnement de Terraform (Infrastructure as Code) avec le tutoriel officiel pour GCP :
Alternatives :
- Local avec libvirt
- AWS : Get Started - AWS
- GCP : Getting started with Terraform on Google Cloud
- Azure : Get Started - Azure
Autres ressources
- etcd: Découvrez le fonctionnement d’
etcd
avec http://play.etcd.io/play. - Kubernetes The Hard Way, Kelsey Hightower : https://github.com/kelseyhightower/kubernetes-the-hard-way
- Openshift
- OKD