En conclusion du lab, nous allons installer un pod Rancher.
Rancher est un outil web qui permet d'administrer dynamiquement un cluster K3S. C'est la référence.
K3S embarque par défaut une interface d'administration web, mais elle est nettement moins riche.
L'installation présentée de rancher ici dans le cadre du lab ne convient pas à un environnement de production.
Il conviendrait de la faire fonctionner sur un Ingress spécifique, de persister le stockage en base de données, de lui ajouter une authentification forte via un mécanisme OIDC.
root@kube-01:/opt/k3s_services# mkdir /opt/k3s_services/rancher
root@kube-01:/opt/k3s_services# cd /opt/k3s_services/rancher/
root@kube-01:/opt/k3s_services/rancher# vim namespace.yaml
Contenu:
apiVersion: v1
kind: Namespace
metadata:
name: rancher
root@kube-01:/opt/k3s_services/rancher# kubectl apply -f namespace.yaml
root@kube-01:/opt/k3s_services/rancher# vim deployment.yaml
Contenu :
apiVersion: apps/v1
kind: Deployment
metadata:
name: rancher
namespace: rancher
spec:
replicas: 1
selector:
matchLabels:
app: rancher
template:
metadata:
labels:
app: rancher
spec:
containers:
- name: rancher
image: rancher/rancher:v2.9.2
args:
- "--no-cacerts"
ports:
- containerPort: 80
resources:
requests:
cpu: 200m
memory: 512Mi
limits:
cpu: 1
memory: 1Gi
root@kube-01:/opt/k3s_services/rancher# kubectl apply -f deployment.yaml
root@kube-01:/opt/k3s_services/rancher# vim service.yaml
Contenu :
apiVersion: v1
kind: Service
metadata:
name: rancher
namespace: rancher
spec:
type: ClusterIP
selector:
app: rancher
ports:
- name: http
port: 80
targetPort: 80
root@kube-01:/opt/k3s_services/rancher# kubectl apply -f service.yaml
root@kube-01:/opt/k3s_services/rancher# vim ingress.yaml
Contenu :
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: rancher
namespace: rancher
spec:
ingressClassName: traefik
rules:
- host: rancher.cluster.labk3s.ev1
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: rancher
port:
number: 80
root@kube-01:/opt/k3s_services/rancher# kubectl apply -f ingress.yaml