Auf dieser Seite wird beschrieben, wie Sie ein Container-Image in Harbor hochladen und in Ihrer GDC Sandbox-Instanz bereitstellen.
Vorbereitung
Folgen Sie der Anleitung unter Verbindung zur Instanz herstellen, um eine Verbindung zu Ihrer Instanz mit Linux-Befehlszeilenzugriff herzustellen. Sie können über Remote Desktop eine Verbindung zu Ihrem Gateway herstellen oder
sshuttle
auf Ihrem Linux-Computer ausführen.Achten Sie darauf, dass dem Nutzer auf Projektebene die Rollen
secret-admin
,namespace-admin
,global-pnp-admin
undproject-viewer
zugewiesen sind.Legen Sie Umgebungsvariablen fest, die in der folgenden Anleitung verwendet werden:
export TENANT_PROJECT=TENANT_PROJECT # Intended deployment project for the container workflow. export HARBOR_INSTANCE_NAME=HARBOR_INSTANCE_NAME # Harbor Container Registry instance name. export HARBOR_PROJECT=HARBOR_PROJECT # Container registry project name for your images. export AO_USER=AO_USER # Your user name in the instance, e.g.: fop-my-user@example.com. export INSTANCE_URL=${HARBOR_INSTANCE_NAME}-${TENANT_PROJECT}.org-1.zone1.google.gdch.test. export DOCKER_CONFIG_PATH=DOCKER_CONFIG_PATH # Path to docker config file e.g.: /root/.docker/config.json.
Wenn Sie eine Harbor-Registrierungsinstanz erstellen möchten, folgen Sie der Anleitung unter Harbor-Registrierungsinstanz erstellen. Alternativ können Sie die vorkonfigurierte Sandbox-Harbor-Instanz verwenden: Die Standard-
user-project
in der GDC-Sandbox enthält bereits eine bereitgestellte Harbor-Instanz,user-haas-instance
, die für die Entwicklung verwendet werden kann.export HARBOR_INSTANCE_NAME=user-haas-instance export TENANT_PROJECT=user-project export INSTANCE_URL=${HARBOR_INSTANCE_NAME}-${TENANT_PROJECT}.org-1.zone1.google.gdch.test
Bild in Harbor hochladen
Erstellen Sie ein Harbor-Projekt, indem Sie der Anleitung unter Harbor-Projekt erstellen folgen.
Beispiel:
gdcloud harbor harbor-projects create HARBOR_PROJECT \ --project=TENANT_PROJECT \ --instance=HARBOR_INSTANCE_NAME
Melden Sie sich bei Docker an. Beginnen Sie mit Mit CLI-Secrets bei Docker oder Helm anmelden.
Laden Sie Ihr Container-Image herunter oder erstellen Sie es und folgen Sie der Anleitung für Google Distributed Cloud in Umgebungen ohne Internetverbindung, um ein Image per Push an Harbor zu übertragen.
Hier sehen Sie beispielsweise einen Workflow zum Pullen aus GitLab und zum Pushen in Harbor:
Melden Sie sich an und rufen Sie Daten aus Ihrer GitLab-Containerregistrierung ab.
export GITLAB_ID=GITLAB_ID export GITLAB_PROJECT_NAME=GITLAB_PROJECT_NAME export GITLAB_IMAGE_PATH=registry.gitlab.com/GITLAB_ID/GITLAB_PROJECT_NAME docker login registry.gitlab.com docker pull ${GITLAB_IMAGE_PATH}
Übertragen Sie das GitLab-Image per Push in Harbor:
export TAG=demo-image docker tag ${TAG} ${GITLAB_IMAGE_PATH} docker push ${INSTANCE_URL}/${HARBOR_PROJECT}/${TAG}
Container-App bereitstellen
Fahren Sie mit Kubernetes-Image-Pull-Secret erstellen fort, um ein Secret zu erstellen und Ihre App bereitzustellen.
Netzwerkrichtlinie erstellen
Erstellen Sie eine Netzwerkrichtlinie, um den gesamten Netzwerk-Traffic zum Mandantenprojekt zuzulassen:
kubectl --kubeconfig GLOBAL_API_KUBECONFIG -n TENANT_PROJECT \ create -f - <<EOF apiVersion: networking.k8s.io/v1 kind: ProjectNetworkPolicy metadata: annotations: name: allow-all spec: ingress: - from: - ipBlock: cidr: 0.0.0.0/0 podSelector: {} policyTypes: - Ingress EOF
Verbindung zur Anwendung herstellen
Exportieren Sie die IP-Adresse für den Dienst:
export IP=`kubectl --kubeconfig=${KUBECONFIG} get service ${SERVICE_NAME} \ -n TENANT_PROJECT -o jsonpath='{.status.loadBalancer.ingress[*].ip}'`
Wenn Sie von Ihrem lokalen Computer aus eine Verbindung mit
sshuttle
herstellen möchten, führen Sie den folgenden Befehl aus, um einen SSH-Tunnel zu erstellen. Wenn Sie eine vorhandenesshuttle
-Sitzung haben, die Sie beim Herstellen der Verbindung zu Ihrer Instanz erstellt haben, müssen Sie diese Sitzung beenden, bevor Sie den folgenden Befehl ausführen:sshuttle -r zone1-org-1-data@GDC_SANDBOX_INSTANCE_NAME --no-latency-control \ --ssh-cmd 'gcloud compute ssh --project PROJECT_NAME --zone ZONE --tunnel-through-iap' \ 10.200.0.0/16 --dns
Testen Sie den Dienst, indem Sie eine HTTP-Anfrage http://${IP}` senden:
curl http://${IP}