Search docs.molo17.com

    GluesyncPlatform reference

    The GluesyncPlatform resource (API group gluesync.molo17.com/v1alpha1, short name gsp) describes one Gluesync install: the Core Hub version it should run, who may update it, and how the Gluesync Kubernetes Operator (GKO) checks an update. GKO serves one GluesyncPlatform per namespace, named gluesync by the kit and by the chart.

    Example

    apiVersion: gluesync.molo17.com/v1alpha1
    kind: GluesyncPlatform
    metadata:
      name: gluesync
      namespace: gluesync-dev
    spec:
      version: "2.3.2.2"
      modules:
        chronos: "0.3.3"
      updatePolicy: ui
      stability:
        windowSeconds: 20
        maxWaitSeconds: 180
      maintenance:
        drainTimeoutSeconds: 600
      coreHub:
        url: https://gluesync-gluesync-core-hub:1717
        insecureSkipVerify: true
        moduleAuth:
          licenseSecretRef:
            name: gluesync-gluesync-shared
            key: gs-license.dat
          tag: conductor
      checkIntervalMinutes: 360

    Edit it with kubectl edit gsp gluesync, kubectl patch, or in Git. When the kit or the chart creates it, the matching Helm values are listed in the last column of the tables below: operator.* for the kit, platform.* for the GKO chart.

    Versions

    Field Default Description Helm value

    version

    empty

    Core Hub version to run, the image tag without the registry, for example 2.3.2.2. Empty keeps what runs. When it differs from the running version, GKO starts an update.

    kit: gluesyncCoreHub.tag; chart: platform.version

    modules

    empty

    Module versions pinned by image name, with or without its gluesync- prefix: chronos and gluesync-chronos are the same module. A pinned module stays on its pin. An unpinned module moves to the latest version on the release channel each time Core Hub is updated. Changing only a pin updates that module, without maintenance mode.

    chart: platform.modules

    releaseChannel

    empty

    ga, beta or alpha. Leave it empty: GKO then reads the channel set in Core Hub, so the UI and GKO always agree. Set it only for an offline install.

    chart: platform.releaseChannel

    requestID

    empty

    Set to a new value by every update request from the UI. A new value retries an update to the same version that failed or was refused. Do not set it by hand, except to retry, see Retry an update.

    none

    When you start an update from the UI, GKO itself writes version and, for a module you update on its own, a pin in modules.

    Who may update

    Field Default Description Helm value

    updatePolicy

    ui

    • ui: updates start from Platform updates in the Core Hub UI, or from a change to version.

    • gitops: the UI cannot start updates. It answers that updates of this install are managed in Git. Change version in Git instead, see Update from Git and Argo CD.

    kit: operator.updatePolicy; chart: platform.updatePolicy

    The UI can start an update only for users with the SUPER_ADMIN or MANAGER role. GKO checks the user’s role with Core Hub on each request.

    Stability check

    Field Default Description Helm value

    stability.windowSeconds

    20

    Seconds a component must stay Ready, without a container restart, to count as up. A restart during the window starts it again. 0 uses the default.

    kit: operator.stability.windowSeconds; chart: platform.stability.windowSeconds

    stability.maxWaitSeconds

    180

    Seconds from the image change until the component must have passed the window. The time spent pulling the image counts. Minimum 10.

    kit: operator.stability.maxWaitSeconds; chart: platform.stability.maxWaitSeconds

    These fields match Conductor’s UPDATE_VERIFY_SECONDS and UPDATE_VERIFY_MAX_WAIT_SECONDS. Raise maxWaitSeconds when Core Hub takes long to start, or when your registry is slow to serve a new image, for example a pull-through cache that has not cached it yet. See Stability check.

    Maintenance mode

    Field Default Description Helm value

    maintenance.drainTimeoutSeconds

    600

    Seconds the running pipelines get to reach maintenance mode before Core Hub changes. When they do not make it in time, GKO resumes them and refuses the update, without changing any image. Minimum 10.

    kit: operator.maintenance.drainTimeoutSeconds; chart: platform.maintenance.drainTimeoutSeconds

    maintenance.disabled

    false

    Skips maintenance mode: pipelines keep running while Core Hub restarts. Not recommended.

    kit: operator.maintenance.disabled; chart: platform.maintenance.disabled

    Core Hub access

    Field Default Description Helm value

    coreHub.url

    https://<core hub workload>.<namespace>.svc:1717

    URL of Core Hub’s REST API.

    chart: platform.coreHub.url

    coreHub.insecureSkipVerify

    false

    Accepts Core Hub’s self-signed certificate. The kit and the chart set true.

    chart: platform.coreHub.insecureSkipVerify

    coreHub.moduleAuth.licenseSecretRef

    name and key of the Secret holding gs-license.dat. GKO connects to Core Hub as an external module with this licence. Recommended.

    chart: platform.coreHub.moduleAuth.licenseSecret

    coreHub.moduleAuth.tag

    conductor

    Tag GKO registers under. With conductor, Core Hub treats GKO as its Conductor module and forwards /conductor/api to it. Keep the default.

    chart: platform.coreHub.moduleAuth.tag

    coreHub.moduleAuth.advertisePort, advertiseScheme

    1717, empty

    Port and scheme (http or https) of the GKO API that Core Hub calls. The chart sets the scheme from api.tlsSecretName.

    set by the chart

    coreHub.tokenSecretRef

    name and key (default token) of a Secret holding a Core Hub API token allowed to list pipelines and to enter and exit maintenance mode. Takes precedence over moduleAuth.

    chart: platform.coreHub.auth: token, platform.coreHub.tokenSecret

    Images and catalog

    Field Default Description Helm value

    imageRegistry

    empty

    Registry and path that replace those of every image GKO sets, for example registry.example.com/molo17. The image name is kept: Core Hub moves to registry.example.com/molo17/gluesync-core-hub:<version>. Empty keeps each image’s own registry. Your mirror must hold every image GKO updates, Grafana and Prometheus included.

    chart: platform.imageRegistry

    checkIntervalMinutes

    360

    Minutes between two checks of the version catalog, which fill the Available column and the UpdateAvailable phase. Minimum 5. To check at once, see Check for updates now.

    none

    offline

    false

    Stops every call to the version catalog. See Offline installs.

    chart: platform.offline

    GKO’s own update

    GKO 0.2.0 and later update their own Deployment, see GKO’s own update. GKO’s version is pinned like a module, in modules, under gluesync-operator or operator. The other settings are Helm values, not fields of the GluesyncPlatform:

    Helm value Default Description Environment variable

    kit: operator.selfUpdate.enabled; chart: selfUpdate.enabled

    true

    false leaves GKO’s image to Helm: GKO is listed in the UI, but its update is blocked. With updatePolicy: gitops, GKO never updates itself, whatever this value.

    GKO_SELF_UPDATE

    kit: operator.selfUpdate.delaySeconds; chart: selfUpdate.delaySeconds

    15

    Seconds without any update before GKO changes its own image.

    GKO_SELF_UPDATE_DELAY

    kit: operator.selfUpdate.progressDeadlineSeconds; chart: selfUpdate.progressDeadlineSeconds

    300

    progressDeadlineSeconds of the GKO Deployment. When it passes, the old GKO pod rolls the new one back.

    none

    The kit and the chart also set what the hand-over needs: the label com.molo17.conductor.type: operator, a RollingUpdate strategy with maxUnavailable: 0, minReadySeconds: 10, and leader election, with a Role rule on leases. GKO keeps the progress of its own update in the annotation gluesync.molo17.com/self-update of its Deployment.

    Offline installs

    With offline: true, GKO never calls the MOLO17 version catalog:

    • it shows no available version, and the UI cannot start a Core Hub update;

    • you set version and every module version in modules yourself;

    • the images must be in a registry the cluster can reach, usually the mirror set in imageRegistry.

    An offline update still runs every step: maintenance mode, stability check and rollback.

    kubectl -n gluesync-dev patch gsp gluesync --type merge \
      -p '{"spec":{"version":"2.3.2.2","modules":{"chronos":"0.3.3"}}}'

    Disaster recovery

    spec.disasterRecovery shapes what GKO builds when the Core Hub UI sets up a disaster-recovery pair (GKO 0.3.0 and later). Nothing in it turns disaster recovery on. Helm value: kit operator.disasterRecovery, chart platform.disasterRecovery.

    Field Default Description

    disasterRecovery.service.type

    LoadBalancer

    Type of the Service gko-disaster-recovery that publishes ports 1718 and 1719: LoadBalancer, NodePort, or ClusterIP when you publish them yourself.

    disasterRecovery.service.annotations, loadBalancerClass, loadBalancerIP, loadBalancerSourceRanges

    empty

    For the load balancer.

    disasterRecovery.service.sinkNodePort, controlNodePort

    allocated

    Node ports of 1718 and 1719 for a NodePort.

    disasterRecovery.peerSink, peerControlURL

    empty

    GS_DR_PEER_SINK and GS_DR_PEER_CONTROL_URL, when the other site publishes its ports elsewhere than 1718 and 1719 of the host of its URL.

    disasterRecovery.chronosDataOwner

    true

    For a Core Hub with a runAsUser: false leaves out the root init container that gives the Chronos data to that user. Started as root, the Core Hub image does it itself.

    Status fields

    GKO writes the status of the resource. The main fields:

    Field Description

    phase

    Current, UpdateAvailable, Updating, Degraded or Failed. See Phases.

    version, available

    Core Hub version that runs, and the latest version on the release channel.

    releaseChannel

    Release channel read from Core Hub.

    components

    Each managed workload: name, kind, type, image, version, latest available version, and whether it is Ready.

    update

    The update in progress: target version, current step, the images recorded before the update, and the pipelines it put into maintenance mode. A restarted operator carries on from here.

    pausedPipelines

    Pipelines the running update has put into maintenance mode and not yet resumed.

    lastAttempt

    Outcome of the last update: result, message, and one result per component.

    history

    The last 10 updates, newest first.

    message

    Last progress or error message.

    disasterRecovery

    The disaster-recovery setup GKO made: whether it is enabled and set up by GKO, the node id, the peer URL, the failover mode, the address of the Service, and lastChange, the outcome of the last setup, join or disable (GKO 0.3.0 and later).