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
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!
Lien: https://signup.live.com/signup
Page de connexion Azure: https://portal.azure.com/#home
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
ssh userName @ ipAdress
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
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 ...
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
// 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é.
Connectez-vous docker. Donnez le nom d'utilisateur et le domaine ACR comme arguments de commande. docker login -u [nom d'utilisateur] [xxx.azurecr.io] Entrez le mot de passe après
Les informations requises peuvent être confirmées avec la clé d'accès sur l'écran des détails.
Informations obtenues sur l'écran des détails { user : 〇〇 login-server: 〇〇〇〇.azurecr.io pass: 〇〇〇〇〇〇〇〇 }
// 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!
vi 2-build-create.sh
DOCKER_IMAGE=〇〇〇〇/front-spring-service DOCKER_REPOSITORY=〇〇〇〇.azurecr.io
Lorsque vous tapez une commande, vous pouvez recevoir la spécification de version en argument ... Si c'est la deuxième fois, réglez-la sur 2.0!
./2-build-create.sh [x.x]
Vérifiez s'il est poussé avec votre navigateur!
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
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!
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
az aks install-cli
az login
az aks get-credentials --resource-group [xxxx] --name [xxxx]
kubectl cluster-info
Et
kubectl get node
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]
kubectl get secret
!D'accord, je pense que je peux aller chercher l'image avec ça!
Changement du nom du serveur ACR créé et du nom de l'image du conteneur
vi 4-create-deployment-svc.yaml
Partie 30ème ligne corrigée. Le contenu à saisir est long dans les images du docker. Après /, écrivez ver. '' image: 〇〇〇〇.azurecr.io/〇〇/front-spring-service:1.0 `
Corrigez un peu ci-dessous. Changement du processeur de 0,6 à 100 m. 2 lieux
Si vous voulez obtenir 1.0, allez ci-dessus
template: metadata: labels: app: spring-front-service version: [Laissez ceci comme "v1"]
Bien! J'ai pu spécifier l'image à utiliser pour l'authentification et l'acquisition.
kubectl apply -f 4-create-deployment-svc.yaml
kubectl get po -w
kubectl port-forward [spring-front-service-〇〇〇〇] 8080:8080
docker stop
pour l'arrêter.Dans un autre onglet ...
curl localhost:8080/sample/hello
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
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! !!
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.
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!
kubectl apply -f 11-Service.yaml
kubectl get svc
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.
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.
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.
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.
kubectl apply -f 12-Ingress.yaml
kubectl get ing
http://[front-service.〇〇〇〇.japaneast.aksapp.io]/sample/hello
Pour le moment, le contenu de l'événement se termine ici.
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.
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