Legare un'istanza di servizio a un'applicazione, a un lavoro o a un carico di lavoro di una funzione
È possibile integrare un'istanza di servizio IBM Cloud alle risorse di un progetto IBM Cloud® Code Engine utilizzando i binding di servizio.
Dopo aver determinato l'istanza di servizio che si desidera associare al carico di lavoro Code Engine e dopo essersi assicurati di aver configurato l'accesso per i binding dei servizi, si è pronti per associare l'istanza di servizio al carico di lavoro dell'applicazione, del lavoro o della funzione Code Engine.
Prima di iniziare
- Creare un progetto.
- Creare un carico di lavoro Code Engine da associare all'istanza del servizio. Il carico di lavoro che si vuole associare all'istanza del servizio deve esistere.
- Creare l'istanza del servizio da associare al carico di lavoro Code Engine.
- Configurare l'accesso per i binding dei servizi.
L'accesso per i binding dei servizi deve essere configurato prima di poter associare un'istanza di servizio a un'applicazione, a un lavoro o a un carico di lavoro di una funzione Code Engine. Configurare l'accesso per i binding dei servizi a seconda che si desideri che Code Engine crei e gestisca automaticamente l'ID del servizio per l'utente o che si desideri utilizzare un ID del servizio gestito dall'utente.
- Quando si lavora con i binding dei servizi, qual è la relazione tra l'ID del servizio, i segreti di accesso al servizio e le credenziali del servizio?
-
In Code Engine, un service binding è la relazione tra un'applicazione, un lavoro o un carico di lavoro di una funzione e un altro servizio di IBM Cloud. Code Engine utilizza un ID di servizio per creare le credenziali per una specifica istanza del servizio di IBM Cloud. Queste credenziali sono credenziali di servizio e vengono utilizzate dal progetto Code Engine per interagire con l'istanza del servizio. Le credenziali del servizio sono memorizzate in un segreto di accesso al servizio. Un segreto di accesso al servizio è accessibile a un'applicazione, a un lavoro o a una funzione con le credenziali del servizio e viene utilizzato per interagire con l'istanza del servizio.
-
Quando si crea l'istanza del servizio IBM Cloud, si può scegliere di creare la credenziale del servizio per tale istanza. In alternativa, quando si crea un binding di servizio, si può scegliere che Code Engine crei automaticamente la credenziale dell'istanza di servizio se si è configurato l'accesso per i binding di servizio.
-
Sia che si scelga che Code Engine crei automaticamente la credenziale di servizio per l'utente, sia che si crei manualmente la credenziale di servizio per un'istanza di servizio specifica, è necessario specificare il ruolo Identity and Access Management (IAM) per la credenziale di servizio. Il ruolo specificato definisce l'interazione consentita con l'istanza di servizio specifica e con l'applicazione, il lavoro o la funzione Code Engine vincolata. Ad esempio, se si crea un binding di servizio da Code Engine a un'istanza di servizio di IBM Cloudant e si desidera che l'applicazione, il lavoro o la funzione leggano solo dal database IBM Cloudant, selezionare il ruolo
Reader.
Collegamento di un'istanza di servizio a un'applicazione o a un lavoro di Code Engine dalla console
È possibile creare un binding di servizio che lega un'istanza di servizio esistente a un'applicazione o a un lavoro di Code Engine utilizzando la console. Per creare un binding di servizio per una funzione, è necessario utilizzare la CLI.
Legare un'istanza di servizio con un nuovo segreto di accesso al servizio (con una credenziale autogenerata Code Engine )
Creiamo un binding di servizio per legare un'istanza di servizio a un'applicazione o a un lavoro con un nuovo segreto di accesso al servizio che utilizza una credenziale di servizio generata automaticamente da Code Engine. Per questo esempio,
creare un binding di servizio dalla console per l'applicazione myapp e scegliere che Code Engine crei automaticamente la credenziale di servizio per un'istanza del servizio IBM Cloud. Prima che Code Engine possa creare automaticamente
la credenziale del servizio, assicurarsi di configurare l'accesso a Code Engine per creare e gestire automaticamente l'ID del servizio per i binding del servizio.
- Dopo che il progetto è in stato attivo, fare clic sul nome del progetto nella pagina Code Engine Projects.
- Dalla pagina Panoramica, fare clic su Legami di servizio.
- Dalla pagina Legami di servizio, fare clic su Crea per creare il legame.
- Selezionare l'istanza del servizio " IBM " che si desidera associare all'applicazione o al processo " Code Engine ".
- Selezionare l'applicazione o il lavoro Code Engine che si desidera associare all'istanza del servizio; ad esempio, scegliere l'applicazione
myapp. - Specificare il segreto di accesso al servizio da utilizzare con questo binding. Il segreto di accesso al servizio memorizza le credenziali per il binding del servizio. Si noti che viene elencata qualsiasi credenziale di servizio precedentemente
definita per l'istanza di servizio specifica, non associata all'applicazione o al lavoro selezionato. Se non esiste un segreto di accesso al servizio, si sta creando un nuovo segreto. Se esiste un segreto di accesso al servizio, per creare
un nuovo segreto di accesso al servizio con una nuova credenziale di servizio per questo binding, selezionare Nuovo segreto. Completare la seguente procedura.
- Selezionare il ruolo per la credenziale dell'istanza di servizio.
- Espandi le opzioni avanzate.
- Per Code Engine creare automaticamente la credenziale di servizio a un'istanza di servizio IBM Cloud, selezionare
Auto-generate. - (facoltativo) Specificare un prefisso personalizzato per il binding del servizio. Se non si specifica un prefisso personalizzato, Code Engine genera automaticamente un prefisso. Il prefisso viene utilizzato per distinguere le variabili d'ambiente create per questo binding di servizio.
- Fare clic su Aggiungi per creare il binding del servizio.
- Ora che il binding del servizio all'applicazione o al lavoro è stato creato dalla console, è possibile visualizzare un elenco di tutti i binding del servizio definiti tra le istanze del servizio e le applicazioni e i lavori di Code Engine dalla pagina Binding del servizio.
In alternativa, è possibile creare e gestire i binding dei servizi a specifiche applicazioni e lavori dalla pagina specifica dell'applicazione o del lavoro di Code Engine nella console. Per lavorare con i binding dei servizi nel contesto dell'applicazione o del lavoro, accedere alla scheda Binding dei servizi per l'applicazione o il lavoro specifico.
Legare un'istanza di servizio con un nuovo segreto di accesso al servizio (con una credenziale esistente)
Si supponga di voler creare un binding di servizio per vincolare un'istanza di servizio a un'applicazione o a un lavoro con un nuovo segreto di accesso al servizio che utilizza una credenziale di servizio esistente. La credenziale di servizio
esistente potrebbe essere stata generata automaticamente da Code Engine, oppure potrebbe essere stata creata manualmente. Per questo esempio, creare un binding di servizio per il lavoro myjob, con un nuovo segreto di accesso
al servizio che utilizza una credenziale di servizio esistente.
- Dopo che il progetto è in stato attivo, fare clic sul nome del progetto nella pagina Code Engine Projects.
- Dalla pagina Panoramica, fare clic su Legami di servizio.
- Dalla pagina Legami di servizio, fare clic su Crea per creare il legame.
- Selezionare l'istanza del servizio " IBM " che si desidera associare all'applicazione o al processo " Code Engine ".
- Selezionare l'applicazione o il lavoro Code Engine che si desidera associare all'istanza di servizio; ad esempio, scegliere il lavoro
myjob. - Specificare il segreto di accesso al servizio da utilizzare con questo binding. Il segreto di accesso al servizio memorizza le credenziali per il binding del servizio. Si noti che viene elencata qualsiasi credenziale di servizio precedentemente
definita per l'istanza di servizio specifica, non associata all'applicazione o al lavoro selezionato. Se non esiste un segreto di accesso al servizio, si sta creando un nuovo segreto. Se esiste un segreto di accesso al servizio, per creare
un nuovo segreto di accesso al servizio con una nuova credenziale di servizio per questo binding, selezionare Nuovo segreto. Completare la seguente procedura.
- Selezionare il ruolo per la credenziale dell'istanza di servizio.
- Espandi le opzioni avanzate.
- Selezionare la credenziale di servizio da utilizzare con questo segreto di accesso al servizio.
- (facoltativo) Specificare un prefisso personalizzato per il binding del servizio. Se non si specifica un prefisso personalizzato, Code Engine genera automaticamente un prefisso. Il prefisso viene utilizzato per distinguere le variabili d'ambiente create per questo binding di servizio.
- Fare clic su Aggiungi per creare il binding del servizio.
- Ora che il binding del servizio all'applicazione o al lavoro è stato creato dalla console, è possibile visualizzare un elenco di tutti i binding del servizio definiti tra le istanze del servizio e le applicazioni e i lavori di Code Engine dalla pagina Binding del servizio.
In alternativa, è possibile creare e gestire i binding dei servizi a specifiche applicazioni e lavori dalla pagina specifica dell'applicazione o del lavoro di Code Engine nella console. Per lavorare con i binding dei servizi nel contesto dell'applicazione o del lavoro, accedere alla scheda Binding dei servizi per l'applicazione o il lavoro specifico.
Legare un'istanza di servizio con un segreto di accesso al servizio esistente
È possibile riutilizzare i segreti di accesso ai servizi nei binding dei servizi. Per una specifica istanza del servizio IBM Cloud, è possibile riutilizzare i segreti di accesso al servizio con diverse applicazioni o lavori. Non è possibile riutilizzare un segreto di accesso al servizio per la stessa applicazione o lavoro per cui il segreto di accesso al servizio è stato originariamente creato. Poiché la credenziale del servizio è memorizzata all'interno del segreto di accesso al servizio, è importante considerare i seguenti punti:
-
È possibile avere più applicazioni o lavori legati alla stessa istanza del servizio IBM Cloud con lo stesso segreto di accesso al servizio.
-
Un segreto di accesso al servizio non può essere riutilizzato in un binding di servizio per la stessa applicazione o lavoro. Tuttavia, è possibile riutilizzare lo stesso segreto di accesso al servizio in un'altra applicazione o lavoro. Poiché un segreto di accesso al servizio è associato a un'istanza specifica del servizio IBM Cloud, è possibile riutilizzare solo il segreto di accesso al servizio in un'altra applicazione o lavoro, se ci si lega alla stessa istanza del servizio.
Creiamo un binding di servizio per legare un'istanza di servizio a un lavoro che utilizza un segreto di accesso al servizio esistente. Ad esempio, creare un binding di servizio per il lavoro myjob e scegliere un segreto di accesso
al servizio esistente per un'istanza di servizio specifica.
- Dopo che il progetto è in stato attivo, fare clic sul nome del progetto nella pagina Code Engine Projects.
- Dalla pagina Panoramica, fare clic su Legami di servizio.
- Dalla pagina Legami di servizio, fare clic su Crea per creare il legame.
- Selezionare l'istanza del servizio " IBM " che si desidera associare all'applicazione o al processo " Code Engine ".
- Selezionare l'applicazione o il processo " Code Engine " che si desidera associare all'istanza del servizio.
- È possibile riutilizzare una credenziale esistente per il segreto di accesso al servizio per un binding di servizio a un'istanza specifica del servizio IBM Cloud con un'applicazione o un lavoro diverso. In questo caso, selezionare Segreto esistente.
Si noti che viene elencata qualsiasi credenziale di servizio precedentemente definita per l'istanza di servizio specifica, che non è associata all'applicazione o al lavoro selezionato. Completare la seguente procedura.
- Esaminare l'elenco dei segreti esistenti e selezionare il segreto che si desidera utilizzare con questo service binding.
- (facoltativo) Specificare un prefisso personalizzato per il binding del servizio. Se non si specifica un prefisso personalizzato, Code Engine genera automaticamente un prefisso. Il prefisso viene utilizzato per distinguere le variabili d'ambiente create per questo binding di servizio.
- Fare clic su Aggiungi per creare il binding del servizio.
- Ora che il binding del servizio all'applicazione o al lavoro è stato creato dalla console, è possibile visualizzare un elenco di tutti i binding del servizio definiti tra le istanze del servizio e le applicazioni e i lavori di Code Engine dalla pagina Binding del servizio.
In alternativa, è possibile creare e gestire i binding dei servizi a specifiche applicazioni e lavori dalla pagina specifica dell'applicazione o del lavoro di Code Engine nella console. Per lavorare con i binding dei servizi nel contesto dell'applicazione o del lavoro, accedere alla scheda Binding dei servizi per l'applicazione o il lavoro specifico.
Legare un'istanza di servizio a un'applicazione, a un lavoro o a una funzione di Code Engine con la CLI
È possibile creare un binding di servizio che lega un'istanza di servizio esistente a un'applicazione, un lavoro o una funzione di Code Engine con la CLI.
Prima di iniziare
-
Configurare l'ambiente Code Engine CLI.
-
Creare l'istanza del servizio da associare al carico di lavoro Code Engine.
Ad esempio, per creare un'istanza del servizio IBM Cloud Object Storage (piano Lite):
ibmcloud resource service-instance-create my-object-storage cloud-object-storage lite global -g Default -
Creare un carico di lavoro Code Engine.
Legare un'istanza di servizio con una nuova credenziale
- Per associare la nuova istanza di servizio all'applicazione Code Engine e generare una nuova credenziale di servizio, utilizzare il comando
ibmcloud ce application bind. - Per associare l'istanza del servizio a un lavoro di Code Engine, utilizzare il comando
ibmcloud ce job bindil comando. - Per vincolare l'istanza del servizio a una funzione di Code Engine, utilizzare il comando
ibmcloud ce function bind.
Per creare un'applicazione da utilizzare per questi passaggi, eseguire il seguente comando.
ibmcloud ce application create --name my-application --image icr.io/codeengine/hello
-
Identificare il nome dell'istanza del servizio che si desidera associare all'applicazione, al lavoro o alla funzione. È possibile trovare tutte le istanze di servizio presenti nel proprio account per il gruppo di risorse corrente eseguendo il comando
ibmcloud resource service-instancesad esempio,ibmcloud resource service-instancesOutput di esempio
Name Location State Type Resource Group ID my-object-storage global active service_instance 325d80be5d7945608f6d121712c96ee9 -
Legare l'istanza del servizio all'applicazione, al lavoro o alla funzione Code Engine e generare una nuova credenziale di servizio con il ruolo di servizio predefinito. Il ruolo predefinito del servizio è Manager o il primo ruolo fornito dal servizio se Manager non è supportato. Nell'esempio seguente,
application bindesegue il binding dell'istanza del serviziomy-object-storagecon l'applicazione chiamatamy-application. Per questa azione di binding viene generata una nuova credenziale di servizio con il ruolo Manager.ibmcloud ce application bind --name my-application --service-instance my-object-storageLa tabella seguente riassume le opzioni utilizzate con il comando
application bindin questo esempio. Per ulteriori informazioni sul comando e sulle sue opzioni, vedere il comandoibmcloud ce application bindcomando.Opzioni comando Opzione Descrizione --nameIl nome dell'applicazione da associare. Questo valore è obbligatorio. --service-instanceSpecificare il nome di un'istanza di servizio esistente da associare all'applicazione. Questo valore è obbligatorio. Output di esempio
Binding service instance... Status: Done Waiting for application revision to become ready... The Configuration is still working to reflect the latest desired specification. Traffic is not yet migrated to the latest revision. Ingress has not yet been reconciled. Waiting for load balancer to be ready. OK -
Verificare che le credenziali siano state generate utilizzando il metodo
application get, iljob geto il comandofunction geto il comando. Nell'esempio seguente, verificare che le credenziali create nell'esempio precedente siano state create.ibmcloud ce application get --name my-applicationOutput di esempio
[...] Service Bindings: Name ID Service Instance Service Type Role / Credential Environment Variable Prefix my-application-app-ce-service-binding-abcde abcde5d3-dfc3-4f52-b133-b869b5eabcde my-object-storage cloud-object-storag Writer CLOUD_OBJECT_STORAGE [...]
Legare un'istanza di servizio a un ruolo specifico
- Per associare la nuova istanza di servizio all'applicazione Code Engine e generare una nuova credenziale di servizio, utilizzare il comando
ibmcloud ce application bind. - Per associare l'istanza del servizio a un lavoro di Code Engine, utilizzare il comando
ibmcloud ce job bindil comando. - Per vincolare l'istanza del servizio a una funzione di Code Engine, utilizzare il comando
ibmcloud ce function bind.
Per creare una funzione da utilizzare per questi passaggi, eseguire il seguente comando.
ibmcloud ce function create --name myfun --runtime nodejs --build-source https://github.com/IBM/CodeEngine --build-context-dir /helloworld-samples/function-codebundle-nodejs
-
Identificare il nome dell'istanza del servizio che si desidera associare all'applicazione, al lavoro o alla funzione. È possibile trovare tutte le istanze di servizio presenti nel proprio account per il gruppo di risorse corrente eseguendo il comando
ibmcloud resource service-instancesad esempio,ibmcloud resource service-instancesOutput di esempio
Name Location State Type Resource Group ID my-object-storage global active service_instance 325d80be5d7945608f6d121712c96ee9 -
Legare l'istanza del servizio all'applicazione, al lavoro o alla funzione Code Engine e generare una nuova credenziale di servizio con un ruolo specifico. Per ulteriori informazioni sui ruoli di servizio IAM, vedere Ruoli di accesso ai servizi. Nell'esempio seguente, il comando
function bindvincola l'istanza del serviziomy-object-storagealla funzione chiamatamy-functionutilizzando il ruolo di servizio Writer. Per questa azione di binding viene generata una nuova credenziale di servizio con il ruolo di writer. Specificando l'opzione--prefix, viene aggiunto un prefisso alle variabili d'ambiente create dai binding dei servizi.ibmcloud ce function bind --name my-function --service-instance my-object-storage --role Writer --prefix MYPREFIXLa tabella seguente riassume le opzioni utilizzate con il comando
function bindin questo esempio. Per ulteriori informazioni sul comando e sulle sue opzioni, vedere il comandoibmcloud ce function bindcomando.Opzioni comando Opzione Descrizione --nameIl nome della funzione di cui eseguire il binding. Questo valore è obbligatorio. --prefixIl prefisso delle variabili d'ambiente create per questo binding di servizio. Ad esempio, --prefix MYPREFIXaggiunge il prefissoMYPREFIXa tutte le variabili d'ambiente create per questo binding di servizio. Per ulteriori informazioni, vedere Metodo del prefisso.--service-instanceSpecificare il nome di un'istanza di servizio esistente da associare alla funzione. Questo valore è obbligatorio. --roleIl nome di un ruolo di servizio per le nuove credenziali di servizio create per questo binding di servizio. I valori validi includono Reader,Writer,Managero un ruolo specifico del servizio. Se l'opzione--rolenon è specificata, l'impostazione predefinita èManagero il primo ruolo fornito dal servizio seManagernon è supportato. Questa opzione viene ignorata se viene specificato--service-credential.Output di esempio
Binding service instance... Status: Done OK -
Verificare che le credenziali siano state generate utilizzando il pulsante
application get, il comandojob geto il comandofunction get. Nell'esempio seguente, verificare che le credenziali create nell'esempio precedente siano state create.ibmcloud ce function get --name my-functionOutput di esempio
[...] Service Bindings: Name ID Service Instance Service Type Role / Credential Environment Variable Prefix my-function-ce-service-binding-abcde abcde5d3-dfc3-4f52-b133-b869b5eabcde my-object-storage cloud-object-storage Writer MYPREFIX 30s [...]
Legare un'istanza di servizio con le credenziali esistenti
Se si è già creata una credenziale per l'istanza del servizio e si desidera utilizzarla per il binding del servizio, aggiungere l'opzione --service-credentials.
Per creare un lavoro da utilizzare per questi passaggi, eseguire il seguente comando.
ibmcloud ce job create --name my-job --image icr.io/codeengine/hello
-
Identificare il nome dell'istanza del servizio che si desidera associare all'applicazione, al lavoro o alla funzione. È possibile trovare tutte le istanze di servizio presenti nel proprio account per il gruppo di risorse corrente eseguendo il comando
ibmcloud resource service-instancesad esempio,ibmcloud resource service-instancesOutput di esempio
Name Location State Type Resource Group ID my-object-storage global active service_instance 325d80be5d7945608f6d121712c96ee9 -
Trovare le credenziali dell'istanza del servizio.
ibmcloud resource service-keys --instance-name INSTANCENAMEOutput di esempio
Name State Created At my-cos-credential active Tue Mar 2 01:15:33 UTC 2021Per visualizzare i dettagli di una credenziale di servizio, eseguire
ibmcloud resource service-key KEYNAME. È possibile trovare tutte le chiavi di servizio del gruppo di risorse eseguendoibmcloud resource service-keys. -
Legare l'istanza del servizio all'applicazione, al lavoro o alla funzione con le credenziali esistenti. Ad esempio, il seguente
job bindvincola l'istanza del serviziomy-object-storagecon le credenziali del servizio esistente chiamatomy-cos-credentiala un lavoro esistente chiamatomyjob.ibmcloud ce job bind --name myjob --service-instance my-object-storage --service-credential my-cos-credentialLa tabella seguente riassume le opzioni utilizzate con il comando
job bindin questo esempio. Per ulteriori informazioni sul comando e sulle sue opzioni, vedere il comandoibmcloud ce job bindcomando.Opzioni comando Opzione Descrizione --nameIl nome del processo da associare. Questo valore è obbligatorio. --service-instanceSpecificare il nome di un'istanza di servizio esistente da associare al lavoro. Questo valore è obbligatorio. --service-credentialIl nome della credenziale di servizio esistente da associare. -
Verificare che le credenziali siano state generate utilizzando il metodo
application get, iljob geto il comandofunction geto il comando. Nell'esempio seguente, verificare che le credenziali create nell'esempio precedente siano state create.ibmcloud ce job get --name myjobOutput di esempio
[...] Service Bindings: Name ID Service Instance Service Type Role / Credential Environment Variable Prefix myjob-ce-service-binding-abcde abcde645-d3f9-407d-b964-6c3ae69abcde my-object-storage cloud-object-storage my-cos-credential CLOUD_OBJECT_STORAGE [...]
Scollegamento delle istanze di servizio
Lo scollegamento delle istanze di servizio da un'applicazione, da un lavoro o da un carico di lavoro di una funzione rimuove i legami di servizio esistenti.
Quando si effettua l'unbind (o si rimuove) di un binding di servizio, si elimina l'associazione del carico di lavoro dell'applicazione, del lavoro o della funzione con il segreto di accesso al servizio, in modo che il carico di lavoro non abbia più accesso al servizio IBM Cloud precedentemente vincolato.
Una volta definito un service binding tra l'applicazione e un'istanza di servizio, il service binding è attivo finché l'applicazione e l'istanza di servizio sono attive o non è stata completata un'operazione di unbind per rimuovere il service binding. Se l'istanza del servizio viene eliminata, è necessario eliminare manualmente il binding del servizio.
Rimuovere il collegamento di un'istanza di servizio dalla console
- Dalla pagina Code Engine Progetti, andate al vostro progetto.
- Dalla pagina Panoramica, fare clic su Legami di servizio per visualizzare un elenco di tutti i legami di servizio definiti. Se invece si desidera gestire i binding dei servizi dal contesto dell'applicazione o del lavoro, dalla pagina Panoramica, fare clic su Applicazioni o lavori e fare clic sul nome dell'applicazione o del lavoro. Dalla pagina dell'applicazione o del lavoro specifico, accedere alla scheda Legami di servizio>.
- Dall'elenco dei binding di servizio, eliminare il binding che si desidera rimuovere dall'applicazione o dal lavoro. Fare clic sull'icona Azioni
Azioni > Elimina per eliminare il binding del servizio.
Scollegamento di un'istanza di servizio con la CLI
-
Individuare il binding del servizio che si desidera rimuovere con i tasti
application get,job get, o con il comandofunction getad esempio,ibmcloud ce application get --name my-applicationOutput di esempio
[...] Service Bindings: Name ID Service Instance Service Type Role / Credential Environment Variable Prefix my-application-app-ce-service-binding-abcde abcde5d3-dfc3-4f52-b133-b869b5eabcde my-object-storage cloud-object-storage Writer CLOUD_OBJECT_STORAGE [...] -
Rimuovere il binding del servizio utilizzando i tasti
application unbind,job unbind, ofunction unbind.- Per rimuovere un singolo legame, specificare le opzioni
--namee--binding.
ibmcloud ce application unbind --name APPLICATION_NAME --binding BINDING_NAME ``` * Per disabbinare tutte le istanze del servizio, utilizzare l'opzione `--all`. ```txt {: pre} ibmcloud ce job unbind --name JOB_NAME --all ``` - Per rimuovere un singolo legame, specificare le opzioni