Instalar o AlloyDB Omni usando contêineres

Selecione uma versão da documentação:

Nesta página, descrevemos como realizar instalações de instância única do AlloyDB Omni em qualquer VM do Linux que seja compatível com ambientes de execução de contêineres. Se você precisar de uma configuração de várias instâncias do AlloyDB Omni, consulte Alta disponibilidade e resiliência de dados.

Antes de começar

Antes de instalar o AlloyDB Omni, verifique se você atende aos requisitos a seguir.

Solicitar acesso à imagem do AlloyDB Omni

Para ter acesso à imagem do PostgreSQL 18, preencha o formulário de registro de incentivos do AlloyDB Omni.

Planejar a instalação

Antes de instalar o AlloyDB Omni na VM, faça o seguinte:

  1. Leia Planejar a instalação do AlloyDB Omni em uma VM.
  2. Leia Executar o AlloyDB Omni com ou sem raiz e conclua as etapas necessárias para cada um, dependendo do ambiente escolhido.

Escolha uma opção de download ou instalação

Escolha uma das seguintes opções de download e instalação:

Mídia Locais de download e guias de instalação Implantação em
Imagem do Debian DockerHub (tags)
  • Docker, Podman. É possível executar essas ferramentas de conteinerização como um contêiner em qualquer máquina virtual (VM).
Imagem UBI (Red Hat) Catálogo do ecossistema da Red Hat
  • ambiente da Red Hat. Execute como um contêiner.

Executar o AlloyDB Omni com ou sem raiz

É possível executar o AlloyDB Omni usando o Docker ou o Podman. É possível executar esses mecanismos de contêiner com ou sem acesso root. "Rootful" se refere à execução do Docker ou do Podman como usuário raiz, enquanto "rootless" se refere à execução dessas imagens de contêiner como um usuário não raiz ou sem privilégios.

O modo escolhido depende dos requisitos e das preferências que você tem para o ambiente. Se a simplicidade for importante, o modo rootful pode ser ideal para você. Se você precisar da segurança de um usuário sem privilégios, o modo sem raiz pode ser a escolha certa.

Se você decidir executar um ambiente com raiz, precisará decidir como gerenciar o mapeamento de usuários entre o contêiner e a máquina host. Na prática, o AlloyDB Omni executa processos como o usuário postgres, que tem um UID e um GID de 999. Isso significa que você tem duas opções para gerenciar o mapeamento de usuários:

  • Não fazer nada. postgres vai continuar sem ser mapeado para nenhum usuário na máquina host.
  • Crie um usuário e um grupo de usuários com UID e GID de 999 para que postgres seja mapeado para esse usuário e grupo de usuários.

Para ambientes sem raiz, postgres é mapeado para um sub-UID e um sub-GID que o usuário host e o grupo de usuários podem acessar (conforme definido nos arquivos /etc/subuid e /etc/subgid). Isso significa que você não precisa gerenciar o mapeamento de usuários.

(Sem raiz) Configurar intervalos de sub-UID e sub-GID

  1. Se você estiver usando o RHEL, o CentOS ou o Fedora, siga estas etapas:

    1. Instale o programa utilitário de linha de comando iptables executando o comando sudo dnf install -y iptables.
    2. Para qualquer versão do RHEL anterior à 9, instale o pacote fuse-overlayfs executando o comando sudo dnf install -y fuse-overlayfs.
  2. Se a imagem do Linux não tiver intervalos de sub-UID e sub-GID configurados para o usuário sem privilégios, configure esses intervalos para executar o AlloyDB Omni sem raiz.

  3. Se você estiver em um sistema Debian, instale os binários newuidmap e newgidmap.

    apt-get install -y uidmap
    
  4. Adicione uma entrada subuid para o usuário sem raiz.

    echo "ROOTLESS_USER:SUB_UID_RANGE_START:SUB_UID_RANGE_COUNT" >> /etc/subuid
    

    Substitua as seguintes variáveis:

    • ROOTLESS_USER: usuário que você quer que execute o AlloyDB Omni.
    • SUB_UID_RANGE_START: número menor do intervalo de sub-UIDs que você quer registrar para o usuário.
    • SUB_UID_RANGE_COUNT: quantidade de sub-UIDs que você quer registrar para o usuário. Este valor precisa ser pelo menos 999.
  5. Adicione uma entrada subgid para o usuário sem raiz.

    echo "ROOTLESS_USER:SUB_GID_RANGE_START:SUB_GID_RANGE_COUNT" >> /etc/subgid
    

    Substitua as seguintes variáveis:

    • ROOTLESS_USER: usuário que você quer que execute o AlloyDB Omni.
    • SUB_GID_RANGE_START: número menor do intervalo de sub-GIDs que você quer registrar para o usuário.
    • SUB_GID_RANGE_COUNT: quantidade de sub-GIDs que você quer registrar para o usuário. Este valor precisa ser pelo menos 999.
  6. Se você quiser que a instância do AlloyDB Omni seja executada enquanto o usuário não estiver conectado, execute o comando a seguir.

    loginctl enable-linger ROOTLESS_USER
    

    Substitua a seguinte variável:

    • ROOTLESS_USER: usuário que você quer que execute o AlloyDB Omni.
  7. Se você estiver usando o Docker, execute o seguinte comando como ROOTLESS_USER:

    /usr/bin/dockerd-rootless-setuptool.sh install 
    
  8. Abra um novo shell para que as mudanças de sub-UID e sub-GID entrem em vigor.

Criar um diretório em que o AlloyDB Omni armazena dados

Se você estiver usando um sistema de armazenamento que faz mais do que apenas executar o AlloyDB Omni, crie o diretório do AlloyDB Omni no sistema de arquivos atual do seu dispositivo. Caso contrário, crie um novo sistema de arquivos no seu dispositivo dedicado.

Sistema de arquivos atual

Docker

mkdir -p DATA_DIR

Docker

mkdir -p DATA_DIR

Podman

mkdir -p DATA_DIR

Podman

mkdir -p DATA_DIR

Substitua as seguintes variáveis:

  • DATA_DIR: caminho do diretório do host em que seus dados são armazenados.

Dispositivo dedicado

  1. Crie um diretório no host em que o disco será montado.

    mkdir -p MOUNT_POINT
    

    Substitua a seguinte variável:

    • MOUNT_POINT: caminho do diretório de nível superior que deve conter a instância do AlloyDB Omni.
  2. Crie uma tabela de partição gpt com uma única partição no dispositivo de disco.

    parted -s DEVICE_PATH mklabel gpt
    parted -s DEVICE_PATH mkpart primary 0% 100%

    Substitua a seguinte variável:

    • DEVICE_PATH: caminho atribuído pelo sistema operacional ao dispositivo de disco.
  3. Crie um sistema de arquivos no dispositivo de disco. Recomendamos o uso do sistema de arquivos ext4 para o AlloyDB Omni.

    mkfs.ext4 -q -m 1 -L FS_LABEL -F PARTITION_PATH
    

    Substitua as seguintes variáveis:

    • FS_LABEL: rótulo do sistema de arquivos. O tamanho máximo de um rótulo de sistema de arquivos ext4 é de 16 caracteres.
    • PARTITION_PATH: caminho para a partição de disco usada para armazenar os dados do contêiner.
  4. Monte o dispositivo e crie uma entrada no arquivo /etc/fstab para que o disco seja montado após uma reinicialização.

    echo -e "LABEL=FS_LABEL\tMOUNT_POINT\text4\tdefaults\t0 0" | tee -a /etc/fstab
    systemctl daemon-reload
    mount MOUNT_POINT

    Substitua as seguintes variáveis:

    • FS_LABEL: rótulo do sistema de arquivos. O tamanho máximo de um rótulo de sistema de arquivos ext4 é de 16 caracteres.
    • MOUNT_POINT: caminho do diretório de nível superior que deve conter a instância do AlloyDB Omni.
  5. Crie um diretório de dados no sistema de arquivos específico do contêiner.

    Com acesso root

    mkdir -p DATA_DIR
    

    Sem raiz

    mkdir -p DATA_DIR
    chown ROOTLESS_USER:ROOTLESS_GROUP DATA_DIR

    Substitua as seguintes variáveis:

    • DATA_DIR: caminho do diretório do host em que seus dados são armazenados.
    • ROOTLESS_USER: se você estiver usando um ambiente sem raiz, esse é o usuário que você quer que seja o proprietário do diretório.
    • ROOTLESS_GROUP: se você estiver usando um ambiente sem raiz, esse é o grupo que você quer que seja o proprietário do diretório.

Criar o contêiner

Docker

docker run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
-v DATA_DIR:/var/lib/postgresql/data \
-p HOST_PORT:5432 \
--restart=always \
-d IMAGE_URI

Docker

docker run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
-v DATA_DIR:/var/lib/postgresql/data \
-p HOST_PORT:5432 \
--restart=always \
-d IMAGE_URI

Podman

podman run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
-v DATA_DIR:/var/lib/postgresql/data \
-p HOST_PORT:5432 \
--restart=always \
-d IMAGE_URI

Podman

podman run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
-v DATA_DIR:/var/lib/postgresql/data \
-p HOST_PORT:5432 \
--restart=always \
-d IMAGE_URI

Substitua as seguintes variáveis:

  • CONTAINER_NAME: nome usado para o diretório em Criar diretório em que o AlloyDB Omni armazena dados.
  • NEW_PASSWORD: senha atribuída ao usuário postgres do novo contêiner após a criação.
  • DATA_DIR: caminho do diretório do host em que seus dados são armazenados.
  • HOST_PORT: porta TCP na máquina host em que o contêiner vai publicar a própria porta 5432. Para usar a porta padrão do PostgreSQL na máquina host também, especifique 5432.
  • IMAGE_URI: substitua pelo local da imagem fornecido no e-mail que você recebeu quando solicitou acesso.

Conectar-se à instância

Dependendo do ambiente, é possível se conectar à instância do AlloyDB Omni localmente ou remotamente.

Conectar localmente

Docker

docker exec -it CONTAINER_NAME psql -U postgres

Docker

docker exec -it CONTAINER_NAME psql -U postgres

Podman

podman exec -it CONTAINER_NAME psql -U postgres

Podman

podman exec -it CONTAINER_NAME psql -U postgres

Substitua a seguinte variável:

Conectar remotamente

psql -U postgres -p HOST_PORT -h IP_ADDRESS_OR_FQDN

Substitua as seguintes variáveis:

  • HOST_PORT: porta TCP usada em Criar o contêiner.
  • IP_ADDRESS_OR_FQDN: endereço IP ou nome de domínio totalmente qualificado do host em que o AlloyDB Omni está em execução.

Depois de executar esse comando, você vai precisar informar a senha da conta postgres. Digite a senha usada em Criar o contêiner.

A seguir