Criar um servidor PostgreSQL usando as ferramentas do Kubernetes

Nota

Como funcionalidade de pré-visualização, a tecnologia apresentada neste artigo está sujeita aos Termos de Utilização Suplementares para Pré-visualizações do Microsoft Azure.

As atualizações mais recentes estão disponíveis nas notas de versão.

Pré-requisitos

Você já deve ter criado um controlador de dados.

Para criar um servidor PostgreSQL usando as ferramentas do Kubernetes, você precisará ter as ferramentas do Kubernetes instaladas. Os exemplos neste artigo usarão kubectl, mas abordagens semelhantes podem ser usadas com outras ferramentas do Kubernetes, como o painel do Kubernetes, ocou helm se você estiver familiarizado com essas ferramentas e o Kubernetes yaml/json.

Instale a ferramenta kubectl

Descrição geral

Para criar um servidor PostgreSQL, você precisa criar um segredo do Kubernetes para armazenar seu login e senha de administrador do postgres com segurança e um recurso personalizado do servidor PostgreSQL com base nas postgresqls definições de recursos personalizados.

Criar um arquivo yaml

Você pode usar o arquivo yaml modelo como ponto de partida para criar seu próprio arquivo yaml personalizado do servidor PostgreSQL. Transfira este ficheiro para o seu computador local e abra-o num editor de texto. É útil usar um editor de texto, como o VS Code , que suporta realce de sintaxe e revestimento para arquivos yaml.

Exemplo de arquivo yaml:

apiVersion: v1
data:
  username: <your base64 encoded username>
  password: <your base64 encoded password>
kind: Secret
metadata:
  name: pg1-login-secret
type: Opaque
---
apiVersion: arcdata.microsoft.com/v1beta3
kind: postgresql
metadata:
  name: pg1
spec:
  scheduling:
    default:
      resources:
        limits:
          cpu: "4"
          memory: 4Gi
        requests:
          cpu: "1"
          memory: 2Gi
  services:
    primary:
      type: LoadBalancer # Modify service type based on your Kubernetes environment
  storage:
    data:
      volumes:
      - className: default # Use default configured storage class or modify storage class based on your Kubernetes environment
        size: 5Gi
    logs:
      volumes:
      - className: default # Use default configured storage class or modify storage class based on your Kubernetes environment
        size: 5Gi

Personalização do login e senha.

Um segredo do Kubernetes é armazenado como uma string codificada em base64 - uma para o nome de usuário e outra para a senha. Você precisará basear64 codificar um login e senha de administrador e colocá-los no local de espaço reservado em data.password e data.username. Não inclua os < símbolos e > fornecidos no modelo.

Você pode usar uma ferramenta on-line para codificar base64 seu nome de usuário e senha desejados ou você pode usar ferramentas CLI incorporadas, dependendo da sua plataforma.

PowerShell

[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes('<your string to encode here>'))

#Example
#[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes('example'))

Linux/macOS

echo -n '<your string to encode here>' | base64

#Example
# echo -n 'example' | base64

Personalizando o nome

O modelo tem um valor de para o atributo name pg1 . Você pode alterar esse valor, mas ele deve ser caracteres que seguem os padrões de nomenclatura DNS. Se você alterar o nome, altere o nome do segredo para corresponder. Por exemplo, se você alterar o nome do servidor PostgreSQL para , deverá alterar o nome do segredo de pg1-login-secret para pg2pg2-login-secret

Personalizando os requisitos de recursos

Você pode alterar os requisitos de recursos - a RAM e os limites e solicitações principais - conforme necessário.

Nota

Você pode saber mais sobre a governança de recursos do Kubernetes.

Requisitos para limites de recursos e solicitações:

  • O valor limite dos núcleos é necessário para efeitos de faturação.
  • O restante das solicitações e limites de recursos são opcionais.
  • O limite de núcleos e a solicitação devem ser um valor inteiro positivo, se especificado.
  • O mínimo de um núcleo é necessário para a solicitação de núcleos, se especificado.
  • O formato do valor de memória segue a notação Kubernetes.

Personalizando o tipo de serviço

O tipo de serviço pode ser alterado para NodePort, se desejado. Será atribuído um número de porta aleatório.

Personalizando o armazenamento

Você pode personalizar as classes de armazenamento para que o armazenamento corresponda ao seu ambiente. Se você não tiver certeza de quais classes de armazenamento estão disponíveis, execute o comando kubectl get storageclass para exibi-las. O modelo tem um valor padrão de default. Esse valor significa que há uma classe de armazenamento chamadadefault não que há uma classe de armazenamento que é o padrão. Opcionalmente, você também pode alterar o tamanho do seu armazenamento. Você pode ler mais sobre a configuração de armazenamento.

Criando o servidor PostgreSQL

Agora que você personalizou o arquivo yaml do servidor PostgreSQL, você pode criar o servidor PostgreSQL executando o seguinte comando:

kubectl create -n <your target namespace> -f <path to your yaml file>

#Example
#kubectl create -n arc -f C:\arc-data-services\postgres.yaml

Monitorando o status de criação

A criação do servidor PostgreSQL levará alguns minutos para ser concluída. Você pode monitorar o progresso em outra janela do terminal com os seguintes comandos:

Nota

Os comandos de exemplo abaixo pressupõem que você criou um servidor PostgreSQL chamado pg1 e um namespace Kubernetes com o nome arc. Se você usou um nome de servidor de namespace/PostgreSQL diferente, poderá substituir arc e pg1 por seus nomes.

kubectl get postgresqls/pg1 --namespace arc
kubectl get pods --namespace arc

Você também pode verificar o status de criação de qualquer pod específico executando kubectl describe o comando. O describe comando é especialmente útil para solucionar problemas. Por exemplo:

kubectl describe pod/<pod name> --namespace arc

#Example:
#kubectl describe pod/pg1-0 --namespace arc

Solução de problemas de criação

Se você encontrar problemas com a criação, consulte o guia de solução de problemas.