Computepool zu einer App mit Containern hinzufügen

Unter diesem Thema wird beschrieben, wie Sie Computepools in Snowflake Native Apps with Snowpark Container Services verwenden.

Allgemeine Informationen zu Computepools in Apps mit Containern

Ein Computepool ist eine Sammlung von einem oder mehreren virtuellen VM-Knoten (virtuelle Maschinen), auf denen Snowflake Ihre Snowpark Container Services ausführt. Eine App mit Containern verwendet einen Computepool im Verbraucherkonto, um die von der App benötigten Container-Images zu verwalten.

Eine App kann mehrere Computepools erstellen und jeder Computepool ist exklusiv für die App. Von der App verwendete Computepools können nicht für andere Zwecke verwendet werden.

Container innerhalb einer App können direkt aufeinander zugreifen, auch wenn sie sich in verschiedenen Computepools befinden.

Die Verwendung verschiedener Computepools ermöglicht es Anbietern jedoch, die verschiedenen Typen von Diensten zu trennen. So kann ein Anbieter beispielsweise seine Frontend-Dienste von den Backend-Diensten trennen.

Computepools sind Objekte auf Kontoebene, d. h. der Name jedes Computepools muss innerhalb des Verbraucherkontos eindeutig sein.

Computepool für eine App erstellen

Es gibt zwei Möglichkeiten, einen Computepool für eine App mit Containern zu erstellen:

  • Die App erstellt während der Installation die erforderlichen Computepools. Dies setzt voraus, dass der Verbraucher der App die Berechtigung CREATE COMPUTE POOL für den Computepool erteilt. Ein Anbieter kann die App so konfigurieren, dass sie diese Berechtigungen über Snowsight anfordert.

    Weitere Informationen dazu finden Sie unter App für das Anfordern der Berechtigung CREATE COMPUTE POOL konfigurieren.

  • Der Verbraucher erstellt die von der App benötigten Computepools manuell. Der Verbraucher muss CREATE COMPUTE POOL ausführen, um den Computepool zu erstellen, und dann der App manuell die Berechtigung CREATE COMPUTE POOL für den Computepool erteilen.

App für das Anfordern der Berechtigung CREATE COMPUTE POOL konfigurieren

Anbieter können eine App so konfigurieren, dass sie die Berechtigung CREATE COMPUTE POOL anfordert. Computepools können auch über das Setup-Skript erstellt werden, das bei Installation oder Aktualisierung der App ausgeführt wird.

Bemerkung

Eine App kann maximal fünf Computepools in einem Verbraucherkonto erstellen. Wenden Sie sich an den Snowflake-Support, wenn Ihre App zusätzliche Computepools erstellen muss.

Berechtigung CREATE COMPUTE POOL anfordern

Eine App kann die Berechtigungen CREATE COMPUTE POOL von einem Verbraucher anfordern. Diese Berechtigung ermöglicht es der App, einen Computepool im Verbraucherkonto zu erstellen. Unter Globale Berechtigungen von Verbrauchern anfordern finden Sie allgemeine Informationen zum Anfordern von globalen Berechtigungen beim Verbraucher.

Um die Berechtigung CREATE COMPUTE POOL von einem Verbraucher anzufordern, fügen Sie die Berechtigung CREATE COMPUTE POOL zur Datei manifest.yml hinzu, wie im folgenden Beispiel gezeigt:

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

Weitere Informationen zum Erstellen der Datei manifest.yml für eine App mit Containern finden Sie unter Manifest-Datei für eine App mit Containern erstellen.

Bemerkung

Das Verhalten für die Anforderung der Berechtigung CREATE COMPUTE POOL innerhalb einer Container-App unterscheidet sich von anderen Berechtigungsanforderungen. Wenn Sie diese Berechtigung zur Datei manifest.yml hinzufügen, zeigt Snowsight eine Schnittstelle an, über die ein Verbraucher die erforderlichen Berechtigungen zuweisen kann.

Befehl CREATE COMPUTE POOL in das Setup-Skript einfügen

Um einen Computepool im Verbraucherkonto zu erstellen, fügen Sie den Befehl CREATE COMPUTE POOL zum Setup-Skript der App hinzu.

Das folgende Beispiel zeigt, wie Sie einen Computepool innerhalb einer gespeicherten Prozedur im Setup-Skript erstellen:

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

Bemerkung

Wenn Sie einen Computepool innerhalb der App erstellen, sollten Anbieter überprüfen, ob der Anbieter die Berechtigung CREATE COMPUTE POOL erteilt hat, bevor sie den Computepool erstellen.

Eigentümer der von einer App erstellten Computepools ist ausschließlich diese App. Sie können nicht von anderen Anwendungen oder vom Verbraucher direkt verwendet werden.

Im Allgemeinen können Benutzer im Verbraucherkonto die von der App erstellten Computepools nur in den folgenden Situationen sehen:

  • Dem Benutzer wurde die Berechtigung MANAGE GRANTS erteilt.

  • Die App gewährt Zugriff auf den Computepool über Anwendungsrollen.

Benutzer mit der Rolle ACCOUNTADMIN können jedoch einen Computepool stoppen, anhalten und fortsetzen, auch wenn dessen Eigentümer eine App ist.

Präfix für den Computepool im Setup-Skript

Da es sich bei Computepools um Objekte auf Kontoebene handelt, müssen die Namen der Computepools innerhalb des Verbraucherkontos eindeutig sein. Das folgende Beispiel zeigt, wie Sie den Anwendungsnamen als Präfix für den Namen des Computepools verwenden:

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

Bewährte Verfahren für die Verwendung von Computepools in einer App mit Containern

Anbieter müssen beim Erstellen von Computepools im Verbraucherkonto Folgendes beachten:

  • Computepools haben Auswirkungen auf die Kosten. Es ist wichtig, dass Sie die Werte für die Eigenschaften min_nodes, max_nodes und instance_family so einstellen, dass die richtige Menge an Ressourcen verbraucht wird. Anbieter sollten auch die Eigenschaft AUTO_SUSPEND_SECS so einstellen, dass Computepools automatisch angehalten werden, wenn sie inaktiv sind.

    Weitere Informationen dazu finden Sie unter CREATE COMPUTE POOL.

  • Da es sich bei Computepools um Objekte auf Kontoebene handelt, müssen die Namen der Computepools innerhalb des Verbraucherkontos eindeutig sein. Erwägen Sie die Verwendung des Anwendungsnamens als Präfix für den Namen des Computepools.