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 ofereça suporte a 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.

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 o modo com ou sem raiz, dependendo do ambiente escolhido.

Escolher 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 contêinerização como um contêiner em qualquer máquina virtual (VM).
Imagem UBI (Red Hat) Red Hat Ecosystem Catalog
  • Ambiente 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. Esses mecanismos de contêiner podem ser executados com ou sem raiz. O modo com raiz se refere à execução do Docker ou do Podman como usuário raiz, enquanto o modo sem raiz 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 preferências do ambiente. Se a simplicidade for importante, o modo com raiz pode ser adequado 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, será necessário 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 GID de 999. Isso significa que você tem duas opções para gerenciar o mapeamento de usuários:

  • Não fazer nada. postgres continuará não mapeando 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.

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

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

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

    1. Instale o programa de 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, será necessário configurar esses intervalos para executar o AlloyDB Omni sem raiz.

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

    sudo 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" | sudo tee -a /etc/subuid
    

    Substitua as seguintes variáveis:

    • ROOTLESS_USER: usuário em que você quer executar o AlloyDB Omni.
    • SUB_UID_RANGE_START: número mais baixo 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. Esse valor precisa ser de 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" | sudo tee -a /etc/subgid
    

    Substitua as seguintes variáveis:

    • ROOTLESS_USER: usuário em que você quer executar o AlloyDB Omni.
    • SUB_GID_RANGE_START: número mais baixo 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. Esse valor precisa ser de pelo menos 999.
  6. Se você quiser que a instância do AlloyDB Omni seja executada enquanto o usuário não está conectado, execute o comando a seguir.

    sudo loginctl enable-linger ROOTLESS_USER
    

    Substitua a seguinte variável:

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

    /usr/bin/dockerd-rootless-setuptool.sh install 
    
  8. Abra um novo shell para que as alterações 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, poderá criar o diretório do AlloyDB Omni no sistema de arquivos atual do dispositivo. Caso contrário, é possível criar um novo sistema de arquivos no seu dispositivo dedicado.

Sistema de arquivos atual

Docker

sudo mkdir -p DATA_DIR

Docker

mkdir -p DATA_DIR

Podman

sudo 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á ativado.

    sudo mkdir -p MOUNT_POINT
    

    Substitua a seguinte variável:

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

    sudo parted -s DEVICE_PATH mklabel gpt
    sudo 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.

    sudo 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 comprimento máximo de um rótulo de sistema de arquivos ext4 é de 16 caracteres.
    • PARTITION_PATH: caminho da partição de disco usada para armazenar os dados do contêiner.
  4. Ative o dispositivo e crie uma entrada no arquivo /etc/fstab para que o disco seja ativado após uma reinicialização.

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

    Substitua as seguintes variáveis:

    • FS_LABEL: rótulo do sistema de arquivos. O comprimento 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 precisa conter a instância do AlloyDB Omni.
  5. Crie um diretório de dados no sistema de arquivos específico do contêiner.

    Com raiz

    sudo mkdir -p DATA_DIR
    

    Sem raiz

    sudo mkdir -p DATA_DIR
    sudo 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 será 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 será o grupo que você quer que seja o proprietário do diretório.

Criar o contêiner

Docker

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

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 \
google/alloydbomni:IMAGE_TAG

Podman

sudo podman run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
-v DATA_DIR:/var/lib/postgresql/data \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:IMAGE_TAG

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 \
docker.io/google/alloydbomni:IMAGE_TAG

Substitua as seguintes variáveis:

  • CONTAINER_NAME: nome usado para o diretório em Criar um diretório em que o AlloyDB Omni armazena dados.
  • NEW_PASSWORD: senha atribuída ao novo usuário postgres do 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_TAG: use 16.3.0 para a imagem mais recente do Debian ou 16.3.0-ubi para a imagem UBI mais recente.

Conectar-se à instância

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

Conectar localmente

Docker

sudo docker exec -it CONTAINER_NAME psql -U postgres

Docker

docker exec -it CONTAINER_NAME psql -U postgres

Podman

sudo 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ê receberá uma solicitação para a senha da conta postgres. Insira a senha usada em Criar o contêiner.

A seguir