Voici un résumé des étapes lors de la tentative de création d'un pod Kubernetes à partir d'une image du registre de conteneurs de GitLab pour apprendre les compétences. * La partie rouge dans la figure ci-dessous. L'image à extraire pour l'essai comprend nginx.
・ Le cluster Kubernetes a été construit ・ GitLab a été construit ・ La version de l'environnement que j'ai essayée est la suivante CentOS:7.3 Kubernetes:1.18.2 Calico:3.13.3 Docker:1.13.1-109 GitLab:11.6.8
https://docs.docker.com/registry/insecure/ https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
En guise de préparation, placez le certificat et définissez les informations d'accès au registre de conteneurs.
Placez un certificat pour accéder au registre de conteneurs à partir de Docker.
Implémenté à chaque nœud K8s
# sudo mkdir -p /etc/docker/certs.d/registry.test01.com
# sudo cp cert.crt /etc/docker/certs.d/registry.test01.com/ca.crt
cert.crt ・ ・ ・ Certificat utilisé pour accéder au registre des conteneurs GitLab
Si le certificat que vous avez placé était un certificat auto-signé, vous deviez configurer Docker pour qu'il l'autorise.
/etc/docker/daemon.json
{
"insecure-registries": ["registry.test01.com"]
}
Redémarrez Docker pour qu'il prenne effet.
systemctl restart docker
Enregistrez les informations pour accéder au registre de conteneurs dans K8s. Tout d'abord, connectez-vous au registre de conteneurs depuis Docker.
nœud maître k8s
#docker login registry.test01.com
Username: <Nom d'utilisateur lors de l'accès au registre de conteneurs>
Password: <Mot de passe correspondant au nom d'utilisateur ci-dessus>
Login Succeeded
Vérifiez le fichier config.json généré par la connexion ci-dessus.
python
# cat ~/.docker/config.json
{
"auths": {
"registry.test01.com": {
"auth": "***************************="
}
}
Créez un secret pour la connexion de cluster qui contient le jeton d'authentification.
# kubectl create secret docker-registry regcred --docker-server=registry.test01.com --docker-username=<Nom d'utilisateur du registre de conteneurs> --docker-password=<Nom d'utilisateur du registre de conteneursに対応するパスワード>
secret/regcred created
Définissez les paramètres de service pour accéder au conteneur via le réseau et les paramètres du pod qui utilisent l'image du conteneur.
Créez les informations d'accès au pod comme suit. Associez le port externe 30080 au port nginx 80 du côté du conteneur.
testapp01-svc.yaml
apiVersion: v1
kind: Service
metadata:
name: testapp01-np
spec:
selector:
app:testapp01 ← Faites correspondre ceci avec la définition de pod
ports:
- targetPort:80 ← Port de réception des conteneurs(nginx)
port: 8080
nodePort:30080 ← Port utilisé lors de l'accès depuis l'extérieur. "Node IP" lors de l'accès depuis l'extérieur:Spécifiez le numéro de port spécifié ici.
protocol: "TCP"
type: NodePort
Appliquez le fichier ci-dessus.
python
# kubectl apply -f testapp01-svc.yaml
Vérifiez le résultat de l'application.
# kubectl get services testapp01-np
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
testapp01-np NodePort xx.xx.xx.xx <none> 8080:30080/TCP 4d2h
Créez un fichier manifeste pour Ipod comme suit.
testapp01.yaml
apiVersion: v1
kind: Pod
metadata:
name: testapp01
labels:
app:testapp01 ← Libellé de liaison avec les services
spec:
containers:
- name: testapp01-container
image: registry.test01.com/test/testapp01:dernière ← Image applicable
ports:
- containerPort:80 ← Port d'application utilisé dans le conteneur
imagePullSecrets:
- name:regcred ← Secret créé en préparation du déploiement
Appliquez le fichier ci-dessus.
# kubectl create -f testapp01.yaml
pod/testapp01 created
Assurez-vous que le pod est en cours d'exécution.
# kubectl get pod testapp01
NAME READY STATUS RESTARTS AGE
testapp01 1/1 Running 0 4s
Enfin, essayez d'accéder à l'application et vérifiez le fonctionnement. Cette fois, j'ai accédé à l'URL suivante à partir d'un navigateur externe et l'ai confirmée.
http://[podが起動しているノードのIP]:30080
L'enquête a pris beaucoup de temps car il était nécessaire de prendre des mesures en raison de l'utilisation du certificat auto-signé, mais il était relativement facile de lier GitLab, le registre de conteneurs et les K8.
Recommended Posts