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
sshuttleauf Ihrem Linux-Computer ausführen.Bitten Sie Ihren IAM-Administrator der Organisation, Ihnen die folgenden Rollen auf Projektebene zuzuweisen:
- Secret-Administrator (
secret-admin): erforderlich für die Verwendung der GDC-Konsole. - Namespace-Administrator (
namepspace-admin): Erforderlich, um Containerarbeitslasten in Ihrem Projekt bereitzustellen. - Globaler PNP-Administrator (
global-project-networkpolicy-admin): Erforderlich, um Projektnetzwerkrichtlinien zonenübergreifend zu erstellen und zu verwalten. - Projektbetrachter (
project-viewer): erforderlich für den Zugriff auf die GDC-Konsole und die Distributed Cloud CLI. - Harbor Instance Viewer (
harbor-instance-viewer): erforderlich, um eine Harbor-Instanz anzusehen und auszuwählen. - Harbor Project Creator (
harbor-project-creator): Erforderlich für den Zugriff auf und die Verwaltung eines Harbor-Projekts.
- Secret-Administrator (
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-projectin 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_NAMEMelden 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-Umgebungen ohne Internetverbindung, um ein Image per Push an Harbor zu übertragen.
Hier ist ein Beispiel für 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-Secret zum Abrufen von Images erstellen fort, um ein Secret zu erstellen und Ihre App bereitzustellen.
Netzwerkrichtlinie erstellen
Erstellen Sie eine Netzwerkrichtlinie, die den gesamten Netzwerk-Traffic zum Mandantenprojekt zulässt:
kubectl --kubeconfig GLOBAL_API_KUBECONFIG -n TENANT_PROJECT \ create -f - <<EOF apiVersion: networking.gdc.goog/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
sshuttleherstellen 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 einer 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 --dnsTesten Sie den Dienst, indem Sie eine HTTP-Anfrage http://${IP}` senden:
curl http://${IP}