Registrazione di servizi esterni tramite la CLI

Per collegare le applicazioni a servizi che operano in ambienti diversi da Kubernetes, registrare i servizi esterni utilizzando la CLI di palmctl .

Prima di cominciare

  • Distribuire il cluster Kubernetes in una sottorete che possa essere instradata verso il servizio esterno.
  • Installare l'agente Open Horizon nel cluster Kubernetes.
  • Installare il gateway edge Service Interconnect® per stabilire la capacità di proxy verso i servizi esterni. Vedere Registrazione delle risorse dell'infrastruttura tramite la CLI di Mesh.

Informazioni su questa attività

Gli esempi di questa procedura utilizzano yq per analizzare l'oggetto risposta dell'API. Se la vostra distribuzione Linux® non ha yq come impostazione predefinita, potete installarlo o usare un elaboratore di testo alternativo.

Procedura

  1. Ottenere gli ID della risorsa dell'infrastruttura da utilizzare durante il processo di registrazione del servizio esterno. Impostare il nome dell'infrastruttura che si applica al gateway distribuito.
    #Existing infrastructure names
    CLOUD_NAME="MyCloud"
    NET_SEG_NAME="MyNetworkSegment"
    CLUSTER_NAME="MyCluster"
    NAMESPACE_NAME="MyNamespace"
    APP_RESOURCE_GROUP_NAME="MyResourceGroup"
    
    #Get existing infrastructure resource ids
    CLOUD_ID=$(palmctl get cloud -\-name $CLOUD_NAME | yq .resource_id)
    NET_SEG_ID=$(palmctl get networksegment -\-name $NET_SEG_NAME | yq .resource_id)
    CLUSTER_ID=$(palmctl get deploymentenv -\-name $CLUSTER_NAME | yq .resource_id)
    NAMESPACE_ID=$(palmctl get namespace -\-cloud-id $CLOUD_ID -\-cluster-id $CLUSTER_ID -\-name $NAMESPACE_NAME | yq .resource_id)
    APP_RESOURCE_GROUP_ID=$(palmctl get resource-group -\-name $APP_RESOURCE_GROUP_NAME | yq .resource_id)
    Nota: Creare la risorsa nel secondo cluster, il cluster proxy a cui si indirizza il servizio esterno. Il primo cluster scopre automaticamente le risorse e i servizi.
  2. Registrate l'applicazione e poi impostate una variabile d'ambiente sull'ID dell'applicazione eseguendo comandi come questi:
    
    cat << EOM | palmctl create application -f -
    name: Order API
    description: This is a backend application that provides ordering services via a REST API
    labels:
    - label1:value1
    - label2:value2
    network_segment_id: $NET_SEG_ID
    resource_group_id: $APP_RESOURCE_GROUP_ID
    EOM
    
    APP_ID=$(palmctl get application --name 'Order API' | yq .resource_id)
    Note:
    • Date alla vostra applicazione un nome significativo.
    • È inoltre possibile definire il gruppo di risorse dell'applicazione, inserire una descrizione o aggiungere etichette.
  3. Registrate il servizio e poi impostate una variabile d'ambiente con l'ID del servizio eseguendo comandi come questi:
    cat << EOM | palmctl create service --application-id $APP_ID -f -
    name: order-api
    labels:
      - label1:value1
      - label2:value2
    ports:
      - port_number: "8080"
        protocol: TCP
    EOM
    
    SERVICE_ID=$(palmctl get service --application-id $APP_ID --name order-api | yq .resource_id)
    Note:
    • Per l'attributo name nell'input YAML del comando, utilizzare il nome accessibile via DNS che le applicazioni client del segmento di rete utilizzano per accedere al servizio.
    • L'attributo name deve essere un'etichetta DNS che segue lo standard RFC 1035.
    • È inoltre possibile inserire porte, protocolli ed etichette.
  4. Registrare l'installazione client e impostare la variabile d'ambiente per l'ID dell'installazione client.
    Registrate l'installazione client eseguendo un comando come questo:
    cat << EOM | palmctl create deployment --application-id $APP_ID -f -
    depl_env_id: $CLUSTER_ID
    partition_id: $NAMESPACE_ID
    type: external
    EOM
    Note:
    • Assicurarsi di impostare l'ambiente di distribuzione e la partizione del gateway che stabilisce la capacità di connettersi al servizio non Kubernetes.
    • Assicurarsi di impostare type su external.
    Impostate la variabile d'ambiente per l'ID di distribuzione eseguendo un comando come questo:
    DEPLOYMENT_ID=$(palmctl get deployment --application-id "$APP_ID" --deployment-env-name "$CLUSTER_NAME" \
    --partition-name "NAMESPACE_NAME" | yq .resource_id)
  5. Registrate l'endpoint del servizio esterno e impostate una variabile d'ambiente con l'ID del servizio, eseguendo comandi come questi:
    cat << EOM | palmctl create service-endpoint --application-id $APP_ID --deployment-id $DEPLOYMENT_ID -f -
    service_id: $SERVICE_ID
    hostname_targets: service.dns.name
    ip_targets: 192.168.0.1,192.168.0.2
    depl_env_id: $CLUSTER_ID
    local_service_ip_address: 10.0.0.1
    EOM
    Note:
    • Includere valori in almeno uno dei campi hostname_targets e ip_targets, ma è possibile includere valori in entrambi. Il gateway di distribuzione deve essere in grado di connettersi ai nomi host o agli indirizzi IP. Separare le voci di questi campi con delle virgole. Per il campo ip_targets, utilizzare solo gli indirizzi IPv4.
    • È necessario includere un valore in local_service_ip_address, anche se non viene utilizzato. Inserire un indirizzo IP segnaposto come 10.0.0.1.

Operazioni successive

Dopo aver registrato il servizio esterno, è necessario creare un criterio di connessione per esporre il servizio alle altre applicazioni del segmento di rete. Per informazioni su come creare il criterio, vedere Connessione di applicazioni tramite criteri con Mesh CLI.

Importante: è necessario creare un criterio di connessione prima di poter utilizzare il servizio esterno.

Se il servizio esterno cambia, potrebbe essere necessario modificare anche l'endpoint del servizio. I punti seguenti descrivono quando e come potrebbe essere necessario modificare gli endpoint del servizio:

  • Per aggiornare i nomi host o gli indirizzi IP per gli endpoint di servizio esterni, ottenere gli endpoint di servizio esistenti e aggiungere i nuovi dettagli di destinazione. Per informazioni su come aggiornare gli endpoint, vedere Aggiornamento degli endpoint dei servizi esterni tramite la CLI.
  • Per scollegare un servizio esterno da un'applicazione, eliminare il criterio di connessione associato.
  • Se un servizio esterno ha più endpoint di servizio, è possibile eliminare i singoli endpoint, se necessario. Non è necessario eliminare il criterio di connessione. Ad esempio, si possono avere più gateway che fanno da proxy al servizio esterno. In questo caso, è possibile mantenere il criterio di connessione ma eliminare l'endpoint del servizio specifico.