Redis
Jak uruchomić Redis w CGC z oficjalnego obrazu, jak nadać mu hasło, jak zachować jego dane i jak połączyć się z nim wewnątrz namespace.
Redis 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 redis kończy się komunikatem odsyłającym do własnego obrazu i nic nie tworzy. Uruchom Redis samodzielnie poleceniem cgc compute create custom.
Uruchamianie
Oficjalny obraz startuje bez żadnego hasła i z appendonly ustawionym na no, więc przekaż polecenie startowe, które ustawi hasło i włączy plik append-only. cgc compute create czyta polecenie startowe ze standardowego wejścia:
cgc volume create -s 5 -sc <storage_class> redis01-vol
echo 'redis-server --requirepass <twoje_haslo> --dir /data --appendonly yes' | cgc compute create custom -n redis01 -c 1 -m 2 --image redis:7 -v redis01-vol -fp /data
Serwer nasłuchuje na porcie 6379. --dir /data kieruje Redis na zamontowany wolumen, a --appendonly yes włącza plik append-only, dzięki czemu dane przetrwają zarówno cgc resource restart redis01, jak i usunięcie aplikacji i utworzenie jej ponownie z tym samym wolumenem i tym samym poleceniem startowym. cgc compute delete usuwa aplikację razem z jej usługą, więc po ponownym utworzeniu trzeba jeszcze raz dodać port.
Zawsze montuj ten wolumen i kieruj na niego --dir. Uruchomiony bez -v Redis trzyma dane na ulotnym dysku poda i przepadają one przy każdym restarcie, a nie tylko po usunięciu aplikacji: po cgc resource restart redis01 taka instancja wraca z DBSIZE równym 0.
Domyślna konfiguracja
- Kontener uruchamia dokładnie to polecenie, które przekażesz na standardowe wejście. Bez polecenia startowego obraz uruchamia zwykły
redis-server *:6379:requirepassjest pusty, aredis-cli PINGodpowiadaPONGbez żadnego hasła, więc wchodzi każdy klient w namespace. - Domyślne ustawienia takiego serwera to
dir/data,appendonlynoorazsave3600 1 300 100 60 10000. Bez--appendonly yesna wolumen trafiają wyłącznie te okresowe migawki, więc najnowsze zapisy nadal mogą przepaść. JUPYTER_PORT=8888orazJUPYTER_TOKEN: CGC dodaje te dwie zmienne do każdej aplikacjicustom. Redis je ignoruje.
Polecenie startowe nie może zawierać znaku |: klient usuwa z niego każdy | przed wysłaniem, a to, co stało za potokiem, trafia do redis-server jako dodatkowe argumenty i zatrzymuje go z błędem FATAL CONFIG FILE ERROR. Flaga -ce app_token= ustawia token aplikacji CGC, czyli wartość widoczną w cgc compute list -d, a nie hasło Redisa: na token aplikacji Redis odpowiada WRONGPASS i przyjmuje wyłącznie hasło z --requirepass.
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. Najpierw dodaj port Redisa:
cgc compute port add redis01 -p 6379 -n redis
Aplikacja jest wtedy dostępna z każdej innej aplikacji w Twoim namespace jako redis01:6379:
redis-cli -h redis01 -p 6379 -a <twoje_haslo> PING
Polecenie odpowiada PONG. Bez -a Redis odpowiada NOAUTH Authentication required.
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 uruchamiaj Redis z --requirepass i sprawdzaj wynik poleceniem cgc compute port list redis01.