Esecuzione di Sincronizzazione configurazione come cronjob su OpenShift

L'esecuzione dell'utilità apic-configsync come cronjob su Red Hat OpenShift o IBM Cloud Pak for Integration consente di eseguire l'utilità su base temporale, ad esempio ogni 10 minuti.

Prima di iniziare

Assicurarsi che i seguenti prerequisiti siano soddisfatti prima di provare a configurare il cronjob:

  • Assicurarsi di disporre di un tool disponibile per copiare l'immagine nel proprio registro immagini.

    Gli esempi in questo argomento utilizzano skopeo per copiare l'immagine nel Registro di destinazione, ma è possibile utilizzare invece i comandi docker o podman equivalenti.

  • Esponi il registro OpenShift con defaultRoute immettendo il seguente comando:
    oc patch configs.imageregistry.operator.openshift.io/cluster --patch '{"spec":{"defaultRoute":true}}' --type=merge
    Per ulteriori informazioni, consultare la sezione "Esposizione del registro" nella documentazione di OpenShift. Non è necessario eseguire il passo 5 (il passo "podman login") nelle istruzioni.
  • Imposta la variabile di ambiente REGISTRY_HOST sul Registro di sistema OpenShift immettendo il seguente comando:
    REGISTRY_HOST=$(oc get route default-route -n openshift-image-registry --template='{{ .spec.host }}')
  • Impostare la variabile di ambiente APIC_PROJECT sullo spazio dei nomi (progetto) in cui si intende eseguire il cronjob. Per ottenere prestazioni ottimali, il cronjob deve essere eseguito nello stesso ambiente OpenShift del cluster API Connect di destinazione.

Informazioni su questa attività

È possibile configurare il programma di utilità apic-configsync per l'esecuzione come cronjob in una distribuzione API Connect in esecuzione su OpenShift o su Cloud Pak for Integration. Il programma di utilità apic-configsync deve essere eseguito il più possibile vicino al cluster di destinazione, quindi il cronjob deve essere configurato per essere eseguito all'interno dello stesso ambiente OpenShift del cluster API Connect di destinazione.

Procedura

  1. Scarica ed estrai il pacchetto API Connect Config Sync.
  2. Estrarre l'immagine di Config Sync dal pacchetto estratto API Connect di Config Sync eseguendo il seguente comando:
    tar xf ibm-apic-configsync-image.tar.gz
  3. Copiare l'immagine Config Sync estratta nel registro di destinazione.

    Ad esempio, se si utilizza skopeo, eseguire il seguente comando:

    skopeo copy --dest-tls-verify=false --dest-registry-token=$(oc whoami -t) dir:./ibm-apic-configsync/ibm-apic-configsync-<version>/<tag> docker://$REGISTRY_HOST/$APIC_PROJECT/ibm-apic-configsync-<version>:<tag>

    Sostituire <version> e <tag> con i relativi valori effettivi. Per assicurarsi di usare i valori più recenti, copiarli dal file README che si trova nella radice del pacchetto API Connect Config Sync estratto.

  4. Definire le variabili d'ambiente per i cataloghi di origine e di destinazione.
  5. Creare i segreti per ospitare i dettagli di configurazione per il cluster di origine e il cluster di destinazione
    1. Creare un segreto per ospitare i dettagli di configurazione per il cluster di origine nello spazio dei nomi in cui si intende eseguire il cronjob:
      oc create secret --namespace $APIC_PROJECT generic source-catalog-details \
          --from-literal=SOURCE_MGMT_SERVER=$SOURCE_MGMT_SERVER \
          --from-literal=SOURCE_ORG=$SOURCE_ORG \
          --from-literal=SOURCE_REALM=$SOURCE_REALM \
          --from-literal=SOURCE_ADMIN_USER=$SOURCE_ADMIN_USER \
          --from-literal=SOURCE_ADMIN_PASSWORD=$SOURCE_ADMIN_PASSWORD \
          --from-literal=SOURCE_CATALOG=$SOURCE_CATALOG \
          --from-literal=SOURCE_TOOLKIT_CREDENTIALS_CLIENTID=$SOURCE_TOOLKIT_CREDENTIALS_CLIENTID \
          --from-literal=SOURCE_TOOLKIT_CREDENTIALS_CLIENTSECRET=$SOURCE_TOOLKIT_CREDENTIALS_CLIENTSECRET
    2. Creare un segreto per ospitare i dettagli di configurazione del cluster di destinazione nello spazio dei nomi in cui si intende eseguire il cronjob:
      oc create secret --namespace $APIC_PROJECT generic target-catalog-details \
          --from-literal=TARGET_MGMT_SERVER=$TARGET_MGMT_SERVER \
          --from-literal=TARGET_ORG=$TARGET_ORG \
          --from-literal=TARGET_REALM=$TARGET_REALM \
          --from-literal=TARGET_ADMIN_USER=$TARGET_ADMIN_USER \
          --from-literal=TARGET_ADMIN_PASSWORD=$TARGET_ADMIN_PASSWORD \
          --from-literal=TARGET_CATALOG=$TARGET_CATALOG \
          --from-literal=TARGET_TOOLKIT_CREDENTIALS_CLIENTID=$TARGET_TOOLKIT_CREDENTIALS_CLIENTID \
          --from-literal=TARGET_TOOLKIT_CREDENTIALS_CLIENTSECRET=$TARGET_TOOLKIT_CREDENTIALS_CLIENTSECRET
  6. Creare il cronjob:
    1. Aprire il file helper_files/configsync-cronjob-ocp.yaml che si trova nel pacchetto API Connect Config Sync estratto.
    2. Modificare la proprietà schedule per specificare la frequenza di esecuzione del lavoro.

      Il periodo di pianificazione minimo consigliato è 1 minuto; tuttavia, una distribuzione con un numero elevato di oggetti potrebbe richiedere più tempo per il completamento del lavoro. Poiché i lavori simultanei non sono consentiti, il tempo totale tra l'avvio di due lavori consecutivi potrebbe essere più lungo.

    3. Impostare il concurrencyPolicy su Forbid.

      Config Sync opera su una singola coppia di catalogo origine - destinazione alla volta. Se si desidera sincronizzare più coppie di cataloghi origine - destinazione differenti, creare un cronjob separato per ciascuna coppia.

    4. Nella proprietà image , sostituire la variabile <APIC_PROJECT> con lo spazio dei nomi (progetto) in cui verrà eseguito il cronjob.
    5. Creare la risorsa cronjob nel cluster eseguendo il seguente comando:
      oc --namespace $APIC_PROJECT apply -f helper_files/configsync-cronjob-ocp.yaml