MongoDB
Jak uruchomić MongoDB w CGC z oficjalnego obrazu, jak ustawić dane logowania użytkownika root i jak połączyć się z bazą wewnątrz namespace.
MongoDB jest wymieniony przez cgc db create --help, ale nie da się go w ten sposób utworzyć: licencja nie pozwala CGC udostępniać go jako aplikacji tworzonej jednym kliknięciem. cgc db create mongodb kończy się komunikatem odsyłającym do własnego obrazu i nic nie tworzy. Uruchom MongoDB samodzielnie poleceniem cgc compute create custom.
Uruchamianie
Utwórz wolumen na katalog danych i uruchom instancję z oficjalnego obrazu z ustawionymi danymi logowania użytkownika root:
cgc volume create -s 5 -sc <storage_class> mongo01-vol
cgc compute create custom -n mongo01 -c 1 -m 2 --image mongo:7 -v mongo01-vol -fp /data/db -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=<twoje_haslo>
Obraz startuje jako mongod --auth --bind_ip_all: serwer nasłuchuje na porcie 27017 i trzyma dane w /data/db, dlatego właśnie -fp /data/db jest właściwą ścieżką montowania.
Zawsze montuj ten wolumen. Bez niego dane leżą na ulotnym dysku poda i przepadają przy każdym restarcie, a nie tylko po usunięciu aplikacji: po cgc resource restart mongo01 instancja utworzona bez -v wraca z pustą bazą.
Z zamontowanym wolumenem dane przetrwają zarówno cgc resource restart mongo01, jak i usunięcie aplikacji i utworzenie jej ponownie z tym samym wolumenem i tym samym -fp /data/db. cgc compute delete usuwa aplikację razem z jej usługą, więc po ponownym utworzeniu trzeba jeszcze raz dodać port.
Domyślna konfiguracja
MONGO_INITDB_ROOT_USERNAME: użytkownik tworzony przy pierwszym uruchomieniu na pustym katalogu danych. Ustawadminlub dowolną inną nazwę.MONGO_INITDB_ROOT_PASSWORD: hasło tego użytkownika. Jeśli pominiesz obie zmienne, obraz uruchomimongodbez--authi każdy klient w namespace zostanie przyjęty bez uwierzytelniania.JUPYTER_PORT=8888orazJUPYTER_TOKEN: CGC dodaje te dwie zmienne do każdej aplikacjicustom. MongoDB je ignoruje.
Flaga -ce app_token= ustawia token aplikacji CGC, czyli wartość widoczną w cgc compute list -d, a nie hasło bazy danych. MongoDB odczytuje hasło ze zmiennej MONGO_INITDB_ROOT_PASSWORD, więc ustaw je właśnie tam; uwierzytelnienie tokenem aplikacji kończy się błędem Authentication failed.
Jak się połączyć
Aplikacja custom nie ma usługi, dopóki nie opublikujesz portu, a do tego czasu jej nazwa nie rozwiązuje się wewnątrz namespace: mongosh kończy się komunikatem getaddrinfo ENOTFOUND mongo01. Najpierw dodaj port MongoDB:
cgc compute port add mongo01 -p 27017 -n mongo
Aplikacja jest wtedy dostępna z każdej innej aplikacji w Twoim namespace jako mongo01:27017:
mongosh "mongodb://admin:<twoje_haslo>@mongo01:27017/admin"
Bez danych logowania serwer odpowiada Command listDatabases requires authentication.
Dodanie portu rejestruje również publiczny adres ingress, a w CLI 1.5.1 flaga -ni/--no-ingress temu nie zapobiega: port nadal jest wypisywany z ingress True. Zawsze nadawaj MongoDB silne hasło użytkownika root i sprawdzaj wynik poleceniem cgc compute port list mongo01.