 Bonjour à tous et à toutes, j'espère que vous êtes tous amusant de cette subvention d'open source. Pour ma part, je suis très heureux de vous montrer comment programmer l'expansion pour l'expansion et l'expansion en capital avec le langage gold. Je m'appelle Philippe Martain, je suis développeur de l'expansion en France et je suis contributaire pour l'expansion et l'expansion. C'est pour ça que l'expansion et l'expansion de l'expansion et l'expansion de l'expansion de l'expansion. Je participe cette année à la saison des notes pour essayer de faire les références de l'API plus accessibles sur le web et j'ai publié un livre pour aider vous à préparer pour les certifications de l'expansion de l'expansion. Et je suis également élevé deux livres sur l'expansion de l'API et l'expansion de l'expansion en capital. Durant cette présentation, nous avons déjà fait une petite tour sur l'API. Nous parlons de l'expansion de l'expansion en capital et de comment créer un plugin en capital avec l'expansion de l'expansion. Ensuite, nous parlons de l'expansion de l'expansion de l'expansion de l'expansion en capital et de comment créer un opérateur avec l'application de l'expansion de l'expansion en capital. Alors, nous allons parler de l'API en capital. L'API en capital est un engagement à tous les quarts de la clé de l'expansion en capital. C'est d'être humain et utiliser l'application en capital ou un programme comme les compétences de contrôle ou les applications cloud-native. Tout va passer à cet API pour parler avec le cluster. Donc cet API est le standard HTTP REST API et l'application de Kubernetes provides une spécification dans l'application de l'open API format. Une spécification de l'open API est composée de différentes parts et spécifiquement une liste de pass et une liste de définitions. La pass est l'URL que vous utilisez pour réquester cet API et pour chaque pass, la spécification donne les différentes opérations possibles pour cette pass comme GET, POST, PATCH, etc. Et pour chaque opération, ce sont les paramètres et ce sont les réponses. Et pour chaque paramètre et les réponses, ce paramètre et les réponses peuvent être la fonction des définitions. Les définitions sont les structures de données que vous passez à l'application. Les opérations sont les deux concepts, les actions et les kinds. La action est directement map à les opérations et les kinds sont des définitions. Par exemple, sur la droite, vous pouvez voir que pour un modèle, il y a différentes opérations. Il y a des opérations GET pour lire le code spécifique, les opérations listes pour les kinds, les opérations créées pour créer un code, etc. Et le code est directement le objectif. Donc, sur les actions de la communauté, quand vous utilisez un exemple, quand vous créez des rôles pour le système airbag de votre pasteur, par exemple, si vous voulez avoir les opérations GET, POST, et les opérations verbes pour les codes, vous créez ce rôle. Les opérations verbes sont les mêmes que les actions qu'on parle de. Quand vous utilisez des opérations GET, vous utilisez aussi ces différentes opérations. Par exemple, quand vous créez des opérations GET, vous créez une action GET, et avec des opérations GET, vous utilisez les opérations listes, etc. Nous pouvons voir avec l'access matrix plug-in, les opérations verbes et les opérations et les opérations listes qui sont disponibles dans le cluster, et ce sont les règles pour les utilisateurs. Donc, ici, je suis en train d'utiliser cette commande dans le cluster ARMY. Et donc, je peux obtenir l'access pour tous les opérations pour tous les opérations. Si je suis en train d'utiliser la même commande, mais pour les services secondes de l'espace, je peux voir que les services secondes n'ont pas le droit d'utiliser d'action pour d'autres types. Les opérations de la commande sont les objectifs de la commande que vous utilisez régulièrement, comme des portes, des déployments, des services secondes, etc. Chaque commande s'agit d'un groupe de groupes et des versions. Par exemple, le port s'agit du port V1, le déployement de l'app V1 et le déployement de l'app Networking.caya.io slash V1, groupes et versions. Et, quand vous faites votre template de Kubernetes pour l'utiliser avec Qtl, vous vous donnez des types avec des types, et des groupes et versions avec des versions API. Maintenant, nous avons vu un autre point de vue de l'API. Nous allons parler de l'élaboration de Client Go. L'élaboration de Client Go peut être utilisée par un programme pour accéder à l'API de Kubernetes. Pour cela, vous pouvez commencer un projet avec une commande d'élaboration comme d'habitude, et vous pouvez spécifier une version spécifique de l'élaboration avec la Google, Qtl.io, Client Go avec la version que vous voulez utiliser. La première chose à faire quand vous créez un programme est de connecter avec le cluster. Dans d'autres cas, votre programme sera au-delà de l'élaboration ou à l'intérieur de l'élaboration. Si votre programme est au-delà de l'élaboration, vous devez spécifier l'élaboration de Qtl avec cette commande. Et si votre programme se rend dans l'élaboration, vous n'aurez pas à spécifier parce que l'élaboration va savoir comment obtenir les créations pour connecter à l'élaboration. Vous devez utiliser l'élaboration de l'élaboration de l'élaboration de l'élaboration de l'élaboration, et vous devez connecter à l'élaboration de l'élaboration de Qtl. Ensuite, vous devez créer un set client. Ce set client contient un client pour chaque groupe et version. Par exemple, vous devez obtenir un client pour le groupe. Et puis, si vous voulez faire des actions pour cet API, vous devez premièrement sélectionner ce groupe. Et puis, vous devez faire des actions listes pour ce genre. Donc, vous devez faire des actions listes pour cette commande. Si vous voulez les listes, vous devez spécifier un database. Vous devez spécifier ici. Si vous voulez les listes pour tous les databases, vous devez spécifier un name de database. Et si vous voulez obtenir une ressource spécifique, vous devez passer le nom de cette ressource par exemple. Si vous voulez passer plus d'options pour votre action, par exemple, ici, pour obtenir deux listes avec un sélecteur spécifique, vous devez passer la option de la liste. Pour savoir quelle option est disponible, vous devez regarder la documentation de l'API. Vous devez obtenir des parameters disponibles pour cette action. Vous devez trouver des margements pour continuer, un sélecteur, un sélecteur, etc. Et, sur le gauche, vous devez voir que ces options sont aussi disponibles dans la liste option structurelle. Les margements, un limit, un sélecteur, un sélecteur, etc. Et c'est vrai pour toutes les actions. Si vous voulez créer une ressource, vous devez créer la structure de l'API. La structure de l'API. Vous devez trouver comment importer cette structure. Avec la documentation, ici, pour la ressource de l'API, vous devez importer avec le pass pour importer le package correspondant. Vous devez importer et un autre nom. Parce que d'autre côté, tout serait nommé V1 ou V1 ou V1 et donc, vous devez trouver les ressources dans ces packages. Et vous devez créer la structure. Vous devez voir que la structure est complètement similaire à la structure de l'API. Vous devez écrire une place pour la structure de l'API. Et ensuite, vous devez créer la méthode passant le pointeur pour la structure. Vous devez importer un objectif. Vous devez justifier la méthode passant le nom de l'objectif. Et ensuite, si vous voulez regarder une ressource spécifique, vous devez regarder la méthode dans cette ressource. Vous devez écrire des événements. Et l'événement va contenir un type et un objectif. Le type va être modifié selon votre ressource. Et le objectif va contenir votre objectif. Le problème avec la commande est que les requêtes vont être élevées par le client. Le service va envoyer les premiers événements à cette connexion. Mais la connexion ne sera pas fermée. Donc, le service peut envoyer des événements plus tard. Le problème est que la proximité va généralement être entre le client et le service. Et on va les envoyer. Et donc, le library va envoyer des informateurs pour vous, ces connexions et les réconnexions. Et aussi, il va envoyer un cash pour vous qui va déjà obtenir des connexions prévues. Quand vous êtes rendu vos programmes dans la communauté managée par le client, vous devez inclurez des plugins d'authentication. Donc, le programme peut négocier des tokens avec le système d'authentication dans le cloud monitor. Donc, vous devez ajouter ces lignes, ou plusieurs de ces lignes pour inclurez les plugins d'authentication. Maintenant, nous avons vu comment communiquer l'application d'application programmatiquement. Nous verrons comment créer un plugin de kubectl. Le plugin de kubectl est un programme simple qui est disponible dans votre path système. Donc, par exemple, ici, j'ai un kubectl-ellow executable qui va juste éco-ellow. Et c'est disponible dans mon path. Donc, le kubectl-ellow devient le paramètre de la commande de kubectl. La commande de kubectl va essayer de trouver le programme de kubectl-ellow dans le path et exécuter. Et donc, ici, il exécuterait correctement. Donc, c'est la seule chose que vous devez faire pour créer un plugin de kubectl pour juste trouver le premier plugin en utilisant l'IgroLibrary. Ici, nous allons décrire le plugin de service 3 que j'ai réveillé et que nous allons vous montrer toutes les services dans un espace spécifique et toutes les backends de ces services. Donc, le premier que le plugin est en train est de lister les services disponibles. Et pour chaque service nous allons explorer pour trouver les endpoints de ce service. Et pour chaque endpoint il va trouver le target de l'endpoint et trouver les portes du target de l'endpoint. Et pour chaque porte, il va explorer les portes pour trouver les containers. Et les portes sont exposées par chaque container. Et donc, il va pouvoir lier les services avec les portes. Donc, ici, si je déploie une petite application dans le espace de l'endpoint, je vais déployer un deployement d'NGX avec deux containers, un container d'NGX et un container d'AVCAT. Et un deployment d'NGX, mais cette fois, avec des proches on va fail. Et un service d'NGX qui explose ces deux prévus deployments. Et ensuite, on déploie un deployment d'APACH et un service qui explose cet deployment d'APACH. Si nous avons le plug-in de cet espace, nous pouvons voir que nous avons trouvé les deux services. Le service d'NGX explose les portes qui sont les backends de ce service. Et ici, on a trouvé que le port ne fonctionne correctement parce que le problème n'est pas OK. Et ici, on a trouvé que le container qui est répliqué sur le port ATE est un container d'NGX. Ensuite, si vous voulez déployer votre plug-in à l'NGX, vous avez juste de créer un manifestant avec des descriptions de votre plug-in. Et vous devez référer les binaries qui seront disponibles pour les utilisateurs et installés sur les machines. Quand vous avez fait ceci, vous pouvez créer un proche dans l'NGX repositorie. Et quand il est disponible, votre plug-in sera disponible dans l'NGX. Et donc, vous pouvez trouver une search pour obtenir la liste des plugins disponibles dans l'NGX. Et si vous voulez voir les plugins installés dans votre machine, vous pouvez trouver une liste. Et ensuite, vous pouvez trouver votre cluster, votre plug-in dans votre machine. Maintenant, nous avons vu le library de Client Go et comment l'utiliser pour créer les plugins pour capital. Nous allons parler du library de contrôleur, qui est très utile pour créer des contrôleurs ou des opérateurs pour Kubernetes. Quand vous créez un programme avec contrôleur et timer, à la première chose ce temps, c'est plus facile parce que vous devez utiliser la méthode GATCONFIG et ça vous détectera si le programme est en train d'arriver à l'extérieur de la cluster ou à l'intérieur de la cluster. Et ça va aussi trouver un filer de contrôleur pour vous. Si le filer de contrôleur est passé par le filer de contrôleur de l'environnement ou non de cet asset, il va essayer de connecter si le programme est en train d'arriver à l'intérieur de la cluster. Et enfin, si rien de ça fonctionne, il va essayer de connecter avec le file de GATCONFIG dans votre directory. Ce temps, pour contrôler les actions dans l'API, vous devez juste obtenir un client, ici avec le client nouveau commande qui peut contrôler les actions directement dans ce client. Ici, vous êtes en train de contrôler un objecte de port. Ce objecte de port est, comme avec le library client, une structure de port. Si vous voulez lister les portes, vous pouvez contrôler les actions dans le client directement, passant les options que vous voulez. Maintenant, nous allons voir comment créer le contrôleur avec ce library. Dans la cluster de Kubernetes, tous les contrôleurs sont en train de contrôler le programme nommé le manager de contrôleur cubilier. Et ce manager va contrôler tous les contrôleurs, soit le contrôleur déployé ou le contrôleur service. Et si vous avez créé un contrôleur vous devez créer un manager. Ce manager va contrôler un ou plusieurs de vos contrôleurs. Vous créez un manager avec cette première ligne. Vous créez un contrôleur attaché à ce manager. Nous commençons le manager. Quand vous créez un contrôleur vous devez spécifier un méthode reconciler. Le méthode reconciler est le méthode que nous appelons chaque fois les ressources qui sont intéressées pour ce contrôleur seront modifiées ou ajoutées. Pour cela, vous devez regarder les ressources spécifiques et les contrôleurs qui sont intéressés. Ici, vous devez regarder la première ressource. Nous allons l'entraîner ces ressources et ces ressources seront envoyées à la méthode reconciler. Ici, c'est la méthode reconciler qui va obtenir la réquestion. Et dans cette réquestion, il va obtenir les objectifs pour le reconciler. Et donc, ici, il va obtenir les ressources spécifiques parce que le contrôleur va regarder les ressources spécifiques. Dans cet exemple, nous créons un contrôleur qui va regarder les ressources spécifiques et chaque fois que la ressource est prête, il va créer un service qui va exposer ces ressources. Pour cela, le contrôleur va obtenir le nombre et l'espace de la ressource, donc il va essayer de obtenir cette ressource dans le cluster réel. Et si cette ressource n'existe pas, le contrôleur comprend que la ressource a été élevé. Et donc, il n'a pas de choses à faire. Mais si la ressource existe, il va essayer de voir si il y a des annotations spécifiques pour ce contrôleur. Donc, ici, nous avons décidé d'exposer des annotations spécifiques. Et cette annotation existe dans la ressource. Elle va créer cette ressource avec un service. Et dans la ressource, elle va essayer de obtenir un service correspondant. Et si ça n'existe pas, elle va créer ça. Et donc, pour créer ça, elle va créer la structure de service comme l'on l'a vu et finalement, elle va créer une action dans cette structure qui va créer le service dans le cluster. Donc, le contrôleur est créé quand les portes sont créées. Le contrôleur serait intéressant pour le contrôleur de savoir ce qui se passe pour ces services. Et pour cela, il peut regarder ces services. Il peut regarder les services. Et on inquiète que cette fois-ci, le contrôleur de service est inclus dans la méthode reconcilable. Parce que la méthode reconcilable n'accepte que des portes. Elle est seulement intéressante sur les portes. Et ici, nous sommes écoutés sur le service. Donc, nous voulons obtenir ce service qui a été créé. Pour cela, quand nous créons le service, nous pouvons décider le contrôleur de le service. On va spécifier que ce sont les portes qui sont le contrôleur de le service. Et ici, c'est le watch. Nous voulons éduire l'honneur de ce service qui est le contrôleur. Donc, nous voulons regarder ce contrôleur qui a été créé. Donc, le contrôleur est éduit. Nous voulons créer un pod et un genx. Pour le moment, ce n'est pas arrivé parce qu'il n'y a pas de notation correspondant. Donc, nous allons ajouter cette notation. Et maintenant, nous avons vu que le contrôleur a créé le service. Nous pouvons utiliser notre ancien plug-in. Nous avons créé et nous pouvons voir que le service existe. Maintenant, nous allons éduire le pod. Et parce que le pod est le contrôleur de le service. Et le service est réservé par le pod. Il y a un collecteur gardé qui va éduire les objectifs pour qui l'honneur n'est pas présent anymore. Et donc, nous pouvons voir que le service a été éduit. Il n'a pas été éduit par notre contrôleur, mais par le collecteur gardé qui a été éduit par le contrôleur de la Kubernetes. De l'autre façon, si nous accroissons le pod, notre pod le service sera éduit. Et si nous essayons d'éduire le service, nous pouvons voir que le service a été éduit de nouveau. Parce que le contrôleur a détecté que le service a été éduit. Et donc, il a été éduit par le watch command et a éduit et collé le reconciler avec le pod. Et le pod a récréé le service parce que le service n'existe pas. Nous avons vu comment le contrôleur peut être utilisé pour créer un contrôleur. Nous allons utiliser le framework de la Kubernetes qui donne plus de tools pour créer un contrôleur en utilisant cette librairie. Donc, comme exemple, nous essayons d'éduire le contrôleur afin de vous aider à déployer un site statique. Si nous parons comme exemple un site statique d'un container qui va déployer un site d'un bouquet dans le cloud et qui va déployer le site dans le local et le container va renseigner le server avec le site downloader. Et il y a un service pour exposer le pod et le pod horizontal d'autoscaler le déployement. Donc, si nous utilisons cette librairie pour un site statique cela fonctionne. Mais nous pouvons voir qu'il y a différents paramétres et nous aimerions paramétrer tous les déployements. Nous avons le nombre de volumes que nous allons utiliser pour stocker les files downloadés de la bouquette. Il y a le nombre d'adresses de la bouquette et il y a le nombre de critiques pour le pod. Nous aimerions paramétrer notre déployement avec cela. Pour cela, nous créons un opérateur avec un nouveau type qui est appelé Static. Donc pour cela, nous pouvons créer un nouveau projet avec GomondEdit et puis initialiser l'objet de la bouquette de votre domaine spécifique. Et puis, nous créons un nouveau CRT avec le commande API qui donne une bouquette spécifique et une bouquette spécifique. Ce sont les types de bouquettes qui nous parlons de la bouquette de la bouquette. Et donc nous allons ajouter une nouvelle bouquette pour l'API et une nouvelle bouquette pour cette bouquette. Et donc, ce commande va créer une nouvelle ressource, donc un nouveau CRT et créer un contrôleur qui va contrôler cette ressource. Nous allons examiner ce qu'est la source générée par le tout. Donc, ici, il va créer le manager, comme vous l'avez vu avant. Il va mettre un nouveau contrôleur ici, Static Reconciler. Il va l'utiliser avec notre manager. Et puis, il va commencer le manager. Donc, c'est très similaire à ce que nous avons vu avant. Le reconciler, ici, nous pouvons trouver le méthode reconciler qui, pour le moment, est ouvert. Et nous pouvons voir que le setup avec le manager va créer un nouveau contrôleur. Et il va utiliser le four méthode qui est l'utilité méthode pour faire les sous-titres que l'on a vu avant. Donc, ici, il va regarder la ressource statique et il va accueillir cette ressource dans le méthode reconcilé. Et donc, nous savons que le méthode reconcilé va recevoir une ressource statique. Et la structure du CRT peut être trouvée ici. Il est composé de metadata et de la structure spécifique et de la structure statique. La structure spécifique contient une simple foule et la structure statique est éteinte. Donc, nous avons vu que nous aimerions ajouter 4 paramètres, ceci qui contient la foule, la ressource de l'URI et la ressource pour l'open. Donc, vous pouvez défendre la structure statique ici. Et maintenant, nous pouvons commencer à impliquer l'opérateur. Donc, oui, l'opérateur est une méthode reconcilé chaque fois que la ressource statique est créée. Nous aimerions créer un déployement, créer un service et créer un autoscaler. Donc, nous appelons ces méthodes ici. Et nous pouvons voir ce qui se passe quand nous créons un déployement. Donc, nous créons la structure déployée avec tous les paramètres. Et nous allons utiliser ici, la dimension de notre volume nous allons utiliser la spécifique statique de notre objectif statique. Nous allons obtenir la taille de notre service et nous allons l'utiliser dans le volume de notre déployement. Et où nous passons un variable environnement comme source, nous passons la spécifique source de notre objectif statique. Et quand cette structure déployée est créée, nous pouvons créer une action pour créer un déployement réellement dans le cluster. Et le même est fait pour le service et pour l'HPA. Quand votre contrôleur sera réellement dans le cluster, par défaut, il va utiliser un compte de service qui ne n'aura pas le droit de faire des actions sur des ressources. Donc, vous devez créer un rôle avec des ressources spécifiques. Et donc, oui, nous pouvons créer une spécifique comédie qui va être déployée par CubeBuilder et qui va créer un rôle équivalent avec ces règles. Et donc, oui, par défaut, quand le contrôleur source est créé par CubeBuilder, il donnera accès à toutes les actions pour votre ressource statique dans ce groupe. Et donc, par défaut, le rôle de génération vous pouvez trouver que pour les ressources statiques vous avez le contrôleur d'accès à ces actions. Donc maintenant, parce que le contrôleur va créer des services déployés et de l'HPA, vous avez pour ajouter les règles spécifiques. Ce sont ces 3 règles qui ont déclare qu'il veut le contrôleur pour pouvoir obtenir ces règles pour les déployements, pour les services et pour les autoscalaires horizontales. Et quand le CubeBuilder s'occupe il donnera un rôle utilisé par le contrôleur par ajouter les règles pour le contrôleur d'autoscalaires, déployements et services. Nous avons pu déclarer le contrôleur pour chaque objet qui est créé par le contrôleur. Donc, quand le contrôleur est la ressource custom, et donc, quand la ressource custom est émité, tous les objectifs créés seront émitées en même temps. Et donc, ici encore, nous avons déclaré le contrôleur pour tous les objectifs qui sont créés par le déployement. Et quand nous avons créé le contrôleur, nous avons ajouté après les 4 règles, nous avons fait que les statiques seraient écoutées par le contrôleur. Cette fois, nous pouvons utiliser le contrôleur qui déclare que le contrôleur déployement, services et d'autoscalaires. Et donc, pour cette ressource, la ressource s'occupe de cette fois, pas la ressource, mais l'honneur de cette ressource, qui est la ressource statique. Maintenant, quand le site est déployé, nous voulons savoir le statut de le site. Par exemple, nos répliques sont déployées. Qu'est-ce qui est l'IP de la ressource de la ressource qui est déployée ? Donc pour cela, nous devons utiliser la ressource de la ressource statique. Donc pour cela, la première chose d'en prendre, c'est de déclare avec ces commentaires spécifiques que nous utilisons la ressource de la ressource statique, d'autre part, avec d'autres mots. Et ici, quand quelque chose est commis dans le site, quand le site est déployé, il est appelé parce que certains déployements ont été modifiés par exemple. Tout le site de la ressource de la ressource qu'on a vu avant est appelé encore. Donc ici, quand nous appliquons le déployement, avant que nous essayons de créer ce déployement, mais si c'est déjà créé, nous pouvons regarder les statuettes. Et de ces statuettes, nous pouvons fabriquer les statuettes de la ressource statique et abattre-le Donc ici, nous pouvons obtenir le nombre de réplications pour le déployement et abattre les statuettes de l'objet statique pour mettre ce nombre de réplications. Chaque fois que le contrôleur fait quelque chose important, c'est intéressant d'avoir des informations dans la commande de la reprise de la ressource. Généralement, dans le point, il y a des informations pour la reprise de la ressource, des volumes, etc. Et donc, c'est intéressant d'abattre ces événements pour notre ressource. Pour cela, vous pouvez utiliser l'application record de l'Igoris Client et nous pouvons ajouter un recordeur pour la structure de notre contrôleur. Et enfin, nous pouvons utiliser ce recordeur pour envoyer les événements. Donc, chaque fois que le contrôleur fait quelque chose important, ici, il a créé un nombre de réplications, par exemple, par ce recordeur, nous pouvons envoyer un nouvel événement qui est de type normal et avec des textes pour indiquer ce qui s'occupe. Quand vous faites le contrôleur de la commande, par exemple, il y a différents colonnes avec des informations spécifiques sur le poste. Pour notre ressource de statique, nous aimerons aussi des informations spécifiques. Par exemple, la source de la bouquette utilisée par cette site statique ou le nombre de réplications actuelles de postes. Et pour cela, nous avons également utilisé une commande spécifique. Ici, nous déclarons le nombre des colonnes et par la passée de la structure, nous recevrons la valeur pour cette colonne. Pour la source de colonne, nous recevrons la valeur de la source à la structure de la spec. Et la colonne de l'externale de l'IP, nous recevrons la valeur de la structure de la source. Ces colonnes sont transformées par la commande d'un cubicle de la commande. Ici, nous trouvons les colonnes d'un cubicle de la commande. Ces colonnes sont condamnées par le programme de cubicle de la commande pour les displays. C'est important de faire un test pour vos contrôles. Vous êtes sûrs que le contrôler est en train de faire exactement ce que vous voulez. Donc, un framework est donné par le cubicle de la commande. Pour exemple, vous pouvez créer que quand une ressource statique est créée, vous pouvez vérifier que le cluster est créé par créer un déploiement et que ce déploiement est rendu par la ressource statique. Et que un événement est créé avec un type de création de déploiement. Puis que c'est créé un service rendu par la ressource statique et créé un événement spécifique et aussi un skill d'autoskeller avec un événement spécifique. La prochaine série de tests est que quand votre site est créé, si la réplique de déploiement change alors la réplique de valeur est la statique statique, aussi change. Ou quand l'application externelle de service change, la valeur externelle de la statique statique aussi change avec la même valeur. Et pour ici, si certains utilisateurs sont créés par le contrôleur par exemple le déploiement le service d'autoskeller le contrôleur modifie la ressource que le contrôleur veut. Donc, par exemple, quand le site est déployé et la stratégie de déploiement est créée, comme le contrôleur a dit et si la stratégie déploiement est créée par un autre utilisateur donc le contrôleur va changer pour la stratégie originale. Et la même par défaut, le contrôleur met 80 pour le porte de service. Si un utilisateur change le porte de 80 à 80 le contrôleur va changer pour le porte de 80. Et la même chose pour le d'autoskeller un utilisateur change le contrôleur qui change pour sa valeur originale. Donc maintenant le démon sur ce contrôleur on verra que le CRD a été déployé, c'est ok. Nous pouvons voir un site spécifique sur ce site. Nous voulons déployer donc nous pourrons obtenir les sources du site de ce buget et nous voulons les réplicats de 1 à 4 réplicats. Donc pour cela nous créons cette ressource custom et nous pouvons voir avec 3 très intéressants 3 plugins pour les computers qui montrent les objectifs qui belongent à notre ressource, notre ressource statique. Donc ici le contrôleur a été créé pour cette ressource de déployement et l'HPA et le service. Et le déployement pour le déployement des réplicats ont été créés et pour cette réplique des points ont été créés. Nous pouvons voir cet objectif, l'HIP extérieur et le nombre de réplicats et nous pouvons décrire cette ressource et nous pouvons voir que ces événements ont été envoyés pour cet objectif. Et enfin nous pouvons prendre des statiques pour voir les colonnes qui ont été ajoutées pour cette commande et nous pouvons voir par le site, les réplicats actuels les réplicats actuels et l'HIP extérieur et c'est tout pour le démon et pour cet objectif. Nous pouvons obtenir le slide sur cet URL et vous pouvez obtenir les sources pour l'opérateur website et pour les plugins de service 3. Merci tout pour votre attention. Bye