% Intended LaTeX compiler: pdflatex
\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\usepackage{longtable}
\usepackage{wrapfig}
\usepackage{rotating}
\usepackage[normalem]{ulem}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{capt-of}
\usepackage{hyperref}
\usepackage{minted}
\usepackage[a4paper,margin=0.5in]{geometry}
\usepackage[utf8]{inputenc}
\usepackage[inkscapelatex=false]{svg}
\usepackage[sfdefault]{AlegreyaSans}
\usepackage{multicol}
\usepackage{minted}
\usepackage{float}
\usepackage{tikz}
\usetikzlibrary{positioning}
\renewcommand\listingscaption{Exemple de code}
\date{}
\title{Cours de virtualisation avancée: \emph{Kubernetes}, suite}
\hypersetup{
 pdfauthor={Evrard Van Espen},
 pdftitle={Cours de virtualisation avancée: \emph{Kubernetes}, suite},
 pdfkeywords={},
 pdfsubject={},
 pdfcreator={Emacs 30.0.50 (Org mode 9.6.15)}, 
 pdflang={English}}
\begin{document}

\maketitle

\section{\emph{Rolling Updates}}
\label{sec:org16f1979}
Permet des mises à jour d'images sans temps de coupure
\begin{minted}[]{yaml}
---
...
spec:
  ...
  strategy: 
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 0
  ...
\end{minted}

\begin{itemize}
\item \texttt{maxUnavailable}: défini le nombre maximal de \emph{replicas} indisponibles
\item \texttt{maxSurge}: défini le nombre maximal de \emph{replicas} à mettre à jour en même temps
\end{itemize}

Ensuite, mettre à jour l'image avec:
\begin{minted}[]{bash}
kubectl set image deployment/<nom déploiement> <nom conteneur>=<nouvelle image:tag>
\end{minted}

\textbf{But}:
\begin{itemize}
\item Mettre à jour l'application sans \emph{downtime}
\end{itemize}

\section{Déploiement \emph{blue / green}}
\label{sec:org12d4e94}
\begin{center}
\includesvg[width=.9\linewidth]{./images/blue_green}
\end{center}

\begin{itemize}
\item On déploie la nouvelle version en parallèle de l'ancienne
\item Une fois que tout est déployé on redirige le trafic vers le nouveau déploiement
\end{itemize}

\textbf{But}:
\begin{itemize}
\item Tester le déploiement de la nouvelle version avant de la basculer en prod
\end{itemize}

\section{Déploiement \emph{canary}}
\label{sec:orga83dd0b}
\begin{center}
\includesvg[width=.9\linewidth]{./images/canary}
\end{center}

\begin{itemize}
\item On déploie la nouvelle version en parallèle de l'ancienne \textbf{avec moins de \emph{replicas}}
\item Automatiquement une petite partie des clients tomberont sur la nouvelle version
\end{itemize}

\textbf{But}:
\begin{itemize}
\item Faire tester à quelques utilisateurs aléatoires la nouvelle version
\end{itemize}

\section{Mise à l'échelle (\emph{scaling})}
\label{sec:orge0f2cfb}

\begin{itemize}
\item Nécessaire quand la charge augmente
\item Par exemple pour suivre l'augmentation du trafic de notre application
\end{itemize}

\subsection{Verticale (\emph{vertical scaling})}
\label{sec:org42b7a6d}
\subsubsection{Fonctionnement}
\label{sec:orgc206495}
\begin{itemize}
\item On augmente la puissance des nœuds
\item Augmente les capacité de l'application existante
\item L'application n'a pas besoin d’être capable de gérer la réplication
\end{itemize}

\subsubsection{Inconvénients}
\label{sec:org3049ea8}
\begin{itemize}
\item Coûts pas toujours proportionnels à la puissance des nœuds
\item Si nœud déjà au max: comment faire ?
\end{itemize}

\section{Aller plus loin}
\label{sec:org39d2766}
\end{document}
