[LINUX] Versuchen Sie, einen Kubernetes-Pod aus einem GitLab Container Registry-Image zu erstellen

Hier sind die Schritte, die Sie ausführen müssen, wenn Sie versuchen, einen Kubernetes-Pod aus einem Image der Containerregistrierung von GitLab zu erstellen, um die Fähigkeiten zu erlernen. * Der rote Teil in der Abbildung unten. Das Bild, das zum Testen gezogen werden soll, enthält Nginx. k8s.png

Voraussetzungen

・ Kubernetes-Cluster wurde erstellt ・ GitLab wurde erstellt ・ Die Version der Umgebung, die ich ausprobiert habe, lautet wie folgt  CentOS:7.3  Kubernetes:1.18.2  Calico:3.13.3  Docker:1.13.1-109  GitLab:11.6.8

Referenzmaterial

https://docs.docker.com/registry/insecure/ https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/

1. Vorkonfiguration für Docker und K8s

Platzieren Sie zur Vorbereitung das Zertifikat und legen Sie die Zugriffsinformationen für die Containerregistrierung fest.

Platzierung des Zertifikats in Docker

Platzieren Sie ein Zertifikat, um von Docker aus auf die Containerregistrierung zuzugreifen.

Implementiert an jedem K8s-Knoten


# 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 ・ ・ ・ Zertifikat für den Zugriff auf die GitLab Container Registry

Docker nicht sichere Registrierungseinstellungen

Wenn es sich bei dem von Ihnen platzierten Zertifikat um ein selbstsigniertes Zertifikat handelt, müssen Sie Docker so konfigurieren, dass es zugelassen wird.

/etc/docker/daemon.json


{
  "insecure-registries": ["registry.test01.com"]
}

Starten Sie Docker neu, damit es wirksam wird.

systemctl restart docker

Registrierung der Zugriffsinformationen für die Containerregistrierung in K8s

Registrieren Sie die Informationen für den Zugriff auf die Containerregistrierung in K8s. Melden Sie sich zunächst von Docker aus bei der Containerregistrierung an.

k8s Masterknoten


#docker login registry.test01.com
Username: <Benutzername beim Zugriff auf die Containerregistrierung>
Password: <Passwort entsprechend dem obigen Benutzernamen>
Login Succeeded

Überprüfen Sie die Datei config.json, die durch die obige Anmeldung generiert wurde.

python


# cat ~/.docker/config.json
{
	"auths": {
		"registry.test01.com": {
			"auth": "***************************="
		}
	}

Erstellen Sie ein Geheimnis für die Clusterverbindung, die das Authentifizierungstoken enthält.

# kubectl create secret docker-registry regcred --docker-server=registry.test01.com --docker-username=<Benutzername der Containerregistrierung> --docker-password=<Benutzername der Containerregistrierungに対応するパスワード>
secret/regcred created

2. Erstellen Sie einen Pod, der das Image der Containerregistrierung verwendet

Legen Sie die Serviceeinstellungen für den Zugriff auf den Container über das Netzwerk und die Pod-Einstellungen fest, die das Container-Image verwenden.

Serviceeinstellungen (nodePort) für den Zugriff von außerhalb des Clusters

Erstellen Sie die Zugriffsinformationen zum Pod wie folgt. Verknüpfen Sie den externen 30080-Port mit dem Nginx-Port 80 auf der Containerseite.

testapp01-svc.yaml


apiVersion: v1
kind: Service
metadata:
  name: testapp01-np
spec:
  selector:
   app:testapp01 ← Ordne dies der Definition von pod zu
  ports:
  - targetPort:80 ← Containerempfangsport(nginx)
    port: 8080
    nodePort:30080 ← Port für den Zugriff von außen. "Node IP" beim Zugriff von außen:Geben Sie die hier angegebene Portnummer an.
    protocol: "TCP"
  type: NodePort

Wenden Sie die obige Datei an.

python


# kubectl apply -f testapp01-svc.yaml

Überprüfen Sie das Anwendungsergebnis.

# 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

Erstellen eines Pods mithilfe eines Abbilds der Containerregistrierung

Erstellen Sie eine Manifestdatei für Ipod wie folgt.

testapp01.yaml



apiVersion: v1
kind: Pod
metadata:
  name: testapp01
  labels:
    app:testapp01 ← Bezeichnung für die Verknüpfung mit Diensten
spec:
  containers:
  - name: testapp01-container
    image: registry.test01.com/test/testapp01:aktuelles ← Anwendbares Bild
    ports:
    - containerPort:80 ← Im Container verwendeter App-Port
  imagePullSecrets:
  - name:regcred ← Geheimnis zur Vorbereitung des Einsatzes erstellt

Wenden Sie die obige Datei an.

# kubectl create -f testapp01.yaml
pod/testapp01 created

Stellen Sie sicher, dass der Pod "läuft".

# kubectl get pod testapp01
NAME        READY   STATUS    RESTARTS   AGE
testapp01   1/1     Running   0          4s

Versuchen Sie abschließend, auf die App zuzugreifen, und überprüfen Sie den Vorgang. Dieses Mal habe ich über einen externen Browser auf die folgende URL zugegriffen und diese bestätigt.

http://[podが起動しているノードのIP]:30080

Zusammenfassung

Die Untersuchung dauerte lange, da aufgrund der Verwendung des selbstsignierten Zertifikats Maßnahmen ergriffen werden mussten, die Verknüpfung von GitLab, der Containerregistrierung und K8s jedoch relativ einfach war.

Recommended Posts

Versuchen Sie, einen Kubernetes-Pod aus einem GitLab Container Registry-Image zu erstellen
Versuchen Sie, mit Python3 eine Zeichenfolge aus einem Bild zu extrahieren
Machen Sie eine Santa-Kennung aus einem Santa-Bild
Versuchen Sie, mit Talking Head Anime aus einem einzigen Bild zu verschönern [Python-Vorbereitung]