En esta página, se describe el proceso para subir una imagen de contenedor a Harbor y, luego, implementarla en tu instancia de zona de pruebas de GDC.
Preparación
Sigue las instrucciones en Conéctate a tu instancia para conectarte a tu instancia con acceso a la línea de comandos de Linux. Puedes conectarte a tu puerta de enlace a través de Escritorio remoto o ejecutar
sshuttleen tu máquina Linux.Pídele a tu administrador de IAM de la organización que te otorgue los siguientes roles a nivel del proyecto:
- Administrador de secretos (
secret-admin): Es necesario para operar en la consola de GDC. - Administrador de espacios de nombres (
namepspace-admin): Es necesario para implementar cargas de trabajo de contenedores en tu proyecto. - Administrador global de PNP (
global-project-networkpolicy-admin): Es necesario para crear y administrar políticas de red de proyectos en todas las zonas. - Visualizador de proyectos ()
project-viewer): Es necesario para acceder a la consola de GDC y a la CLI de Distributed Cloud. - Visualizador de instancias de Harbor (
harbor-instance-viewer): Es necesario para ver y seleccionar una instancia de Harbor. - Creador de proyectos de Harbor (
harbor-project-creator): Es necesario para acceder a un proyecto de Harbor y administrarlo.
- Administrador de secretos (
Configura las variables de entorno que se usarán en las siguientes instrucciones:
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.Para crear una instancia de registro de Harbor, sigue Crea una instancia de registro de Harbor, o puedes usar la instancia de Harbor de zona de pruebas creada previamente: la
user-projectpredeterminada en la zona de pruebas de GDC incluye una instancia de Harbor ya implementada, instancia,user-haas-instance, que se puede usar para el desarrollo.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
Sube la imagen a Harbor
Para crear un proyecto de Harbor, sigue los pasos que se indican en Crea un proyecto de Harbor.
Ejemplo:
gdcloud harbor harbor-projects create HARBOR_PROJECT \ --project=TENANT_PROJECT \ --instance=HARBOR_INSTANCE_NAMEAccede a Docker. Comienza en Accede a Docker o Helm con secretos de la CLI.
Descarga o compila tu imagen de contenedor y sigue las instrucciones de Google Distributed Cloud aislada del aire para enviar una imagen a Harbor.
Por ejemplo, este es un flujo de trabajo para extraer de GitLab y enviar a Harbor:
Accede y extrae de tu registro de contenedores de GitLab.
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}Envía la imagen de GitLab a Harbor:
export TAG=demo-image docker tag ${TAG} ${GITLAB_IMAGE_PATH} docker push ${INSTANCE_URL}/${HARBOR_PROJECT}/${TAG}
Implementa la app de contenedor
Continúa en Crea un secreto de extracción de imágenes de Kubernetes para crear un secreto e implementar tu app.
Crear una política de red
Crea una política de red para permitir todo el tráfico de red al proyecto del arrendatario:
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
Conéctate a la aplicación
Exporta la dirección IP del servicio:
export IP=`kubectl --kubeconfig=${KUBECONFIG} get service ${SERVICE_NAME} \ -n TENANT_PROJECT -o jsonpath='{.status.loadBalancer.ingress[*].ip}'`Para conectarte desde tu máquina local con
sshuttle, ejecuta el siguiente comando para crear un túnel SSH. Si tienes una sesión desshuttleexistente que creaste cuando te conectaste a tu instancia, debes finalizar esa sesión antes de ejecutar el siguiente comando: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 --dnsPara probar el servicio, envía una solicitud HTTP http://${IP}`:
curl http://${IP}