Pré-requisitos
- Você deve ter um GitHub Enterprise arquivo de licença. Para saber mais, confira Configurando uma avaliação do GitHub Enterprise Server e Arquivos de licença do GitHub Enterprise Server.
- Você deve ter uma conta do AWS que possa iniciar instâncias do EC2 e criar volumes EBS. Para obter mais informações, confira o site da Amazon Web Services.
- A maioria das ações necessárias para iniciar o sua instância do GitHub Enterprise Server também pode ser executada por meio do console de gerenciamento da AWS. No entanto, é recomendável instalar a interface da linha de comando (CLI) do AWS para a configuração inicial. Veja abaixo alguns exemplos de uso da CLI do AWS. Para obter mais informações, confira os guias da Amazon Como trabalhar com o Console de Gerenciamento da AWS e O que é a interface de linha de comando da AWS.
Para usar este guia, você deve conhecer os seguintes conceitos do AWS:
- Como iniciar instâncias do EC2
- Gerenciamento de volumes do EBS
- Como usar grupos de segurança (para gerenciar o acesso à rede na sua instância)
- EIP (Endereços IP elásticos) (altamente recomendado para ambientes de produção)
- EC2 e Nuvem Privada Virtual (se você planeja lançar em uma Nuvem Privada Virtual)
- Preços da AWS (para calcular e gerenciar os custos)
Para obter um diagrama que fornece uma visão geral da arquitetura, consulte o diagrama de arquitetura AWS para implantar GitHub Enterprise Server.
Este guia recomenda o princípio do menor privilégio ao configurar sua instância do GitHub Enterprise Server no AWS. Para obter mais informações, veja a documentação do IAM (Gerenciamento de Identidades e Acesso) da AWS.
Considerações sobre hardware
Requisitos mínimos recomendados
Recomendamos diferentes configurações de hardware, dependendo do número de licenças de usuário do sua instância do GitHub Enterprise Server. Se você fornecer mais recursos do que os requisitos mínimos recomendados, sua instância terá um desempenho e uma escala melhores.
| Licenças de usuário | vCPUs x86-64 | Memória | Armazenamento raiz | Armazenamento (de dados) anexado | IOPS |
|---|---|---|---|---|---|
| Teste, demonstração ou 10 usuários leves | 4 | 32 GB | 400 GB | 500 GB | 600 |
| Até 1.000 | 8 | 48 GB | 400 GB | 500 GB | 3000 |
| 1.000 a 3.000 | 16 | 64 GB | 400 GB | 1000 GB | 6000 |
| 3.000 a 5.000 | 32 | 128 GB | 400 GB | 1500 GB | 9000 |
| 5.000 a 8.000 | 48 | 256 GB | 400 GB | 3000 GB | 12000 |
| 8000-10000+ | 64 | 512 GB | 400 GB | 5000 GB | 15000 |
Se você pretende habilitar o GitHub Actions ou o GitHub Code Security para os usuários da sua instância, mais recursos são necessários.
- GitHub Actions – aumentar a CPU e a memória em pelo menos 25%
- GitHub Code Security – aumentar a CPU e a memória em pelo menos 25%
Esses ajustes devem ser aplicados aos requisitos básicos de cada nível de usuário. Recomendamos monitorar todas as alterações em seus recursos, pois podem ser necessários aumentos adicionais.
Para obter mais informações sobre esses requisitos, confira Introdução ao GitHub Actions do GitHub Enterprise Server.
Se você pretende habilitar Container registry para os usuários da sua instância, são necessários mais recursos. Para obter mais informações sobre esses requisitos, confira Introdução aos pacotes de GitHub para sua empresa.
Para obter mais informações sobre como ajustar recursos para uma instância existente, confira Aumentar a capacidade de armazenamento e Aprimorar os recursos de CPU ou memória.
Armazenamento
Recomendamos um SSD de alto desempenho com operações de alta entrada/saída por segundo (IOPS) e baixa latência para GitHub Enterprise Server. Cargas de trabalho são intensivas em I/O. Se você usar um hipervisor de metal simples, recomendamos anexar diretamente o disco ou usar um disco a partir de uma rede de área de armazenamento (SAN).
A sua instância exige um disco de dados persistente separado do disco raiz. Para saber mais, confira Visão geral do sistema.
Aviso
O armazenamento raiz refere-se ao tamanho total do disco raiz da instância. Quando a instância for inicializada, você verá 200 GB disponíveis no sistema de arquivos raiz. Os 200 GB restantes serão reservados para atualizações. Para saber mais, confira Visão geral do sistema.
Para configurar o GitHub Actions, você precisa fornecer um armazenamento de blobs externo. Para saber mais, confira Introdução ao GitHub Actions do GitHub Enterprise Server.
O espaço disponível no sistema de arquivos raiz será 50% do tamanho total do disco. Você pode redimensionar o disco raiz da sua instância criando uma nova instância ou usando uma instância existente. Para saber mais, confira Visão geral do sistema e Aumentar a capacidade de armazenamento.
CPU e memória
Os recursos de CPU e memória que GitHub Enterprise Server exige dependem dos níveis de atividade para usuários, automações e integrações.
Todas as VMs provisionados para sua instância do GitHub Enterprise Server devem usar a arquitetura de CPU x86-64. Não há suporte para outras arquiteturas, como Aarch64 ou ARM64.
Se você pretende habilitar o GitHub Actions para os usuários da sua instância do GitHub Enterprise Server, talvez seja necessário provisionar recursos adicionais de CPU e memória para a instância. Para saber mais, confira Introdução ao GitHub Actions do GitHub Enterprise Server.
Quando você aumenta os recursos da CPU, a GitHub recomenda adicionar pelo menos 6.5 GB de memória para cada vCPU (até 16 vCPUs) que você fornecer para a instância. Ao usar mais de 16 vCPUs, você não precisa adicionar 6.5 GB de memória para cada vCPU, mas você deve monitorar sua instância para garantir que ela tenha memória suficiente.
Aviso
Recomendamos que os usuários configurem eventos de webhook para notificar os sistemas externos da atividade no GitHub Enterprise Server. As verificações automatizadas de alterações, ou sondagem, afetarão negativamente o desempenho e a escalabilidade da instância. Para saber mais, confira Sobre webhooks.
Para obter mais informações sobre como monitorar a capacidade e o desempenho de GitHub Enterprise Server, confira Monitore o seu instance.
Você pode aumentar os recursos de memória ou da CPU na sua instância. Para saber mais, confira Aprimorar os recursos de CPU ou memória.
Recomendações de desempenho do volume de armazenamento para o AWS
O GitHub Enterprise Server faz uso intensivo de E/S e requer armazenamento de alto desempenho para o volume raiz e para o volume de dados para garantir o desempenho ideal. Ambos os volumes precisam de alta IOPS e baixa latência, pois a E/S de disco insuficiente é uma causa comum da degradação do desempenho e de interrupções de serviço.
Ao selecionar tipos de volume do Amazon EBS, considere as seguintes diretrizes:
- Para a maioria das implantações, os volumes
gp3fornecem um bom ponto de partida com IOPS e taxa de transferência configurável - Para implantações maiores ou de alta atividade, volumes
io1ouio2podem ser mais adequados devido às características de desempenho consistente - Implantações muito grandes ou críticas podem se beneficiar do
io2 Block Expresspara ter os níveis de desempenho mais altos
Importante
A configuração de armazenamento ideal para sua instância varia significativamente com base em seus padrões de uso específicos. Os fatores que aumentam os requisitos de E/S incluem:
- Número de usuários ativos e repositórios
- Volume e frequência da carga de trabalho de CI/CD
- Padrões de uso e automação da API
- Frequência de operação do Git e tamanhos de repositório
É altamente recomendável monitorar continuamente o desempenho de disco da instância no painel de métricas do Console de Gerenciamento. Preste atenção especial a:
**Comprimento da fila de disco**: deve permanecer próximo de zero.
**Utilização de E/S**: períodos contínuos acima de 80% indicam a necessidade de mais IOPS.
**Latência de disco**: deve permanecer abaixo de 1 a 2 ms.
Esteja preparado para ajustar a configuração de armazenamento à medida que seus padrões de uso evoluírem. Aumente proativamente a alocação de IOPS se observar gargalos de desempenho para evitar a degradação do serviço.
Para obter mais informações sobre os tipos de volume do Amazon EBS, consulte Tipos de volume do Amazon EBS na documentação do AWS.
Determinar o tipo de instância
Antes de iniciar o sua instância do GitHub Enterprise Server no AWS, você precisará determinar o tipo de computador que melhor atende às necessidades da sua organização. Para avaliar os requisitos mínimos recomendados do GitHub Enterprise Server, confira Requisitos mínimos recomendados.
Você pode sempre ajustar sua CPU ou memória redimensionando sua instância. Alterar os recursos disponíveis para sua instância requer tempo de inatividade para seus usuários, portanto, a GitHub recomenda recursos de provisionamento excessivo para levar em conta a escala.
GitHub recomenda uma instância otimizada para a memória para GitHub Enterprise Server. Para obter mais informações, confira Tipos de Instância do Amazon EC2 no site do Amazon EC2.
Selecionar a AMI do GitHub Enterprise Server
É possível selecionar uma Amazon Machine Image (AMI) para o GitHub Enterprise Server usando o portal do GitHub Enterprise Server ou a AWS CLI.
As AMIs para o GitHub Enterprise Server estão disponíveis na região (EUA-Leste e EUA-Oeste) do AWS GovCloud. Com isso, os clientes dos EUA com requisitos regulamentares específicos podem executar o GitHub Enterprise Server em um ambiente em nuvem de conformidade federal. Para obter mais informações sobre a conformidade da AWS com os padrões federais e outros, confira a página do GovCloud (US) da AWS e a página de conformidade da AWS.
Usar o portal do GitHub Enterprise Server para selecionar uma AMI
-
Navegue até a imagem que você deseja usar em sua nova instância.
- Navegue até Notas sobre a versão.
- Na barra lateral à direita, clique na versão que você deseja baixar.
- Clique em Baixar GitHub Enterprise Server X.X.X.
-
Em "GitHub na Nuvem", selecione o menu suspenso "Selecionar sua plataforma" e clique na Amazon Web Services.
-
Selecione o menu suspenso "Selecionar sua região da AWS" e clique na região desejada.
-
Anote a ID da AMI.
Usar a CLI do AWS para selecionar uma AMI
-
Usando a CLI da AWS, obtenha uma lista de imagens do GitHub Enterprise Server publicadas pelas IDs do proprietário da AWS do GitHub (
025577942450para GovCloud e895557238572para outras regiões). Para obter mais informações, confira describe-images na documentação da AWS.aws ec2 describe-images \ --owners OWNER_ID \ --query 'sort_by(Images,&Name)[*].{Name:Name,ImageID:ImageId}' \ --output=text -
Anote a ID da AMI para a imagem mais recente do GitHub Enterprise Server.
Criação de um grupo de segurança
Se estiver configurando a AMI pela primeira vez, você terá que criar um grupo de segurança e adicionar uma nova regra de grupo de segurança para cada porta na tabela abaixo. Para obter mais informações, confira o guia da AWS Como usar grupos de segurança.
-
Usando a CLI do AWS, crie um grupo de segurança. Para obter mais informações, confira create-security-group na documentação da AWS.
aws ec2 create-security-group --group-name SECURITY_GROUP_NAME --description "SECURITY GROUP DESCRIPTION" -
Anote o ID do grupo de segurança (
sg-xxxxxxxx) recém-criado. -
Crie uma regra de grupo de segurança para cada porta da tabela abaixo. Recomendamos abrir portas de rede seletivamente com base nos serviços de rede que você precisa expor para fins administrativos e de usuário. Para obter mais informações, confira Portas de rede e authorize-security-group-ingress na documentação da AWS.
aws ec2 authorize-security-group-ingress --group-id SECURITY_GROUP_ID --protocol PROTOCOL --port PORT_NUMBER --cidr SOURCE IP RANGEEsta tabela identifica o uso de cada porta.
Porta Serviço Descrição 22 SSH Git sobre acesso via SSH. Clone, buscar e fazer push de operações para repositórios público/privado suportados. 25 SMTP Suporte a SMTP com criptografia (STARTTLS). 80 HTTP Acesso ao aplicativo web. Todas as solicitações são redirecionadas para a porta HTTPS quando o SSL está habilitado. 122 SSH Exemplo de acesso a shell. A porta SSH padrão (22) é dedicada ao tráfego de rede entre o Git e o SSH do aplicativo. 161/UDP SNMP Obrigatória para operações de protocolo de monitoramento de rede. 443 HTTPS Aplicativo web e Git sobre acesso HTTPS. 1194/UDP VPN Túnel de rede de réplica segura na configuração de alta disponibilidade. Criptografado usando WireGuard. 8080 HTTP Baseado em web de texto simples Console de Gerenciamento. Não obrigatória, a menos que o SSL seja desabilitado manualmente. 8443 HTTPS Base segura na web Console de Gerenciamento. Obrigatória para instalação e configuração básicas. 9418 Git Porta de protocolo Simples Git. Clonar e buscar somente as operações para repositórios públicos. Comunicação de rede não criptografada. Se você habilitou o modo privado na sua instância, abrir esta porta só é necessário se você também habilitou o acesso de leitura anônimo do Git. Para saber mais, confira Aplicar as políticas de gerenciamento do repositório na sua empresa.
Criar a instância do GitHub Enterprise Server
Para criar a instância, você deve iniciar uma instância EC2 com sua AMI do GitHub Enterprise Server e vincular um volume de armazenamento adicional aos dados da sua instância. Para obter mais informações, confira Considerações sobre hardware.
Observação
Você pode criptografar o disco de dados para obter um nível extra de segurança e garantir que todos os dados gravados na sua instância estejam protegidos. Usar discos criptografados gera um leve impacto no desempenho. Se você decidir criptografar o volume, recomendaremos expressamente fazer isso antes de iniciar a instância pela primeira vez. Para obter mais informações, confira o guia da Amazon sobre a criptografia EBS.
Aviso
Se você decidir habilitar a criptografia depois de configurar sua instância, precisará migrar os dados para o volume criptografado, o que vai gerar um tempo de inatividade para os usuários.
Iniciar uma instância do EC2
Na CLI do AWS, inicie uma instância do EC2 usando sua AMI e o grupo de segurança que você criou. Vincule um novo dispositivo de bloco para uso como volume para armazenamento dos dados da sua instância e configure o tamanho baseado na quantidade de licenças de usuário. Para obter mais informações, confira run-instances na documentação da AWS.
aws ec2 run-instances \
--security-group-ids SECURITY_GROUP_ID \
--instance-type INSTANCE_TYPE \
--image-id AMI_ID \
--block-device-mappings '[{"DeviceName":"/dev/xvdf","Ebs":{"VolumeSize":SIZE,"VolumeType":"TYPE"}}]' \
--region REGION \
--ebs-optimized
Alocar um Elastic IP e associá-lo à instância
Se esta for uma instância de produção, nós recomendamos fortemente alocar um IP Elástico (EIP) e associá-lo à instância antes de seguir para a configuração do GitHub Enterprise Server. Caso contrário, o endereço IP público da instância não será retido após a reinicialização da instância. Para obter mais informações, confira Como alocar um endereço IP elástico e Como associar um endereço IP elástico a uma instância em execução na documentação da Amazon.
As instâncias primária e de réplica devem receber EIPs separados nas configurações de alta disponibilidade de produção. Para saber mais, confira Como configurar a alta disponibilidade.
Configurando a instância do GitHub Enterprise Server
Para configurar a instância, você precisa carregar um arquivo de licença, definir a senha raiz do Console de Gerenciamento, definir as configurações da instância e reiniciar a instância.
Aviso
Para impedir que um invasor comprometa a nova instância, defina pessoalmente a senha Console de Gerenciamento raiz e crie o primeiro usuário o mais rápido possível.
- Copie o nome DNS público da máquina virtual e cole-o em um navegador.
- No prompt, carregue seu arquivo de licença e defina uma senha de gerenciamento do console. Para saber mais, confira Baixando sua licença para GitHub Enterprise.
- No Console de Gerenciamento, defina e salve as configurações desejadas. Para obter mais informações, consulte Configurando GitHub Enterprise.
- A instância será reiniciada automaticamente.
- Clique em Acessar sua instância.