Stai visualizzando la documentazione di Apigee Edge.
Vai alla documentazione di
Apigee X. informazioni
Annullamento del deployment di un proxy di Target ospitati
Quando esegui il dislocamento di un proxy Edge che include un'applicazione Destinazioni ospitate, l'app Destinazioni ospitate associata viene dislocata, ma l'immagine dell'applicazione sottostante non viene eliminata. Se esegui nuovamente il deployment del proxy, viene eseguito nuovamente il deployment dell'app target ospitati.
Eliminazione di un proxy di Destinazioni ospitate
Dopo aver eliminato un proxy target ospitati, l'esecuzione delle istanze di runtime sottostanti verrà interrotta entro un determinato periodo di tempo. Tuttavia, il codice dell'applicazione rimarrà invariato.
Accesso ai file di log
I file di log sono utili per il debug e la risoluzione dei problemi. Puoi visualizzare due tipi di file di log per un deployment di destinazioni ospitate:
- Log di compilazione: mostra l'output relativo al deployment e alla creazione di un'app con target ospitati.
- Log di runtime: mostra l'output relativo all'app Destinazioni ospitate in esecuzione. I log di runtime sono limitati all'ambiente e mostrano le informazioni dei log per la revisione del proxy attualmente di cui è stato eseguito il deployment.
Accesso ai log dalla UI Edge
- Vai alla pagina apigee.com/edge
- Inserisci le tue credenziali di accesso e fai clic su Accedi.
- Seleziona Sviluppa > Proxy API nel menu di navigazione laterale.
- Seleziona il proxy per il quale vuoi visualizzare i log.
- Fai clic sulla scheda Sviluppa.
- Per visualizzare il log di build, fai clic su Log di build.
- Per visualizzare il log di runtime, fai clic su Log di runtime.
Accesso ai log con l'API
Puoi anche utilizzare un'API Edge per recuperare i log di Destinazioni ospitate. Per maggiori dettagli, vedi Recuperare i log di Node.js memorizzati nella cache.
Utilizzo di un repository npm privato
Questa sezione spiega come eseguire il deployment di un proxy Node.js in Destinazioni ospitate nei casi in cui utilizzi un repository NPM privato nel tuo ambiente di sviluppo.
Cosa devi sapere sull'utilizzo di un repository privato
Quando esegui il deployment di un'app Node.js in Edge, tutte le dipendenze del progetto vengono importate automaticamente
nell'ambito della procedura di deployment.
In sostanza, i target ospitati eseguono npm install
sul codice durante il deployment.
Tuttavia, se utilizzi un repository NPM privato nel tuo ambiente di sviluppo, le dipendenze private non possono essere risolte nel cloud. In questo caso, la soluzione è utilizzare l'opzione --bundled-dependencies
quando utilizzi l'utilità di deployment apigeetool. Vedi anche
Esegui il deployment di Node.js dal tuo sistema a Edge.
Quando utilizzi il flag --bundled-dependencies
su apigeetool
, l'app Node.js viene caricata nei target ospitati e tutti i file locali/privati elencati
nell'arraydDependencies
in package.json
vengono compressi e caricati con il bundle.
Sebbene non si tratti di una situazione comune, tieni presente che se esegui il mirroring interno di un repository di Gestione dei partner di rete pubblico, il deployment avrà esito negativo
se il bundle di deployment include un file .npmrc
o package-lock.json
che punta al
tuo mirroring privato. In questo caso, assicurati di omettere .npmrc
o package-lock.json
dal bundle proxy di cui vuoi eseguire il deployment.
Deployment con un repository di Gestione dei partner di rete privato
Per utilizzare i moduli forniti da un repository NPM privato:
- Accedi a npm:
npm login
- Ottieni un token di autenticazione npm:
- Individua il file .npmrc (dovrebbe trovarsi in ~/.npmrc).
- In .npmrc, prendi nota del token alla fine della riga che ha il seguente aspetto:
//registry.npmjs.org/:_authToken=****
- In alternativa, utilizza i comandi
npm token <list | create | revoke>
per elencare, creare o revocare un token di autenticazione. Per ulteriori dettagli, consulta la documentazione di npm-token. - Accedi alla pagina di configurazione delle mappe chiave-valore, come descritto di seguito.
Edge
Per accedere alla pagina di configurazione delle mappe chiave-valore utilizzando l'interfaccia utente di Edge:
- Accedi ad apigee.com/edge.
- Seleziona Amministratore > Ambienti > Mappe coppie chiave-valore nella barra di navigazione a sinistra.
Perimetrale classico (Private Cloud)
Per accedere alla pagina di configurazione delle mappe chiave-valore utilizzando l'interfaccia utente di Edge classico:
- Accedi a
http://ms-ip:9000
, dove ms-ip è l'indirizzo IP o il nome DNS del nodo del server di gestione. - Seleziona API > Configurazione dell'ambiente > Mappe di valori chiave nella barra di navigazione in alto.
- Fai clic su + Mappa valore chiave.
- Nella finestra di dialogo Nuova mappatura di valori chiave, inserisci un nome e seleziona Crittografia.
- Fai clic su Aggiungi.
- Aggiungi il token di autenticazione che hai individuato o creato in precedenza come nuova voce in ognuna delle KVM appena create.
- Nel file app.yaml, aggiungi una voce che faccia riferimento alla KVM e alla chiave associata al token di autenticazione npm. Il sito dovrebbe avere il seguente aspetto:
- L'attributo name di primo livello corrisponde al nome della variabile di ambiente che verrà creata.
- Il valore name in valueRef corrisponde alla KVM che hai creato in precedenza.
- L'attributo key corrisponde alla chiave mappata al token npm che hai aggiunto alla KVM.
- Crea un file .npmrc nella stessa directory del file package.json. Questo
file dovrebbe avere il seguente aspetto:
//registry.npmjs.org/:_authToken=${NPM_TOKEN}
oppure, se non utilizziregistry.npmjs.org
, puoi impostare l'ambito nel file .npmrc aggiungendo una riga come questa@myscope:registry=https://mycustomregistry.example.org
Consulta anche la documentazione di npmrc. - Carica o aggiorna il proxy Node.js con i file .npmrc e app.yaml inclusi.
- Assicurati che il proxy nuovo o aggiornato venga implementato e funzioni con il modulo del repository privato preferito.
- Se il proxy non esegue il deployment, controlla i log di build per verificare se l'installazione del modulo npm privato non è riuscita. Se sì:
- Nella scheda Sviluppo, assicurati che sia presente il file .npmrc.
- Assicurati che il token sia valido (prova a installare il modulo localmente con il token presente nella VM).
- Se utilizzi un ambito personalizzato, assicurati che sia impostato.
env: - name: NPM_TOKEN valueRef: name: npm_store key: private_token
Dove:
Specifica della versione di Gestione dei partner di rete per le dipendenze in bundle
Per impostazione predefinita, Gestione dei partner di rete v4 viene utilizzata per installare le dipendenze in bundle nell'ambiente Destinazioni ospitate.
Tuttavia, se vuoi utilizzare una versione di Gestione dei partner di rete diversa, puoi specificarla nella variabile di ambiente NPM_VERSION
. Puoi impostare questa variabile nel file manifest dell'applicazione. Per maggiori dettagli, consulta Elementi del file manifest.
Se utilizzi le dipendenze in bundle e non specifichi NPM_VERSION
, i target ospitati utilizzano Gestione dei partner di rete v4 per impostazione predefinita. Se non utilizzi le dipendenze in bundle, viene utilizzata la versione di NPM inclusa nel runtime Node.js specificato.
Esempio di dipendenze in bundle
Per un esempio che mostra la funzionalità delle dipendenze in bundle con i target ospitati, consulta Come creare un'applicazione Node.js con funzioni ospitate utilizzando moduli personalizzati.Aggiungi un endpoint del controllo di integrità
Puoi implementare un endpoint per il controllo di integrità per la tua applicazione Node.js. Apigee utilizza questo endpoint quando la tua applicazione Node.js inizia a verificare che l'applicazione sia attiva e in esecuzione nel container.
Per impostazione predefinita, l'endpoint previsto da Apigee è /health
. Puoi modificare l'endpoint predefinito specificandolo in una variabile di ambiente denominata
HOSTED_TARGET_HEALTH_CHECK_PATH
. Puoi impostare questa variabile nel file manifest dell'applicazione. Per maggiori dettagli, consulta la sezione Elementi del file manifest.
L'implementazione di un endpoint di controllo di integrità non è obbligatoria. Tuttavia, se implementi un endpoint di controllo di integrità, tieni presente quanto segue:
- Se l'applicazione esce quando Apigee raggiunge l'endpoint, non verrà avviata come previsto.
- Se l'endpoint restituisce uno stato HTTP 404 - Non trovato, non è un problema.
/health
oHOSTED_TARGET_HEALTH_CHECK_PATH
viene utilizzato solo per verificare se l'applicazione è in esecuzione. La risposta effettiva viene ignorata.
Modificare la posizione della cache NPM
Le versioni più recenti di Node.js utilizzano una versione di NPM che utilizza /root/.npm
per la cache di NPM.
Questa posizione presenta un problema per i target ospitati perché la directory è di sola lettura
poiché il runtime del target ospitato utilizza un file system tmpfs in cui solo /tmp
è scrivibile.
Per risolvere il problema, puoi impostare la variabile di ambiente npm_config_cache
nel
app.yaml
file (file manifest)
della tua applicazione su una directory all'interno di /tmp
. Ad esempio:
runtime: node application: my-express-app env: - name: npm_config_cache value: /tmp/.npm - name: NODE_ENV value: production - name: LOG_LEVEL value: 3
Esegui l'applicazione senza Gestione dei partner di rete
Per impostazione predefinita, i target ospitati utilizzano npm start
per eseguire l'applicazione del target ospitato. Tuttavia,
nell'attività precedente abbiamo discusso di un problema con l'utilizzo di NPM, in quanto le versioni più recenti tenteranno di utilizzare
/root/.npm
per la cache NPM, che non è scrivibile e causa l'arresto anomalo del target ospitato. Sebbene l'attività precedente risolva il problema, un'altra opzione è eseguire l'applicazione senza NPM. Per farlo, puoi utilizzare i valori command
e args
nel app.yaml
file (file manifest) della tua applicazione per eseguire direttamente il target ospitato utilizzando node index.js
. Ad esempio:
runtime: node application: my-express-app command: node args: - index.js env: - name: NODE_ENV value: production - name: LOG_LEVEL value: 3Ovviamente, puoi utilizzare qualsiasi comando che ritieni opportuno e
node index.js
è solo un
esempio.