Como adicionar um pool de computação a um aplicativo com contêineres

O tópico descreve como usar pools de computação em um Snowflake Native Apps with Snowpark Container Services.

Sobre pools de computação em aplicativos com contêineres

Um pool de computação é uma coleção de um ou mais nós de máquinas virtuais (VM) nos quais o Snowflake executa Snowpark Container Services. Um aplicativo com contêineres usa um pool de computação na conta do consumidor para gerenciar as imagens de contêiner necessárias para o aplicativo.

Um aplicativo pode criar vários pools de computação e cada pool de computação é exclusivo do aplicativo. Os pools de computação usados pelo aplicativo não podem ser usados para outras finalidades.

Os contêineres dentro de um aplicativo podem acessar uns aos outros diretamente, mesmo que estejam em pools de computação diferentes.

No entanto, o uso de diferentes pools de computação permite que os provedores separem os tipos de serviços. Por exemplo, um provedor pode separar seus serviços de front-end dos serviços de back-end.

Os pools de computação são objetos no nível da conta, o que significa que o nome de cada pool de computação deve ser exclusivo dentro da conta do consumidor.

Como criar um pool de computação para um aplicativo

Há duas maneiras de criar um pool de computação para um aplicativo com contêineres:

  • O aplicativo cria os pools de computação necessários durante a instalação. Isto requer que o consumidor conceda o privilégio CREATE COMPUTE POOL no pool de computação para o aplicativo. Um provedor pode configurar o aplicativo para solicitar esses privilégios usando Snowsight.

    Consulte Configuração de um aplicativo para solicitar o privilégio CREATE COMPUTE POOL para obter mais informações.

  • O consumidor cria manualmente os pools de computação exigidos pelo aplicativo. O consumidor deve executar o CREATE COMPUTE POOL para criar o pool de computação e, em seguida, conceder manualmente o privilégio CREATE COMPUTE POOL no pool de computação para o aplicativo.

Configuração de um aplicativo para solicitar o privilégio CREATE COMPUTE POOL

Os provedores podem configurar um aplicativo para solicitar o privilégio CREATE COMPUTE POOL. Eles também podem criar o pool de computação a partir do script de configuração quando o aplicativo é instalado ou atualizado.

Nota

Um aplicativo pode criar no máximo cinco pools de computação em uma conta de consumidor. Entre em contato com o suporte Snowflake se seu aplicativo precisar criar pools de computação adicionais.

Solicitação do privilégio CREATE COMPUTE POOL

Um aplicativo pode solicitar os privilégios CREATE COMPUTE POOL de um consumidor. Esse privilégio permite que o aplicativo crie um pool de computação na conta do consumidor. Consulte Solicitação de privilégios globais dos consumidores para obter informações gerais sobre como solicitar privilégios globais do consumidor.

Para solicitar o privilégio CREATE COMPUTE POOL de um consumidor, adicione o privilégio CREATE COMPUTE POOL ao arquivo manifest.yml conforme mostrado no exemplo a seguir:

...
privileges:
 - CREATE COMPUTE POOL
   description: "Enable application to create one to five compute pools"
 ...
Copy

Consulte Criação do arquivo do manifesto para um aplicativo com contêineres para obter mais informações sobre como criar o arquivo manifest.yml para um aplicativo com contêineres.

Nota

O comportamento para a solicitação do privilégio CREATE COMPUTE POOL dentro de um aplicativo de contêiner é diferente de outras solicitações de privilégio. Quando você adiciona esse privilégio ao arquivo manifest.yml, Snowsight exibe uma interface que permite ao consumidor conceder os privilégios necessários.

Adição do comando CREATE COMPUTE POOL ao script de configuração

Para criar um pool de computação na conta do consumidor, adicione o comando CREATE COMPUTE POOL ao script de configuração do aplicativo.

O exemplo a seguir mostra como criar um pool de computação dentro de um procedimento armazenado no script de configuração:

CREATE COMPUTE POOL IF NOT EXISTS app_compute_pool
  MIN_NODES = 1
  MAX_NODES = 1
  INSTANCE_FAMILY = standard_1
  AUTO_RESUME = true;
Copy

Nota

Ao criar um pool de computação dentro do aplicativo, os provedores devem verificar se o provedor concedeu o privilégio CREATE COMPUTE POOL antes de criar o pool de computação.

Os pools de computação criados por um aplicativo são de propriedade exclusiva desse aplicativo. Eles não podem ser usados por outros aplicativos ou diretamente pelo consumidor.

Em geral, os usuários na conta do consumidor só podem ver pools de computação criados pelo aplicativo nas seguintes situações:

  • O usuário recebeu o privilégio MANAGE GRANTS.

  • O aplicativo concede acesso ao pool de computação usando funções de aplicativo.

No entanto, os usuários com a função ACCOUNTADMIN pode suspender, parar e retomar um pool de computação, mesmo que ele seja de propriedade de um aplicativo.

Colocação de prefixo no pool de computação dentro do script de configuração

Como os pools de computação são objetos no nível da conta, os nomes dos pools de computação devem ser exclusivos dentro da conta do consumidor. O exemplo a seguir mostra como usar o nome do aplicativo como um prefixo do nome do pool de computação:

LET POOL_NAME := (select current_database()) || '_app_pool';
CREATE COMPUTE POOL IF NOT EXISTS identifier(:pool_name)
  MIN_NODES = 1
  MAX_NODES = 1
  INSTANCE_FAMILY = STANDARD_2;
Copy

Práticas recomendadas para usar pools de computação em um aplicativo com contêineres

Os provedores devem considerar o seguinte ao criar pools de computação na conta do consumidor:

  • Os pools de computação têm implicações de custo. É importante definir valores para as propriedades min_nodes, max_nodes e instance_family para consumir a quantidade correta de recursos. Os provedores também devem definir a propriedade AUTO_SUSPEND_SECS para suspender automaticamente pools de computação quando eles estiverem inativos.

    Consulte CREATE COMPUTE POOL para obter mais informações.

  • Como os pools de computação são objetos no nível da conta, os nomes dos pools de computação devem ser exclusivos dentro da conta do consumidor. Considere usar o nome do aplicativo como prefixo do nome do pool de computação.