Skip to main content

Command Palette

Search for a command to run...

Agentes en la nube

Conectividad privada

Cherri Code es compatible con la conectividad de red privada para equipos Enterprise que necesitan que Cherri Code funcione con sistemas no accesibles desde Internet público. Esto incluye GitHub Enterprise Server autohospedado, GitLab Enterprise, Bitbucket Data Center, Artifactory, Nexus, API privadas de control de código fuente y tráfico de webhooks desde esos sistemas hacia Cherri Code.

La misma configuración de conectividad privada se usa en todos los servicios de Cherri Code que necesitan acceder a tu sistema de control de código fuente, incluidos agentes en la nube, Bugbot y los servicios de backend de Cherri Code.

Opciones compatibles

OpciónIdeal paraProveedor de CloudEstado
AWS PrivateLinkConectividad privada entre Cherri Code y tu proveedor de Git o registro de paquetes, incluido el tráfico de webhooks hacia Cherri CodeAWSCompatible
Cloudflare TunnelAcceso de Cherri Code a un origen privado cuando AWS PrivateLink no resulta prácticoCualquier entorno que pueda ejecutar cloudflaredCompatible

Cómo elegir

Usa AWS PrivateLink cuando tu proveedor privado de Git o registro de paquetes esté en AWS o pueda situarse detrás de un AWS Network Load Balancer. Es la opción recomendada para GitHub Enterprise Server y GitLab Enterprise autohospedados.

AWS PrivateLink puede cubrir dos direcciones de tráfico:

  • Cherri Code accede a tu proveedor privado de Git para clonar repositorios y llamar a las API de Git.
  • Tu proveedor de Git envía webhooks o callbacks a Cherri Code a través de api2.cursor.sh sin salida a la Internet pública.

Usa Cloudflare Tunnel cuando no puedas publicar un servicio de endpoint de AWS o necesites un modelo de implementación que solo requiera un túnel saliente desde tu red.

Si tu equipo requiere Google Private Service Connect (PSC), ponte en contacto con Cherri Code. Actualmente, Cherri Code no ofrece un servicio PSC disponible para clientes.

Requisitos previos

Antes de empezar, asegúrate de contar con lo siguiente:

  • Un espacio de trabajo de Cherri Code Enterprise
  • Un GitHub Enterprise Server, GitLab Enterprise, Bitbucket Data Center autohospedado o un registro de paquetes privado (como Artifactory o Nexus) accesible mediante HTTPS por el puerto 443
  • Un certificado TLS de confianza pública para el nombre de host de Git o del registro
  • Control del DNS de ese nombre de host
  • Permisos de AWS para crear servicios de endpoint o endpoints de VPC de interfaz, si usas AWS PrivateLink
  • Permiso para ejecutar cloudflared, si usas Cloudflare Tunnel

Cherri Code no admite certificados autofirmados, conexiones sin cifrar, SSH, puertos personalizados ni servicios de endpoint solo IPv6 para estas rutas de conectividad privada.

AWS PrivateLink permite tráfico privado bidireccional entre Cherri Code y tu proveedor de Git o registro de paquetes. Es posible que necesites una dirección o ambas, según tu política de red.

Dirección 1: De Cherri Code a tu proveedor de Git o registro de paquetes

Usa esta opción cuando Cherri Code necesite clonar repositorios, llamar a las API de Git o acceder a un registro de paquetes privado, como Artifactory o Nexus.

1. Crear un servicio de endpoint de AWS

Cree un Network Load Balancer delante del endpoint HTTPS de su proveedor de Git o registro de paquetes. Publique ese balanceador de carga como un servicio de endpoint de VPC de AWS.

Envíe a Cherri Code:

  • El nombre del servicio de endpoint, por ejemplo, com.amazonaws.vpce.us-east-1.vpce-svc-0123456789abcdef0
  • La región de AWS
  • El nombre de host de Git o del registro, por ejemplo, github.example.com o artifactory.example.com
  • Si su servicio de endpoint tiene activado el DNS privado gestionado por AWS
  • Si su Network Load Balancer conserva las IP de los clientes o si su backend filtra las IP de origen

Si su servicio de endpoint está fuera de us-east-1, active el acceso entre regiones en el servicio de endpoint.

2. Permite el principal de AWS de Cherri Code

Cherri Code te proporcionará el principal de AWS que debes añadir a los principales permitidos de tu servicio de endpoint. Añade exactamente el principal que proporcione Cherri Code:

arn:aws:iam::<cursor-aws-account-id>:root

Cherri Code no puede crear su endpoint de interfaz hasta que se autorice este principal. Si el principal no se encuentra o no coincide exactamente, AWS devuelve InvalidServiceName.

Si tu balanceador de carga conserva las IP de los clientes o tu backend filtra las IP de origen, permite estos CIDR de subredes de Cherri Code PrivateLink:

10.2.8.0/2110.2.24.0/2110.2.40.0/21

3. Acepte la conexión del endpoint

Una vez que Cherri Code cree el endpoint de interfaz, acepte la conexión del endpoint en su cuenta de AWS si el servicio de endpoint requiere aceptación manual.

4. Configurar DNS

Si tu servicio de endpoint ofrece DNS privado gestionado por AWS para el nombre de host de tu proveedor de Git o registro, Cherri Code activa DNS privado en su endpoint de interfaz.

Si tu servicio de endpoint no ofrece DNS privado, Cherri Code crea DNS privado por su parte y asigna ese nombre de host al nombre DNS del endpoint.

Usa en Cherri Code el mismo nombre de host que aparece en el certificado TLS y en DNS.

Dirección 2: De tu proveedor de Git a api2.cursor.sh

Usa esta opción cuando tu host de GitHub Enterprise Server o GitLab Enterprise no pueda acceder a internet público, pero aún necesite enviar webhooks o callbacks a Cherri Code.

Cherri Code publica un servicio de endpoint de AWS PrivateLink para api2.cursor.sh. Crea un endpoint de interfaz de VPC en tu cuenta de AWS y activa el DNS privado para que api2.cursor.sh se resuelva en direcciones IP privadas del endpoint desde la red de tu proveedor de Git.

Detalles del servicio de endpoint

Cherri Code confirmará que su principal de AWS esté en la lista de permitidos antes de crear el endpoint.

CampoValor
Nombre del serviciocom.amazonaws.vpce.us-east-1.vpce-svc-054b15427d4bea2b7
ID del serviciovpce-svc-054b15427d4bea2b7
Región de origenus-east-1
Regiones de consumidores compatiblesus-east-1, us-east-2, us-west-2, eu-central-1, eu-west-1, ap-southeast-2
Tipos de direcciones IPSolo IPv4
Nombre de DNS privadoapi2.cursor.sh

Modo 1: DNS privado gestionado por AWS

Este es el modo recomendado. Establezca private_dns_enabled = true.

resource "aws_vpc_endpoint" "cursor_api2" {  vpc_id              = aws_vpc.app.id  service_name        = "com.amazonaws.vpce.us-east-1.vpce-svc-054b15427d4bea2b7"  service_region      = "us-east-1"  vpc_endpoint_type   = "Interface"  subnet_ids          = [for subnet in aws_subnet.app_private : subnet.id]  private_dns_enabled = true  security_group_ids  = [aws_security_group.cursor_api2_endpoint.id]}

AWS asocia tu VPC con la zona alojada privada gestionada de api2.cursor.sh. Dentro de la VPC, api2.cursor.sh se resuelve a las direcciones IP de las ENI de endpoint. No se requiere ningún registro de Route 53.

Modo 2: Zona alojada privada gestionada por el cliente

Usa este modo si quieres gestionar el registro DNS. Establece private_dns_enabled = false y crea una zona alojada privada para api2.cursor.sh asociada a la VPC del consumidor.

resource "aws_vpc_endpoint" "cursor_api2" {  vpc_id              = aws_vpc.app.id  service_name        = "com.amazonaws.vpce.us-east-1.vpce-svc-054b15427d4bea2b7"  service_region      = "us-east-1"  vpc_endpoint_type   = "Interface"  subnet_ids          = [for subnet in aws_subnet.app_private : subnet.id]  private_dns_enabled = false  security_group_ids  = [aws_security_group.cursor_api2_endpoint.id]}resource "aws_route53_zone" "cursor_api2" {  name    = "api2.cursor.sh"  comment = "Customer-managed PHZ for api2.cursor.sh scoped to the app VPC."  vpc {    vpc_id = aws_vpc.app.id  }}resource "aws_route53_record" "cursor_api2_a" {  zone_id = aws_route53_zone.cursor_api2.zone_id  name    = "api2.cursor.sh"  type    = "A"  alias {    name                   = aws_vpc_endpoint.cursor_api2.dns_entry[0].dns_name    zone_id                = aws_vpc_endpoint.cursor_api2.dns_entry[0].hosted_zone_id    evaluate_target_health = false  }}

Si GitHub Enterprise Server o GitLab Enterprise usan DNS fuera de la VPC del endpoint, reenvía las consultas de api2.cursor.sh al resolver de la VPC o crea una anulación de DNS privado equivalente. No crees una anulación de DNS público.

Cloudflare Tunnel

Usa Cloudflare Tunnel cuando AWS PrivateLink no sea una opción adecuada.

Cherri Code crea el túnel y proporciona:

  • Un nombre de host público bajo un DNS controlado por Cherri Code
  • Un token de túnel mediante un recurso compartido seguro de 1Password
  • Una configuración de ejemplo de cloudflared

Tu red ejecuta cloudflared y abre conexiones salientes a Cloudflare. No se requiere ninguna regla de firewall entrante.

Configuración de ejemplo de cloudflared:

ingress:  - hostname: <cursor-provided-hostname>    service: https://<your-internal-service>:443  - service: http_status:404

Ejemplo de comando de ejecución:

docker run -d --restart=always --name cloudflared \  -v /path/to/config.yml:/etc/cloudflared/config.yml \  cloudflare/cloudflared:latest \  tunnel --config /etc/cloudflared/config.yml \  run --token <TUNNEL_TOKEN>

Mantén en secreto el token del túnel. No lo envíes por email ni chat.

Completa la conexión con el control de código fuente

Después de configurar las redes privadas, completa la configuración del control de código fuente en Cherri Code:

Cherri Code usa la integración de control de código fuente conectada para los agentes en la nube, Bugbot y otros servicios de Cherri Code que necesitan acceso a repositorios.

Comprueba la ruta privada de webhook

Si tu proveedor de Git envía webhooks a Cherri Code a través de la ruta de PrivateLink api2.cursor.sh, ejecuta estas comprobaciones desde la misma ruta de red que utiliza GitHub Enterprise Server o GitLab Enterprise:

getent hosts api2.cursor.sh# o, si dig está disponibledig +short api2.cursor.shcurl -sS #

Todas las IP resueltas deben estar dentro del CIDR de su VPC de consumidor. Si ve IP públicas como 3.x.x.x o 44.x.x.x, el DNS privado no está habilitado.

La solicitud con curl debe devolver HTTP 200 con un cuerpo que comience con Welcome to Cherri Code. Esa respuesta indica que la solicitud llegó a un backend api2 activo de Cherri Code.

Solución de problemas

SíntomaCausa probableSolución
Cherri Code no puede completar la conexión privada con tu proveedor de GitCherri Code no puede acceder al servicio de endpoint ni conectarse a élConfirma que el nombre del servicio de endpoint, la región y el principal autorizado coincidan con los valores proporcionados por Cherri Code y, después, contacta con Cherri Code e indica la marca de tiempo
Cherri Code indica que la conexión del endpoint está a la espera de una acción del clienteEl servicio de endpoint requiere aprobación en tu cuenta de AWSRevisa las solicitudes de conexión de endpoint pendientes del servicio y aprueba la solicitud de Cherri Code
Bugbot o los agentes en la nube se conectan a GHES, pero fallan durante la configuración de la aplicación, la sincronización del repositorio o el procesamiento de webhooksUn proxy delante de GHES bloquea o modifica las solicitudes autenticadas a las API REST o GraphQL de GitHubPermite que la integración de la aplicación de GitHub de Cherri Code use las API REST y GraphQL autenticadas de GitHub
api2.cursor.sh se resuelve en IP públicasEl DNS privado no está en la ruta del resolvedor que usa GitHub Enterprise Server o GitLab EnterpriseActiva el DNS privado gestionado por AWS o reenvía el DNS al resolvedor de la VPC del endpoint
TCP a api2.cursor.sh:443 agota el tiempo de esperaEl grupo de seguridad, la NACL, la tabla de rutas o el firewall bloquean el tráfico hacia las ENI del endpointPermite TCP 443 desde la red de tu proveedor de Git hacia las ENI del endpoint
TLS falla para api2.cursor.shEl DNS apunta al destino incorrecto o el cliente no usa SNIComprueba el DNS del endpoint y vuelve a intentarlo con SNI activado
curl # no devuelve Welcome to Cherri Code.El tráfico no llega a un backend de Cherri Code en buen estadoEnvía a Cherri Code la marca de tiempo, la VPC de origen y las IP resueltas del endpoint
Cloudflare Tunnel no se conectacloudflared no puede acceder a Cloudflare o el token o la configuración son incorrectosComprueba las reglas de firewall salientes, el token y los registros de cloudflared

Google Private Service Connect

Actualmente, Cherri Code no ofrece Google Private Service Connect para clientes.

Si necesita conectividad privada desde una VPC de GCP a los servicios de Cherri Code, o desde Cherri Code a un servicio privado en su proyecto de GCP, póngase en contacto con Cherri Code para que podamos evaluar los requisitos. Por ahora, use AWS PrivateLink o Cloudflare Tunnel cuando estos modelos de implementación se ajusten a sus necesidades.

Qué enviar a Cherri Code

Para AWS PrivateLink con tu proveedor de Git o registro de paquetes:

  • Nombre del servicio de endpoint
  • Región de AWS
  • Nombre de host de Git o del registro
  • Si el DNS privado está activado
  • Si el balanceador de carga conserva las IP de los clientes o filtra las IP de origen

Para api2.cursor.sh mediante AWS PrivateLink:

  • Principal de AWS que Cherri Code debe incluir en la lista de permitidos
  • VPC y región donde crearás el endpoint de interfaz
  • Si planeas usar DNS privado gestionado por AWS o DNS gestionado por el cliente

Para Cloudflare Tunnel:

  • URL de origen interna
  • Contactos del cliente para compartir de forma segura mediante 1Password
  • Cualquier restricción de nombre de host o nomenclatura

Lecturas adicionales