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, oc
ou helm
se você estiver familiarizado com essas ferramentas e o Kubernetes yaml/json.
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 postgresqls
servidor PostgreSQL com base nas 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 integradas, 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 pg2
, deverá 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 - 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 nomeadadefault
, 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 algum problema com a criação, consulte o guia de solução de problemas.