|
|
% 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}
|