Nous allons définir un état souhaité pour le cluster via un fichier de manifeste yaml.

Le guide suivant https://docs.microsoft.com/fr-fr/azure/aks/kubernetes-walkthrough nous permet d'utiliser une app toute faite "Azure Vote" écrite en python ainsi qu'une instance Redis. Ces deux éléments sont conteneurisé et disponible sur une base de registre en ligne (docker hub)

Le fichier manifeste va faire plusieurs grandes tâches :

  • déploiement kubernetes
  • service kubernetes

Déploiement Kubernetes

https://docs.microsoft.com/fr-fr/azure/aks/concepts-clusters-workloads#deployments-and-yaml-manifests

C'est l'action de "copier" un conteneur sur un ou plusieurs nodes (suivant le nombre de replica). C'est le contrôleur de déploiement qui se charge de gérer les réplicas (création, destruction, mise à jour)

Dans cette phase, on peut spécifier des limites de ressources sur l'UC ou la RAM et spécifier l'ouverture d'un port pour le conteneur.

Services Kubernetes

https://docs.microsoft.com/fr-fr/azure/aks/concepts-network#services

Pour simplifier la configuration du réseau pour les charges de travail d’applications, Kubernetes utilise des services pour regrouper logiquement un ensemble de pods et fournir une connectivité réseau. Les types de service suivants sont disponibles :

  • ClusterIP : crée une adresse IP interne pour une utilisation au sein du cluster AKS.
  • NodePort : crée un mappage de port sur le nœud sous-jacent qui rend l’application accessible directement avec l’adresse IP du nœud et le port.
  • LoadBalancer : crée une ressource d’équilibreur de charge Azure, configure une adresse IP externe et connecte les pods demandés au pool back-end d’équilibreurs de charge.
  • ExternalName : crée une entrée DNS spécifique pour faciliter l’accès aux applications.

Manifest

apiVersion: apps/v1
kind: Deployment
metadata:
  name: azure-vote-back
spec:
  replicas: 1
  selector:
    matchLabels:
      app: azure-vote-back
  template:
    metadata:
      labels:
        app: azure-vote-back
    spec:
      nodeSelector:
        "beta.kubernetes.io/os": linux
      containers:
      - name: azure-vote-back
        image: redis
        resources:
          requests:
            cpu: 100m
            memory: 128Mi
          limits:
            cpu: 250m
            memory: 256Mi
        ports:
        - containerPort: 6379
          name: redis
---
apiVersion: v1
kind: Service
metadata:
  name: azure-vote-back
spec:
  ports:
  - port: 6379
  selector:
    app: azure-vote-back
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: azure-vote-front
spec:
  replicas: 1
  selector:
    matchLabels:
      app: azure-vote-front
  template:
    metadata:
      labels:
        app: azure-vote-front
    spec:
      nodeSelector:
        "beta.kubernetes.io/os": linux
      containers:
      - name: azure-vote-front
        image: microsoft/azure-vote-front:v1
        resources:
          requests:
            cpu: 100m
            memory: 128Mi
          limits:
            cpu: 250m
            memory: 256Mi
        ports:
        - containerPort: 80
        env:
        - name: REDIS
          value: "azure-vote-back"
---
apiVersion: v1
kind: Service
metadata:
  name: azure-vote-front
spec:
  type: LoadBalancer
  ports:
  - port: 80
  selector:
    app: azure-vote-front

 

Execution

Voici la commande à executer (dans le repertoire de votre fichier yaml)

kubectl apply -f azure-vote.yaml

Kubernetes

Pour vérifier on va taper cette commande kubectl get service azure-vote-front --watch

Kubernetes1

Un tpi tour via un browser sur http://40.71.233.76/

Sans titreqsdfqs

Tindin ! Personnellement je n'ai jamais monté un site web aussi rapidement !

Watch me

L'idée maintenant c'est d'aller voir l'interface web de gestion d'AKS.

En tapant la commande suivante dans un shell sur le portail web azure (aide) (ça va aussi créer un espace de stockage dédié au shell) ou depuis votre terminal :

az aks browse --resource-group myResourceGroup --name myAKSCluster

Ca ouvre un tunnel vers AKS et une page sur votre navigateur.

Sans titresqdfsq

Personnellement, j'ai direct 12 erreurs :

erreur aks

Ce blog peut aider :https://mohamedradwan.com/2019/06/05/how-to-solve-forbidden-user-error-kubernetes-web-dashboard-for-kubernetes-clusters/

Pour ma part j'ai juste eu à taper cette commande :

kubectl create clusterrolebinding kubernetes-dashboard -n kube-system --clusterrole=cluster-admin --serviceaccount=kube-system:kubernetes-dashboard
Et bim !
dashboard Kubnernetes.png

Delete me

Pour supprimer le cluster :

az aks delete --resource-group TutorialResources --name myAKSCluster --no-wait

ou plus brutal :

az group delete --name TutorialResources

Tarifs

Pour l'ensemble des tutos précédents et celui ci, c'est a dire 2 VMs et tout le bardat qui vient avec, un AKS et qq tests, ca m'a couté :
7.18€
Azure Cost
Je ne sais pas trop quoi en penser. 3 ou 4€ par jour c'est à la fois pas cher et cher aussi :
- cher parce que j'ai concretement pas fait grand chose avec qq requêtes web...
- pas cher car j'ai en qq minutes lancer une infra qui m'aurait prit des semaines avec de vrais serveurs.
Je n'ai pas encore de notion de tarifs sur Azure. C'est vraiment obscure. L'expérience nous le dira et je ferai un retour la desssus quand ce sera possible.
J'ai effacé tous les groupes de resources et ce qu'il contenait, je viens de repartir sur une base fraiche toute neuve, vierge de tout.
EDIT :
analyse des couts
Bon Azure est une pompe a fric pour le simple développeur qui veut juste tester.
Heureusement qu'il y a un trial, court, car il se termine aujourd'hui donc 14 jours il me semble. En regardant la projection sur le mois, j'arriverai à 276 €.
Hors de question de payer ce montant la. Un jour peut être avec une app qui mérite...

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée Champs requis marqués avec *

Poster commentaire