Skip to main content

Configurar el caché de un repositorio

Puedes configurar la caché de un repositorio para GitHub Enterprise Server creando una instancia nueva, conectando la caché del repositorio a tu instancia primaria y configurando la replicación de redes del repositorio a la caché del repositorio.

Acerca de la configuración para el almacenamiento en caché de repositorio

Ahora puedes configurar el almacenamiento de repositorios en caché si creas un tipo especial de réplica llamado caché de repositorio. Entonces, puedes configurar las políticas de ubicación de datos que rijan qué redes de repositorio se replican en el caché del mismo.

El caché de repositorio no es compatible con el clústering.

DNS para cachés de repositorio

La instancia principal y el caché de repositorio deben tener nombres de DNS diferentes. Por ejemplo, si la instancia principal está en github.example.com, puedes decidir llamar europe-ci.github.example.com o github.asia.example.com a una memoria caché.

Para que las máquinas de CI realicen capturas desde la memoria caché del repositorio en lugar de la instancia principal, puedes usar la opción de configuración url.<base>.insteadOf de Git. Para más información, vea git-config en la documentación de Git.

Por ejemplo, el .gitconfig global para la máquina de CI incluiría estas líneas.

[url "https://europe-ci.github.example.com/"]
    insteadOf = https://github.example.com/

Después, cuando se le solicite que capture https://github.example.com/myorg/myrepo, Git capturará desde https://europe-ci.github.example.com/myorg/myrepo.

Configurar el caché de un repositorio

  1. Configura una instancia de GitHub Enterprise Server nueva en la plataforma que desees. Esta instancia será tu caché de repositorio. Para más información, consulta Configurar una instancia del servidor de GitHub Enterprise.

  2. Establece una contraseña de administrador que coincida con la contraseña del aparato principal y continúa.

  3. Haga clic en Configurar como réplica.

  4. En "Agregar nueva clave SSH", escribe tu clave SSH.

  5. Haga clic en Add key.

  6. Conéctate a la dirección IP del caché de tu repositorio utilizando SSH.

    ssh -p 122 admin@REPLICA-IP
    
  7. A fin de generar un par de claves para la replicación, use el comando ghe-repl-setup con la dirección IP del dispositivo principal y copie la clave pública que devuelve.

    ghe-repl-setup PRIMARY_IP
    
  8. Para agregar la clave pública a la lista de claves autorizadas en el dispositivo principal, vaya a https://PRIMARY-HOSTNAME/setup/settings y agregue a la lista la clave que ha copiado de la réplica.

  9. Para comprobar la conexión con el modo principal y habilitar el modo de réplica para la memoria caché del repositorio, vuelve a ejecutar ghe-repl-setup.

    • Si la memoria caché del repositorio es el único nodo adicional, no se requieren argumentos.

      ghe-repl-setup PRIMARY-IP
      
    • Si va a configurar una caché del repositorio además de una o varias réplicas existentes, use el argumento -a o --add.

      ghe-repl-setup -a PRIMARY-IP
      
  10. Para configurar la caché del repositorio, usa el comando ghe-repl-node e incluye los parámetros necesarios.

    • Establece cache-location para la caché del repositorio, reemplazando CACHE-LOCATION por un identificador alfanumérico, como la región donde se implementa la memoria caché. El valor CACHE-LOCATION no debe ser ninguno de los subdominios reservados para su uso con aislamiento de subdominio, como assets o media. Para ver una lista de nombres reservados, consulta Habilitar el aislamiento de subdominio.

    • Establece un cache-domain para la memoria caché del repositorio, reemplazando EXTERNAL-CACHE-DOMAIN por el nombre de host que los clientes de Git usarán para acceder a la caché del repositorio. Si no especificas un valor cache-domain, GitHub Enterprise Server anteponerá el valor CACHE-LOCATION como subdominio al nombre de host configurado para la instancia. Para más información, consulta Configuración del nombre de host para la instancia.

    • Si aún no lo ha hecho, establezca el nombre del centro de datos en el dispositivo principal y cualquier dispositivo de réplica, reemplazando DC-NAME por un nombre de centro de datos.

      ghe-repl-node --datacenter DC-NAME
      
    • Las cachés nuevas intentarán inicializarse desde otra caché del mismo centro de datos. Establece un valor datacenter para la memoria caché del repositorio, reemplazando REPLICA-DC-NAME por el nombre del centro de datos donde vas a implementar el nodo.

    ghe-repl-node --cache CACHE-LOCATION --cache-domain EXTERNAL-CACHE-DOMAIN --datacenter REPLICA-DC-NAME
    
  11. Para iniciar la replicación de los almacenes de datos, use el comando ghe-repl-start.

    ghe-repl-start
    

    Warning

    ghe-repl-start produce una breve interrupción en el servidor principal, durante la cual los usuarios pueden experimentar errores internos del servidor. Para proporcionar un mensaje más descriptivo, ejecute ghe-maintenance -s en el nodo principal antes de ejecutar ghe-repl-start en el nodo de réplica para poner el dispositivo en modo de mantenimiento. Una vez que la comience la replicación, inhabilite el modo de mantenimiento con ghe-maintenance -u. La replicación de Git no progresará mientras el nodo primario esté en modo de mantenimiento.

  12. Para comprobar el estado del canal de replicación de cada almacén de datos, use el comando ghe-repl-status.

    ghe-repl-status
    
  13. Para habilitar la replicación de las redes de repositorio en el caché del mismo, configura una política de ubicación de datos. Para obtener más información, consulta Directivas de ubicación de datos.

Políticas de ubicación de datos

Puedes controlar la ubicación de los datos mediante la configuración de directivas de ubicación de datos para los repositorios con el comando spokesctl cache-policy. Las políticas de ubicación de datos determinan qué redes de repositorios se replican en qué cachés de repositorio. Predeterminadamente, ninguna red de repositorio se replicará en ninguno de los cachés de repositorio sino hasta que se configuren las políticas de ubicación.

Las directivas de ubicación de datos solo afectan al contenido de Git. El contenido de la base de datos, como comentarios sobre problemas y solicitudes de incorporación de cambios, se replicará en todos los nodos independientemente de la directiva.

Note

Las directivas de ubicación de datos no son lo mismo que el control de acceso. Debes usar roles de repositorio para controlar qué usuarios pueden acceder a un repositorio. Para más información sobre los roles de repositorio, consulta Roles de repositorio para una organización.

Puedes configurar una directiva para replicar todas las redes con la marca --default. Por ejemplo, este comando creará una directiva para replicar una sola copia de cada red de repositorio en el conjunto de cachés de repositorio cuyo cache_location es «kansas».

ghe-spokesctl cache-policy set --default 1 kansas

Para configurar la replicación para una red de repositorio, especifica aquél que sea la raíz de la red. Una red de repositorio incluye un repositorio y todas las bifurcaciones de este. No puedes replicar parte de una red sin replicarla integralmente.

ghe-spokesctl cache-policy set <owner/repository> 1 kansas

Puedes anular una política que replica todas las redes y excluye redes específicas si especificas un conteo de réplica de cero para la red. Por ejemplo, este comando especifica que cualquier caché de repositorio en la ubicación "kansas" no puede contener copias de esa red.

ghe-spokesctl cache-policy set <owner/repository> 0 kansas

Los recuentos de réplica mayores a uno un alguna ubicación de caché no son compatibles.