Hello Kubernetes

Dans l'exemple qui va suivre, nous allons déployer la page web “hello World” sur notre cluster kubernetes RKE.

Pour notre lab rke :

  • Un cluster kubernetes RKE (3 masters / 2 Worker)
  • Un équipement de load-balancing : Front des workers nodes
  • Un nom de domaine : “hello.oowy.fr”

On créer un deployment

kind: Deployment
apiVersion: apps/v1
metadata:
  name: hello-kubernetes
spec:
  replicas: 2
  selector:
    matchLabels:
      app: hello-kubernetes
  template:
    metadata:
      labels:
        app: hello-kubernetes
    spec:
      containers:
        - name: hello-kubernetes
          image: rbouikila/hello-kubernetes:1.9

On vérifie le deployment

bastion:~/deploy$ kubectl get deployment
NAME               READY   UP-TO-DATE   AVAILABLE   AGE
hello-kubernetes   2/2     2            2           144m

On vérifier le déploiement des pods

bastion:~/deploy$ kubectl get pods
NAME                                READY   STATUS    RESTARTS   AGE
hello-kubernetes-754cbb5469-g89hg   1/1     Running   0          26m
hello-kubernetes-754cbb5469-ltn46   1/1     Running   0          26m

On créer un service

kind: Service
apiVersion: v1
metadata:
  name: hello-kubernetes
spec:
  selector:
    app: hello-kubernetes
  ports:
    - port: 8080

On créer un ingress

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: hello-kubernetes
  annotations:
    ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: hello.oowy.fr
    http:
      paths:
        - path: /
          backend:
            serviceName: hello-kubernetes
            servicePort: 8080

Il ne nous reste plus qu'a vérifier l'accès à la page web.

Après avoir valider le déploiement de notre page Web “hello kubernetes”, nous pouvons utiliser le binaire “kube-linter”.

Cf. correctif

kind: Deployment
apiVersion: apps/v1
metadata:
  name: hello-kubernetes
  namespace: default
spec:
  replicas: 2
  selector:
    matchLabels:
      app: hello-kubernetes
  template:
    metadata:
      labels:
        app: hello-kubernetes
    spec:
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchExpressions:
              - key: app
                operator: In
                values:
                - hello-kubernetes
            topologyKey: "kubernetes.io/hostname"
      securityContext:
        runAsUser: 1000
      containers:
        - name: hello-kubernetes
          image: rbouikila/hello-kubernetes:1.9
          securityContext:
            readOnlyRootFilesystem: true
          resources:
            requests:
              memory: "128Mi"
              cpu: "250m"
            limits:
              memory: "128Mi"
              cpu: "500m"
---
kind: Service
apiVersion: v1
metadata:
  name: hello-kubernetes
  namespace: default
spec:
  selector:
    app: hello-kubernetes
  ports:
    - port: 8080
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: hello-kubernetes
  namespace: default
  annotations:
    ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: hello.oowy.fr
    http:
      paths:
        - path: /
          backend:
            serviceName: hello-kubernetes
            servicePort: 8080
Ce site web utilise des cookies. En utilisant le site Web, vous acceptez le stockage de cookies sur votre ordinateur. Vous reconnaissez également que vous avez lu et compris notre politique de confidentialité. Si vous n'êtes pas d'accord, quittez le site.En savoir plus