Criando um nome de usuário e EDB Postgres senha personalizados

Você pode criar credenciais personalizadas para usuários de aplicativos e superusuários se conectarem às suas EDB Postgres instâncias de banco de dados no IBM Cloud Pak for Data.

Sobre esta tarefa

Por padrão, EDB Postgres as credenciais são geradas automaticamente. Quaisquer nomes de usuário e senhas personalizados que você criar serão armazenados como um segredo para cada instância de banco de dados e tipo de usuário.

Procedimento

  1. Crie um segredo para armazenar suas credenciais personalizadas. Os comandos que você usa dependem se você está criando credenciais personalizadas para usuários do aplicativo, superusuários ou ambos.
    Usuários do aplicativo
    Opção 1:
    1. Defina as variáveis de EDB_USERNAME ambiente EDB_PASSWORD e com seu base64-encoded nome de usuário e senha.
      export EDB_USERNAME=$(echo -n "<username>" | base64)
      export EDB_PASSWORD=$(echo -n "<password>" | base64)
    2. Crie um segredo para armazenar suas credenciais executando o seguinte comando. Insira a senha e o nome de usuário de sua escolha nos campos respectivos.
      cat <<EOF | oc apply -n ${PROJECT_CPD_INST_OPERANDS} -f -
      apiVersion: v1
      data:
        username: ${EDB_USERNAME}
        password: ${EDB_PASSWORD}
      kind: Secret
      metadata:
        name: edb-advanced-app-user
      type: kubernetes.io/basic-auth
      EOF
    3. Verifique seu novo segredo executando o seguinte comando:
      oc get secret edb-advanced-app-user -o jsonpath="{.data.username}" | base64 --decode
      oc get secret edb-advanced-app-user -o jsonpath="{.data.password}" | base64 --decode
    Opção 2:
    1. Crie um segredo para armazenar suas credenciais executando o seguinte comando. Insira a senha e o nome de usuário de sua escolha nos campos respectivos.
      oc create secret generic edb-advanced-app-user --from-literal='username=<username>' --from-literal='password=<password>' -n ${PROJECT_CPD_INST_OPERANDS}
    2. Verifique seu novo segredo executando o seguinte comando:
      oc get secret edb-advanced-app-user -o jsonpath="{.data.username}" | base64 --decode
      oc get secret edb-advanced-app-user -o jsonpath="{.data.password}" | base64 --decode
    Superusuários
    Opção 1:
    1. Defina as variáveis de EDB_USERNAME ambiente EDB_PASSWORD e para o seu base64-encoded nome de usuário.
      export EDB_USERNAME=$(echo -n "<username>" | base64)
      export EDB_PASSWORD=$(echo -n "<password>" | base64)
    2. Crie um segredo para armazenar suas credenciais executando o seguinte comando. Insira a senha e o nome de usuário de sua escolha nos campos respectivos.
      cat <<EOF | oc apply -n ${PROJECT_CPD_INST_OPERANDS} -f -
      apiVersion: v1
      data:
        username: ${EDB_USERNAME}
        password: ${EDB_PASSWORD}
      kind: Secret
      metadata:
        name: edb-advanced-app-superuser
      type: kubernetes.io/basic-auth
      EOF
    3. Verifique seu novo segredo executando o seguinte comando:
      oc get secret edb-advanced-app-superuser -o jsonpath="{.data.username}" | base64 --decode
      oc get secret edb-advanced-app-superuser -o jsonpath="{.data.password}" | base64 --decode
    Opção 2:
    1. Crie um segredo para armazenar suas credenciais executando o seguinte comando. Insira a senha e o nome de usuário de sua escolha nos campos respectivos.
      oc create secret generic edb-advanced-app-superuser --from-literal='username=<username>' --from-literal='password=<password>' -n ${PROJECT_CPD_INST_OPERANDS}
    2. Verifique seu novo segredo executando o seguinte comando:
      oc get secret edb-advanced-app-superuser -o jsonpath="{.data.username}" | base64 --decode
      oc get secret edb-advanced-app-superuser -o jsonpath="{.data.password}" | base64 --decode
  2. Aplique o segredo à sua instância EDB Postgres de banco de dados usando o console da web ou recurso personalizado.
    Usando o console da web:
    1. No console da web, clique em Adicionar credenciais personalizadas (opcional).
    2. Insira sua senha personalizada. Por exemplo, edb-advanced-superuser para um superusuário de aplicativo.
    Usando um recurso personalizado:
    1. Defina a variável de ambiente EDB_INSTANCE_NAME com o nome da instância do banco de dados para a qual você deseja definir as credenciais personalizadas:
      export EDB_INSTANCE_NAME=<name>
    2. Defina a variável de ambiente EDB_INSTANCE_TYPE para o tipo EDB Postgres de banco de dados. Os valores válidos são Enterprise ou Standard.
      export EDB_INSTANCE_TYPE=<EDBInstanceType>
    3. Para aplicar credenciais personalizadas para usuários do aplicativo ou superusuários, ou ambos, para sua instância de banco de dados, modifique seu arquivo YAML de recursos personalizados e aplique-o ao seu projeto.
      apiVersion: edb.cpd.ibm.com/v1
      kind: CPDEdbInstance
      metadata:
        name: ${EDB_INSTANCE_NAME}
      spec:
        type: ${EDB_INSTANCE_TYPE}
        imageRepository: "cp.stg.icr.io/cp/cpd"
        # Travis pipeline will insert here
        members: 3
        version: "12.9"
        storageClass: nfs-client
        storageSize: 100Gi
        resources:
          requests:
            cpu: 1
            memory: 4Gi
          limits:
            cpu: 1
            memory: 4Gi
        # # Use custom secret 
        userSecret: edb-advanced-app-user
      
        # # Use custom superuserSecret 
        superuserSecret: edb-advanced-superuser
  3. Decodifique o segredo com o seguinte comando:
    echo '<password>' | base64 -d

    A saída exibida deve ser semelhante ao seguinte exemplo:

    uN3i1Hh0bYbCc4TyVAacBhmSzgqtzqxmOVjAn0QIChsJrSmu9PY2fw2q8EKKLpZ9

    Você decodificou o nome de usuário e a senha.

  4. Verifique se as novas credenciais foram aplicadas com o seguinte comando:
    Usuários do aplicativo:
    oc exec -it ${EDB_INSTANCE_NAME}-user-edb-db-1 -n ${PROJECT_CPD_INST_OPERANDS} bash

    A saída exibida deve ser semelhante ao seguinte exemplo:

    kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl kubectl exec [POD] -- [COMMAND] instead. bash-4.4$ psql -p 5432 -h 127.0.0.1 -U app Password for user app: password psql (12.9) SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off) Type "help" for help. app=>
    Superusuários:
    oc exec -it ${EDB_INSTANCE_NAME}-superuser-edb-db-1 -n ${PROJECT_CPD_INST_OPERANDS} bash

    A saída exibida deve ser semelhante ao seguinte exemplo:

    kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl kubectl exec [POD] -- [COMMAND] instead. bash-4.4$ psql -p 5432 -h 127.0.0.1 -U postgres Password for user postgres: uN3i1Hh0bYbCc4TyVAacBhmSzgqtzqxmOVjAn0QIChsJrSmu9PY2fw2q8EKKLpZ9 psql (12.9) SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off) Type "help" for help. postgres=#

Resultados

Os usuários agora podem usar o nome de usuário e a senha personalizados que você definiu para acessar a instância EDB Postgres do banco de dados.