Conéctate a repositorios de Bitbucket Data Center alojados en una red privada

En esta página, se describe cómo conectarse a repositorios de Bitbucket Data Center alojados en una red privada con Developer Connect y el Directorio de servicios. Puedes completar estas tareas con la Google Cloud consola, o Google Cloud CLI.

Estas instrucciones son para desarrolladores de aplicaciones, administradores de plataformas y administradores de seguridad que desean usar repositorios de código fuente de Bitbucket Data Center con Google. En particular, puedes usar repositorios de Bitbucket Data Center con Gemini Code Assist.

Para obtener más información sobre Developer Connect, consulta Descripción general de Developer Connect.

Antes de comenzar

  1. Accede a tu cuenta de Google.

    Si todavía no tienes una cuenta, regístrate para obtener una nueva.

  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Developer Connect and Service Directory APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Developer Connect and Service Directory APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  8. Cuando habilitas Developer Connect, también se habilita la API de Secret Manager.

  9. Asegúrate de tener acceso a una cuenta en Bitbucket Data Center.

    Para ayudar a mantener seguro el trabajo de tu equipo, te recomendamos que completes las tareas de esta guía con una cuenta de bot o una cuenta compartida por tu equipo, no con una cuenta personal.

  10. Asegúrate de ser propietario de un repositorio de Bitbucket Data Center o de tener permisos de nivel de administrador en un repositorio compartido.
  11. Asegúrate de tener un recurso de servicio del Directorio de servicios para conectarte a redes privadas o crea un recurso de servicio del Directorio de servicios. Puedes crear el recurso de servicio del Directorio de servicios en el mismo proyecto que usas con Developer Connect o puedes usar un proyecto diferente.

    Para las conexiones a redes fuera de Google Cloud, es posible que debas configurar el Directorio de servicios de manera diferente. Consulta Usa el Directorio de servicios para llegar a hosts fuera de Google Cloud.

  12. Opcional: Crea una clave de encriptación administrada por el cliente (CMEK) para encriptar los secretos de autenticación que crea Developer Connect.
  13. Opcional: Para usar las instrucciones de línea de comandos de esta guía, completa los siguientes pasos:
    1. Instala la Google Cloud CLI. Si ya instalaste gcloud CLI, asegúrate de tener la última versión disponible ejecutando gcloud components update.
    2. Ejecuta el siguiente comando para crear una cuenta de servicio de Developer Connect, en el que PROJECT_ID es el Google Cloud ID del proyecto:
              gcloud beta services identity create \
                  --service=developerconnect.googleapis.com \
                  --project=PROJECT_ID
              

Roles obligatorios

Para obtener los permisos que necesitas para crear conexiones y vínculos, pídele a tu administrador que te otorgue los siguientes roles de IAM:

Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.

Otorga permisos para usar el Directorio de servicios

Completa los siguientes pasos para permitir que Developer Connect use el Directorio de servicios y que el Directorio de servicios acceda a tu recurso de red de VPC.

  1. Ejecuta los siguientes comandos para otorgar permisos a la cuenta de servicio de Developer Connect para usar el Directorio de servicios:

    PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)")
    
    SERVICE_ACCOUNT="service-${PROJECT_NUMBER}@gcp-sa-devconnect.iam.gserviceaccount.com"
    
    gcloud projects add-iam-policy-binding SERVICE_DIRECTORY_RESOURCE_PROJECT_ID \
        --member="serviceAccount:${SERVICE_ACCOUNT}" \
        --role="roles/servicedirectory.viewer"
    

    Reemplaza lo siguiente:

    • PROJECT_ID: Es el ID del Google Cloud proyecto de.
    • SERVICE_DIRECTORY_RESOURCE_PROJECT_ID: Es el ID del proyecto que contiene el Google Cloud recurso de servicio del Directorio de servicios.
  2. Otorga permisos al Directorio de servicios para acceder a tu recurso de red de VPC. El recurso de red puede estar en un proyecto diferente.

    gcloud projects add-iam-policy-binding NETWORK_RESOURCE_PROJECT_ID \
        --member="serviceAccount:${SERVICE_ACCOUNT}" \
        --role="roles/servicedirectory.pscAuthorizedService"
    

    Reemplaza NETWORK_RESOURCE_PROJECT_ID por el ID del proyecto que contiene el recurso de red de VPC.

Usa el Directorio de servicios para llegar a hosts fuera de Google Cloud

El Directorio de servicios usa el rango de direcciones IP 35.199.192.0/19 para conectar tu host fuera de Google Cloud. Debes agregar este rango a una lista de entidades permitidas en tu firewall. Además, tu red privada debe configurarse para enrutar este rango a través de la conexión de Cloud VPN o Cloud Interconnect.

Si tu conexión usa un Cloud Router, puedes configurarla para que comunique el rango a tu red privada.

Para obtener más información, consulta Configura el acceso privado a la red.

Usa Cloud Load Balancing para llegar a hosts fuera de Google Cloud

Si la configuración de tu red no te permite enrutar el rango de direcciones IP del Directorio de servicios 35.199.192.0/19 a la Cloud VPN o Cloud Interconnect, puedes crear un balanceador de cargas con Cloud Load Balancing que dirija el tráfico a tu host.

Cuando crees el extremo del Directorio de servicios, asegúrate de usar la dirección IP de la regla de reenvío del balanceador de cargas en lugar de la dirección IP de tu host. Puedes usar un balanceador de cargas de HTTPS interno o un balanceador de cargas de protocolo de control de transmisión (TCP) interno cuando crees tu extremo.

Cuando crees tu balanceador de cargas de TCP, ten en cuenta lo siguiente:

  • Solo se requiere un grupo de extremos de red (NEG) de conectividad híbrida para llegar a tu host.
  • El balanceador de cargas de TCP no requiere la clave privada sin encriptar para tu certificado SSL.
  • La configuración de Cloud VPN debe usar Cloud Router con enrutamiento dinámico global. Si tu Cloud VPN usa enrutamiento estático, puedes usar un proxy que use Cloud Service Mesh en su lugar. Para obtener más información, consulta Configura los servicios de borde de red para implementaciones híbridas.

Para obtener más información sobre cómo crear un balanceador de cargas de HTTPS, consulta Configura un balanceador de cargas de aplicaciones interno con conectividad híbrida. Para obtener más información sobre cómo crear un balanceador de cargas de TCP, consulta Configura un balanceador de cargas de red del proxy interno regional con conectividad híbrida.

Crea tokens de acceso

Para crear tokens de acceso personal en Bitbucket Data Center, completa los siguientes pasos:

  1. Accede a Bitbucket Data Center.

  2. Sigue las instrucciones de la documentación de Bitbucket Data Center para crear dos tokens de acceso HTTP y otorgar los siguientes permisos.

    Developer Connect admite tokens de acceso de usuario, proyecto y repositorio.

    • Crea un token con el permiso repository admin. En Developer Connect, este token se denomina token de acceso de administrador.
    • Crea un token con el permiso repository read. En Developer Connect, este token se denomina token de acceso de lectura.

    Eres responsable de administrar los períodos de existencia de los tokens de Bitbucket Data Center en Bitbucket Data Center. Para proteger tu código fuente, puedes establecer una fecha de vencimiento durante la creación del token. Si no estableces una fecha de vencimiento, el token seguirá siendo válido hasta que lo revoques en Bitbucket Data Center.

  3. Copia los tokens de acceso para usarlos en los siguientes procedimientos.

Crear una conexión

En esta sección, se describe cómo crear una conexión entre Developer Connect y Bitbucket Data Center. Si usas la Google Cloud consola, también puedes comenzar a agregar vínculos a los repositorios cuando termines de configurar la conexión.

Para crear una conexión nueva de Bitbucket Data Center, selecciona una de las siguientes opciones:

Console

Para iniciar una conexión, completa los siguientes pasos:

  1. En la Google Cloud consola, abre Developer Connect.

    Ir a Developer Connect

    Developer Connect muestra la página Repositorios de Git.

    • Si ves una lista de proveedores de administración de código fuente: Para comenzar a configurar tu primera conexión, selecciona un proveedor de administración de código fuente. Haz clic en Conectar en la tarjeta de Bitbucket Data Center.
    • Si ves una tabla con las conexiones existentes: Para configurar el proveedor de administración de código fuente, haz clic en Crear conexión > Bitbucket Data Center.

      Se abrirá la página Crear conexión.

  2. En Región, elige una región para los recursos de conexión.

    1. En Nombre, ingresa un nombre para la conexión nueva.
  3. En la sección Tokens de acceso, ingresa tus tokens de acceso de Bitbucket Data Center:

    • Token de acceso de administrador: Ingresa el token con el acceso de permiso de administrador de repositorios.

    • Token de acceso de lectura: Ingresa el token con el acceso de permiso de lectura de repositorios.

  4. En URL del host, ingresa la URL del host al que deseas conectarte.

  5. Haz clic en Mostrar más para ver la configuración opcional.

    1. La casilla de verificación Habilitar el proxy de Developer Connect está seleccionada de forma predeterminada para que Developer Connect pueda actuar como proxy para las llamadas de Git a Bitbucket Data Center.

    2. En la sección Herramientas de redes, en Tipo de red, elige Red privada.

    3. En Certificado de CA, haz clic en Explorar para subir tu certificado autofirmado.

      El certificado no debe superar los 10 KB de tamaño y debe estar en formato PEM (.pem, .cer o .crt). Si dejas esta sección en blanco, se usará un conjunto de certificados predeterminado en su lugar.

    4. En la sección Servicio del Directorio de servicios, selecciona la ubicación de tu servicio:

      • En el proyecto your-project
      • En otro proyecto
      • Ingresar manualmente

      Si seleccionas En otro proyecto o Ingresar manualmente, especifica el Google Cloud ID del proyecto. Selecciona el proyecto en el menú desplegable o ingresa el ID del proyecto de forma manual.

    5. Región: Selecciona la región de tu servicio del Directorio de servicios. La región especificada para tu servicio debe coincidir con la región asociada a tu conexión.

    6. Espacio de nombres: Selecciona el espacio de nombres de tu servicio del Directorio de servicios.

    7. Servicio: Selecciona el nombre del servicio del Directorio de servicios en tu espacio de nombres.

    8. Opcional: En la sección Encriptación, selecciona una clave de CMEK para encriptar los secretos de Secret Manager que crea Developer Connect.

  6. Haz clic en el botón Continuar. Developer Connect crea tu conexión. Este proceso puede tardar unos segundos.

Una vez que se crea la conexión, aparece la página Vincular repositorios.

Completa los siguientes pasos para vincular repositorios a tu conexión:

  1. En la lista de repositorios disponibles, selecciona los que deseas usar.

  2. Haz clic en Aceptar.

  3. Haz clic en Vincular.

Tu conexión se agrega a la página Conexiones y los vínculos de tu repositorio se agregan a la página Repositorios en la Google Cloud consola. Puedes agregar más vínculos a las conexiones existentes en cualquier momento.

Si estás configurando Gemini Code Assist, continúa el proceso siguiendo los pasos que se indican en Configura y usa la personalización de código de Gemini Code Assist.

gcloud

  1. Ejecuta el siguiente comando para crear un secreto de webhook en Secret Manager, en el que WEBHOOK_SECRET_NAME es un nombre para tu secreto de webhook:

    cat /proc/sys/kernel/random/uuid | tr -d '\n' | gcloud secrets create WEBHOOK_SECRET_NAME
    
  2. Ejecuta los siguientes comandos para almacenar tus tokens de acceso en Secret Manager:

    gcloud secrets create ADMIN_SECRET_NAME
    
    echo -n ADMIN_SECRET_DATA | gcloud secrets versions add ADMIN_SECRET_NAME --data-file=-
    
    gcloud secrets create READ_SECRET_NAME
    
    echo -n READ_SECRET_DATA | gcloud secrets versions add READ_SECRET_NAME --data-file=-
    

    Reemplaza lo siguiente:

    • ADMIN_SECRET_NAME: Es un nombre para el secreto que almacena tu token de acceso de administrador.
    • ADMIN_SECRET_DATA: Es tu token de acceso de administrador.
    • READ_SECRET_NAME: Es un nombre para el secreto que almacena tu token de acceso de lectura.
    • READ_SECRET_DATA: Es tu token de acceso de lectura.
  3. Ejecuta el gcloud developer-connect connections create comando para crear una conexión a Bitbucket Data Center:

    gcloud developer-connect connections create CONNECTION_NAME \
        --location=REGION \
        --bitbucket-data-center-config-host-uri=HOST_URI \
        --bitbucket-data-center-config-authorizer-credential-user-token-secret-version=projects/PROJECT_ID/secrets/ADMIN_SECRET_NAME/versions/VERSION \
        --bitbucket-data-center-config-read-authorizer-credential-user-token-secret-version=projects/PROJECT_ID/secrets/READ_SECRET_NAME/versions/VERSION \
        --bitbucket-data-center-config-webhook-secret-version=projects/PROJECT_ID/secrets/WEBHOOK_SECRET_NAME/versions/VERSION
        --git-proxy-config-enabled
    

    Reemplaza lo siguiente:

    • CONNECTION_NAME: Es un nombre para tu conexión.
    • REGION: Es la región que se usará para tu conexión.
    • HOST_URI: Es el URI de tu host de Bitbucket Data Center incluido el prefijo https://.
    • PROJECT_ID: Es el Google Cloud ID del proyecto.
    • ADMIN_SECRET_NAME: Es el nombre del secreto de Secret Manager que contiene tu token de acceso de administrador.
    • READ_SECRET_NAME: Es el nombre del secreto de Secret Manager que contiene tu token de acceso de lectura.
    • WEBHOOK_SECRET_NAME: Es el nombre del secreto de Secret Manager que contiene tu secreto de webhook.
    • VERSION: Es el número de versión de cada secreto. Puede ser latest para usar el número de versión más reciente.
    • --git-proxy-config-enabled es una marca opcional que permite que Developer Connect actúe como proxy para las llamadas de Git a Bitbucket Data Center. Debes habilitar esta función cuando ejecutes la personalización de código de Gemini Code Assist en repositorios de código fuente de Bitbucket Data Center alojados en redes privadas.
    • --github-enterprise-config-ssl-ca-certificate es una marca opcional para agregar un certificado SSL en el formato $HOME/my-ssl-ca.txt.

    Developer Connect completa la conexión a Bitbucket Data Center. A continuación, vincula los repositorios.

Una vez que hayas establecido una conexión con Bitbucket Data Center, podrás vincular los repositorios. Puedes repetir estos pasos más adelante para vincular repositorios adicionales según sea necesario.

Para crear vínculos de repositorio en una conexión existente de Bitbucket Data Center, selecciona una de las siguientes opciones:

Console

Para crear vínculos a repositorios, completa los siguientes pasos:

  1. Abre la página Repositorios en la Google Cloud consola.

    Abrir la página Repositorios

  2. Haz clic en Vincular repositorio.

    Se abrirá el panel Vincular repositorios de Git.

  3. En la lista de conexiones, elige una conexión.

  4. Haz clic en Continuar.

  5. En la lista de repositorios, selecciona los repositorios a los que deseas vincularte.

  6. Haz clic en Crear.

    Developer Connect crea los vínculos de repositorio y los muestra en la Google Cloud consola.

gcloud

Ejecuta el siguiente comando para crear un vínculo a tu repositorio de Bitbucket Data Center:

gcloud developer-connect connections git-repository-links create REPO_NAME \
    --clone-uri=REPO_URI \
    --connection=CONNECTION_NAME \
    --location=REGION

Reemplaza lo siguiente:

  • REPO_NAME: Es un nombre para el vínculo nuevo entre Developer Connect y tu repositorio de Bitbucket Data Center.
  • REPO_URI: Es la URL de tu repositorio en Bitbucket Data Center, incluido el prefijo https:// y el sufijo .git.
  • CONNECTION_NAME: Es el nombre de tu conexión a Bitbucket Data Center.
  • REGION: Es la región de tu conexión.

Developer Connect crea los vínculos de repositorio.

Para mostrar los repositorios vinculados, ejecuta el developer-connect connections git-repository-linkslist comando.

Si estás configurando Gemini Code Assist, continúa el proceso siguiendo los pasos que se indican en Configura y usa la personalización de código de Gemini Code Assist.

¿Qué sigue?