Compartilhar via


Criar um servidor PostgreSQL usando ferramentas do Kubernetes

Observação

Como uma versão prévia do recurso, a tecnologia apresentada neste artigo está sujeita aos Termos de uso complementares para versões prévias do Microsoft Azure.

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

Pré-requisitos

Você já precisa ter criado um controlador de dados do Azure Arc.

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

Instalar ferramenta kubectl

Visão geral

Para criar um servidor do PostgreSQL, é necessário criar um segredo do Kubernetes para armazenar seu logon e senha de administrador postgres com segurança e um recurso personalizado do servidor PostgreSQL com base nas definições de recursos postgresqls personalizados.

Criar um arquivo yaml

É possível usar o arquivo yamlde modelo como ponto inicial para criar o próprio arquivo yaml do servidor do PostgreSQL personalizado. Baixe esse arquivo no computador local e abra-o em um editor de texto. É útil usar um editor de texto como VS Code que suportam realce de sintaxe e linting 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

Personalizando o logon e a senha.

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

É possível usar uma ferramenta online para codificar o nome de usuário e a senha desejados usando base64, ou, dependendo da plataforma, pode-se usar as ferramentas incorporadas da CLI.

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 pg1 para o atributo de nome. Você pode alterar esse valor, mas deve incluir caracteres que seguem os padrões de nomenclatura DNS. Se você alterar o nome, altere o nome do segredo para corresponder. Por exemplo, se alterar o nome do servidor do PostgreSQL para pg2, será necessário alterar o nome do segredo de pg1-login-secret para pg2-login-secret

Personalizando os requisitos de recursos

Você pode alterar os requisitos de recursos-os limites de RAM e de núcleo e as solicitações-conforme necessário.

Observação

Você pode aprender mais sobre a Governança de recursos do kubernetes.

Requisitos para limites e solicitações de recursos:

  • O valor do limite de núcleos é necessário para fins de cobrança.
  • O restante das solicitações e dos limites de recursos são opcionais.
  • O limite e a solicitação de núcleos 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 da 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. Um número de porta aleatório será atribuído.

Personalizando armazenamento

Você pode personalizar as classes de armazenamento para armazenamento para corresponder 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 chamada default, não que haja uma classe de armazenamento que seja 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 o arquivo yaml do servidor do PostgreSQL está personalizado, é possível criar o servidor do 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 do PostgreSQL levará alguns minutos para ser concluída. Você pode monitorar o progresso em outra janela do terminal com os seguintes comandos:

Observação

Os comandos de exemplo a seguir assumem que você criou um servidor do PostgreSQL denominado pg1 e o namespace do Kubernetes com o nome arc. Se você usou um namespace/nome do servidor do PostgreSQL diferente, poderá substituir arc e pg1 pelos respectivos 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 um comando kubectl describe. Esse comando describe é 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 qualquer problemas com a criação, consulte o Guia de solução de problemas.