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.
・ 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
https://docs.docker.com/registry/insecure/ https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
Platzieren Sie zur Vorbereitung das Zertifikat und legen Sie die Zugriffsinformationen für die Containerregistrierung fest.
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
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
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
Legen Sie die Serviceeinstellungen für den Zugriff auf den Container über das Netzwerk und die Pod-Einstellungen fest, die das Container-Image verwenden.
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 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
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