[JAVA] Les débutants de Gachi ont-ils configuré des conteneurs avec Kubernetes? Jusqu'à ce que···

Participé à l'événement "Java Küche"!

Un article qui revient sur l'événement "Kubernetes Hackason ~ Deux jours pour s'immerger complètement dans Docker et Kubernetes! ~" Tenu le 23 août 2019.

Prof Avocat Microsoft: Kao Terada

Merci beaucoup. m (_ _) m

couler

Cette fois, nous allons créer un total de trois ressources dans Azure: Ubuntu en tant qu'environnement pour les tremplins, une destination push pour Dockerfile et un environnement pour exécuter Kubernetes.

Quant au contenu, Créez une image Docker sur Ubuntu. Push vers Azure Container Registry (ACR). Démarrez le conteneur avec Azure Kubernetes Service (AKS). Présentez jusqu'à.

M. Terada a rassemblé très soigneusement les fichiers et les informations nécessaires. Lien GitHub: https://github.com/yoshioterada/k8s-Azure-Container-Service-AKS--on-Azure

Bien! Faisons le!

Créer un compte Outlook

Lien: https://signup.live.com/signup

Créez un compte Azure et inscrivez-vous avec une carte de crédit

Page de connexion Azure: https://portal.azure.com/#home

Créer des ressources Ubuntu

Cliquez sur «Créer une ressource» sur l'écran de la console Azure. Créer la version Ubuntu 18.04 LTS Créez un nouveau groupe de ressources! Le nom de la machine virtuelle est le même. La région est «Japon oriental» Clé publique SSH "mot de passe" ssh autoriser

Accédez à l'environnement Ubuntu créé avec ssh.

Installer Docker

Article de référence: https://qiita.com/myyasuda/items/cb8e076f4dba5c41afbc

sudo apt-get update

sudo apt-get install apt-transport-https ca-certificates curl software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable test edge"

sudo apt-get update

sudo apt-get install docker-ce

docker --version

Installation d'Azure CLI

Après cela, j'aimerais coopérer avec ACR et AKS. Je vais donc installer Azure CLI! Article de référence: http://aka.ms/az-cli-install-jp curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash

// La différence entre la création d'un Dockerfile et une image Docker ...

Git Cloner le Dockerfile

Bouge toi cd FrontService

Jetez un œil au Dockerfile cat 0-Dockerfile-for-Maven

docker build -t maven-include-localrepo:1.1 . -f 0-Dockerfile-for-Maven

Vérifiez si vous avez pu le construire plus tôt. docker images

Création d'un registre de conteneurs Azure

// Kubernetes est une image qui récupère une image Docker via ACR. Je pense que. // Version privée du hub docker N'est-ce pas bien?

Je souhaite pousser l'image créée vers le registre Azure Continer que j'ai mentionné précédemment, alors créez-la d'abord.

Article de référence: https://github.com/yoshioterada/DEIS-k8s-ACS/blob/master/CreateAzureContainerRegistry.md Créer une ressource dans le navigateur Choisissez le nom du registre de manière appropriée. Le groupe de ressources est nouveau et décidé de manière appropriée. L'utilisateur administrateur l'a activé.

Puis connectez-vous à ACR

Création d'images Docker et préparation push

// Je me suis authentifié auprès de l'ACR. (avec connexion docker.)

M. Terada a mis en place une création d'image Docker et un push vers ACR dans un fichier .sh (2-build-create.sh). Donc, il semble que vous devriez démarrer sh avec une commande. Cependant, spécifiez l'image à pousser et éditez les deux emplacements du référentiel de destination push avec vi!

Pousser vers ACR

Cette fois, éditons un peu la source et créons une image en v2!

vi src/main/java/com/yoshio3/frontspring/FrontController.java Modifions la chaîne de caractères de retour, ce qui est le meilleur de tous!

Très bien, créons-le en fonction de la source modifiée ./2-build-create.sh 2.0

Contrôle de fonctionnement

Image de lancement docker run -p 8080: 8080 -it [REPOSITORY name]: [x.x (TAG number)]

Ouvrons-le dans un autre onglet et accédons-y avec curl pour le vérifier! curl http://localhost:8080/sample/hello

Objectif suivant: je souhaite configurer un conteneur avec AKS. Tout d'abord, allez chercher l'image dans ACR!

Sur la page Azure, créez un cluster Créer Kubernetes.

De plus, le groupe de ressources est nouveau! Le nom du cluster est-il le même? La région est le Japon oriental Défini sur Nombre de nœuds 1. Nœud virtuel activé

Application HTTP ・ ・ ・ Oui

Installation de la commande Kubectl

az aks install-cli

Let's az-login

az login

Obtention des informations d'identification pour la connexion AKS

az aks get-credentials --resource-group [xxxx] --name [xxxx]

Voulez-vous vérifier si la commande peut être utilisée comme essai?

kubectl cluster-info Et kubectl get node

Je souhaite apporter l'image dans ACR à Kubernetes

Dans l'état actuel des choses, Kubernetes ne pourra pas accéder à l'ACR. Donc, éditez 3-create-secret4reg.sh avec vi.

kubectl create secret docker-registry docker-reg-credential --docker-server=〇〇〇〇.azurecr.io --docker-username=〇〇 --docker-password="〇〇〇〇" [email protected]

D'accord, je pense que je peux aller chercher l'image avec ça!

Corrigez le nom de l'image récupérée

Bien! J'ai pu spécifier l'image à utiliser pour l'authentification et l'acquisition.

Courir

Vérifiez s'il fonctionne

kubectl get po -w

Contrôle de fonctionnement

Dans un autre onglet ... curl localhost:8080/sample/hello

Les résultats sont affichés

Faire la v2 et appliquer

Dupliquez 4-create-deployment-svc.yaml pour créer 4-create-deployment-svc-v2.yaml. Modifier avec vi 4-create-deployment-svc-v2.yaml -Ajouter «-v2» à la fin du nom: spring-front-service sur la 4ème ligne. ・ Jouez avec des images. Si vous le définissez sur: 2.0, vous verrez l'image v2. -Définir la version sur v2.

kubectl apply -f 4-create-deployment-svc-v2.yaml

Confirmation du démarrage de la v2

kubectl get po

// Deuxièmement, il peut être préférable d'effectuer une redirection de port et de vérifier.

Maintenant, nous avons réussi à installer deux conteneurs avec des k8! Hourra! !!

Filtrons!

kubectl get po --selector app=[],version=[v1] -> En d'autres termes, vous pouvez écrire un sélecteur pour contrôler à quel pod accéder! !! !!

Ensuite, commençons le conteneur v2 avec Kubernetes et mettons à jour v1 vers v2.

À propos du service

Créons un service et démarrons-le. Vous sentez que ce service sert de médiateur à l'accès au pod? ??

Lorsque vous exécutez pod, ip est généré de manière fixe. Comment gères-tu ça? Le manuel est difficile. En fait, il existe d'autres moyens d'accéder au pod en plus de l'ip. Ce n'est pas bon que l'IP change fréquemment, n'est-ce pas?

Le cœur du déploiement => Tant que vous créez un service et que vous vous souvenez de cette adresse IP unique, vous pouvez changer le pod avec le sélecteur de service. Vérifions 11-Service.yaml!

démarrer le service

kubectl apply -f 11-Service.yaml

Vérification

kubectl get svc

mérite

Vous pouvez passer à de nouveaux pods tout en conservant les pods qui fonctionnent normalement. Vous pouvez le retourner immédiatement! C'est la grande chose à propos de kubernetes! !! !! !! C'est difficile de le faire soi-même. Modifiez simplement yaml.

Au fait

Normalement, le service est de type: ClusterIP! !! Eh bien, si vous voulez vraiment l'exposer à l'extérieur, même pour un instant, définissez-le sur le type: LoadBalancer. Mais pas bon. Danger. S'il vous plaît soyez prudente.

-> Lorsqu'il y a plusieurs services, vous pouvez brancher le service à appeler en fonction de l'URL en les regroupant dans Ingress et en définissant le chemin dans les paramètres Ingress.

Résumé: C'est une bonne idée de publier Ingress dans le monde extérieur.

URL séparées avec Ingress! Branche le pod avec le service. L'image est le routage du service. Réceptionniste! !!

Une fonction pratique pour faire fonctionner des micro-services.

Modifiez Ingress et essayez de lancer

vi 12-Ingress.yaml Modification: -host: front-service. [〇〇〇〇.aksapp.io] Le contenu de ce correctif est collé à partir de la ressource "domaine de routage d'application HTTP" dans le navigateur.

lancement

kubectl apply -f 12-Ingress.yaml

Vérification

kubectl get ing

accès

http://[front-service.〇〇〇〇.japaneast.aksapp.io]/sample/hello

Pour le moment, le contenu de l'événement se termine ici.

L'idée de conception de foire

Il vaut mieux ne pas toucher kubernetes à moins que vous n'ayez la mentalité de faire les choses en partant du principe que cela va casser. menu déroulant. Réduisez la portée de l'influence. Il vaut mieux penser qu'il va tomber, plutôt que d'essayer de l'empêcher de tomber. Considérez le flux de reconstruction quand il tombe. Jusqu'où ira le Design of Fair? Il tombera définitivement.

finalement

Merci beaucoup, monsieur Terada! Pour être honnête, Docker le touchait depuis 30 minutes, donc je l'ai compris d'une manière ou d'une autre, mais Kubernetes était ignorant. Heureusement que j'étais un pro de la mafia et j'ai réussi à le finir! !!

(´∀`)

Plus tard, nous avons fait la même chose tous les trois avec une connaissance. Cet article a été créé sur la base d'un exemple réussi à l'époque.

Il est important de répéter.

Kubernetes ... Je suis content d'avoir ressenti un petit microservice. Je veux recommencer! (^ ・ ^)

Recommended Posts

Les débutants de Gachi ont-ils configuré des conteneurs avec Kubernetes? Jusqu'à ce que···
Configurer Gitolite sur CentOS 7
Configurer ansible-playbook sur Ubuntu 20.04
Configurer le registre Docker localement sur CentOS 7
Configurer le service de métabase sur Windows Server 2012
Configurer un serveur SSH sur Ubuntu 20.04, qui est WSL2