Salta al contenuto

Documentazione

Pelican

Pelican fa girare i suoi server di gioco: un egg descrive da che cosa è costruito un server, un nodo lo ospita, un’assegnazione gli dà il suo indirizzo. Provibr lo raggiunge da un agente all’interno della sua rete, quindi il pannello non ha bisogno di alcuna porta in entrata e non vi viene installato nulla.

Due chiavi API

Pelican ha due API con due chiavi diverse, e Provibr ha bisogno di entrambe. Provengono da due schermate diverse e devono appartenere entrambe a un account con diritti di amministratore.

  • La chiave applicazione, da Admin → API Keys. Inizia con papp_ e gestisce i server: creare, sospendere, reinstallare, eliminare. Le conceda accesso in lettura e scrittura a Server, Node, Allocation, User ed Egg.
  • La chiave client, dal suo Profile → API Keys. Inizia con pacc_ e trasporta i comandi di accensione e spegnimento, i dati di utilizzo in tempo reale e la console.
Copi la chiave client nel momento in cui compare. Pelican la mostra una sola volta e in seguito l’elenco conserva soltanto un identificatore breve, e quell’identificatore viene accettato come chiave: incollarlo dà quindi un semplice errore di autenticazione anziché un indizio che ha copiato la cosa sbagliata. La chiave applicazione si può rileggere per intero dall’elenco.
Non esiste un’alternativa da riga di comando: Pelican non fornisce alcun comando artisan per le chiavi API, quindi entrambe si creano tramite l’interfaccia web.

Che cosa si inserisce

Quattro campi, e solo l’ultimo è facoltativo.

  • L’indirizzo del pannello, ad esempio https://panel.example.com. Aggiunga una porta solo se il pannello gira davvero su una; dietro a un reverse proxy risponde sulla porta predefinita del suo schema.
  • La chiave applicazione, che inizia con papp_.
  • La chiave client, che inizia con pacc_.
  • L’impronta TLS del pannello, necessaria solo quando il suo certificato è autofirmato.
Faccia attenzione a quale chiave va in quale campo. Pelican accetta una chiave client anche sull’API di gestione, quindi scambiare le due non produce un errore visibile: il prefisso è l’unica cosa che le distingue, e Provibr lo controlla su entrambi i lati proprio per questo motivo.

Certificato autofirmato

Se il pannello presenta un certificato autofirmato, inserisca la sua impronta. L’agente si fida allora di quel singolo certificato invece di disattivare la verifica. La legga con:

shell
openssl s_client -connect <host>:443 </dev/null 2>/dev/null | \
  openssl x509 -noout -fingerprint -sha256
I comandi e l’output del terminale sono in inglese ovunque, nel pannello e in queste pagine. Un solo testo, una sola verità: quello che legge qui è letteralmente ciò che il suo host le restituirà.

Lasci il campo vuoto per un certificato di un’autorità pubblica, e lo stesso quando il pannello è raggiungibile solo tramite http: un’impronta accanto a un indirizzo http viene rifiutata, perché non c’è alcun certificato da fissare. Un pannello in http in chiaro funziona, ma entrambe le chiavi viaggiano allora senza cifratura sulla sua rete.

Gli egg e le loro variabili

Un server è costruito a partire da un egg: un’immagine Docker, un comando di avvio e un insieme di variabili definite dall’egg stesso. Provibr legge l’elenco dal suo pannello, così il modulo d’ordine propone gli egg che ha davvero invece di chiedere un numero.

Provibr rifiuta un ordine quando una variabile che l’egg segna come obbligatoria viene lasciata vuota, anche se il pannello stesso l’accetterebbe. È una scelta voluta: Pelican crea comunque il server e il container va poi in crash al primo avvio, una risposta ben peggiore di un campo che diventa rosso.

I piani

Un piano di gioco contiene l’egg, l’immagine, il comando di avvio e i limiti che riceve un server. Lo colleghi a una o più integrazioni Pelican e diventa ordinabile.

Memoria, disco e CPU accettano 0 per illimitato, e il limite di CPU si conta in percentuale di un core: 100 è un core intero, 200 sono due. Il peso I/O va da 0 a 1000 e 500 è il valore consueto.

Su quale nodo finisce un server

Pelican comunica quanta memoria e quanta CPU ha ciascun nodo, e quanta ne è già stata distribuita. Provibr usa entrambe: un nuovo server va su un nodo che ha spazio per accoglierlo, e viene rifiutato con una motivazione quando nessun nodo ne ha.

I dati che il pannello comunica sono una sua contabilità, non una misurazione: sommano i limiti dei server su un nodo, compresi quelli ancora in fase di installazione. Un nodo può quindi sembrare pieno mentre in realtà gira ben poco.

Che cosa si può fare con un server

L’intera vita di un server di gioco, dal pannello o tramite l’API:

  • Crearlo a partire da un piano ed eliminarlo quando il cliente se ne va.
  • Avviarlo, arrestarlo, riavviarlo e forzarne l’arresto.
  • Sospenderlo e riattivarlo: è anche ciò che avviene automaticamente quando un account supera il proprio limite.
  • Reinstallarlo, operazione che esegue di nuovo lo script di installazione del suo egg.

La console

Un server di gioco si guida dalla sua console: comandi, giocatori e la riga di log che spiega un crash. Funziona nel pannello attraverso la stessa connessione in uscita di tutto il resto, quindi non c’è una porta separata né un secondo accesso.

I server già presenti

I server creati al di fuori di Provibr vengono lasciati intatti. Li può importare in modo che compaiano nel pannello e incidano sulla sua capacità: è così che si trasferisce un pannello esistente senza ricostruire nulla.

L’importazione non tocca il server; si limita a iniziare a conteggiarlo. Finché non lo importa, Provibr non lo gestisce né lo tariffa.

Che cosa non fa questa integrazione

File, backup, database e pianificazioni restano nel pannello Pelican, e così pure la gestione del pannello e dei suoi nodi. Provibr copre la vita di un server e la sua console, non l’amministrazione del suo pannello.

Pelican è a sua volta ancora in beta e la sua API cambia da una release all’altra. Provibr è testato sulla 1.0.0 e il pannello non offre alcun modo per chiedere quale versione esegue, quindi un aggiornamento che cambia una risposta si manifesta come un errore anziché come un avviso preventivo. Legga le note di rilascio prima di aggiornare un pannello con cui Provibr dialoga.