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 zu Ihrer 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, um Kubernetes-Secrets zu erstellen und in der GDC-Konsole zu arbeiten. - Namespace-Administrator (
namespace-admin): Erforderlich, um Containerarbeitslasten in Ihrem Projekt bereitzustellen. - Namespace-Betrachter (
namespace-viewer): erforderlich, um Projekt- und Namespace-Ressourcen anzusehen. - 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. - Project NetworkPolicy Admin (
project-networkpolicy-admin): erforderlich, um Projektnetzwerkrichtlinien zu erstellen und zu verwalten.
- 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.Folgen Sie der Anleitung unter Harbor-Registrierungsinstanz erstellen, um eine Harbor-Registrierungsinstanz zu 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 mit Air Gap, um ein Image per Push an Harbor zu übertragen.
Hier ist ein Beispiel für einen Workflow, mit dem Daten aus GitLab abgerufen und in Harbor übertragen werden:
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 Netzwerkverkehr 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 über
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 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 --dnsTesten Sie den Dienst, indem Sie eine HTTP-Anfrage an http://${IP} senden:
curl http://${IP}