Skip to main content
ConfigSync is disabled by default because it requires preparation of a GitHub repository. This topic provides an overview of the deployment process.

1. Prepare a GitHub repository

The config-sync service uses a GitHub repository to store the configuration files. See Set up a GitHub repo for ConfigSync to learn how to prepare a repository for use with ConfigSync.
ConfigSync uses a GitHub repository to store the configuration files. The repository should be created independently and shared with the ConfigSync service via the Helm chart values. This document describes the process of setting up a GitHub repository for Fusion config files.

Create a new repository

Create a new repository in the github organization where the ConfigSync should store the config files.

Create a deploy key

Create a deploy key for the new repository. The deploy key should have write access to the repository. See the GitHub documentation for instructions.

Add the deploy key and repository information to the ConfigSync values

Option 1: Add the deploy key in the Helm chart

fusion-config-sync:
  # other values
  sshKey: <base64-encoded-private-key>
  cfg:
    github:
      repo: <repository-url> # use the ssh url e.g. git@github.com:lucidworks-managed-fusion/maksim-config-sync.git
      branch: <customer-branch> # you can leave it as is
      mainBranch: <main-branch> # most probably it's `main`
To encode the private key to base64 you can use the following command:
cat ~/.ssh/id_rsa | base64

Option 2: Add the deploy key as an external secret

Alternatively, you can store the deploy key as an external secret and reference it in the ConfigSync values.

Create a secret with the deploy key:

apiVersion: v1
kind: Secret
metadata:
  name: config-sync-ssh
type: Opaque
data:
  config: SG9zdCAqCiAgU3RyaWN0SG9zdEtleUNoZWNraW5nIG5v
  id_rsa: <base64-encoded-private-key>
To encode the private key to base64 you can use the following command:
cat ~/.ssh/id_rsa | base64

Update the ConfigSync values to reference the secret with the deploy key:

fusion-config-sync:
  # other values
  sshKey: null
  additionalVolumeMounts:
    - name: config-sync-ssh-key
      mountPath: /root/.ssh
      readOnly: true
  additionalVolumes:
    - name: config-sync-ssh-key
      secret:
        secretName: config-sync-ssh
        defaultMode: 256

Additional configuration

github.* settings control the remote GitHub repo, branch, and path within the repo.
github connection properties, common for pub/sub modes

cfg:
  github:
    repo: https://github.com/lucidworks/cloud-config-sync.git # git repo, mandatory
    branch: dev # git branch, mandatory
    mainBranch: main # main branch, mandatory
    dir: "/tmp/config-sync-repo" # repo dir, default "/tmp/config-sync-repo"
    path: / # configs path in the repo dir, default "/"
    username: "fusion-config-sync" # git user name, default "fusion-config-sync"
    email: "fusion-config-sync@lucidworks.com" # git user email, mandatory, default "fusion-config-sync@lucidworks.com"

Update the ConfigSync deployment

Update the ConfigSync deployment with the new values.
Repo organization explains what you’ll find in the repository when ConfigSync is enabled.

2. Enable ConfigSync

To enable ConfigSync, you need to update your Helm chart configuration. See Enable ConfigSync for instructions.
To enable ConfigSync, add the config-sync values to your Helm chart configuration, similar to the example below:
fusion-config-sync:
  enabled: true
  # other config-sync specific values
  sshKey: <base64-encoded-private-key>
  cfg:
    github:
      repo: <repository-url> # use the ssh url e.g. git@github.com:my-fusion/config-sync-repo.git
      branch: <customer-branch> # you can leave it as is
      mainBranch: <main-branch> # most probably it's `main`
Next, you can configure the ConfigSync mode to select Publisher mode, Subscriber mode, or Pub/Sub mode.For additional options, see the ConfigSync configuration reference.

3. Configure the synchronization mode

You can select Publisher, Subscriber, or PubSub mode. See Configure the ConfigSync mode for instructions.
ConfigSync can operate in different modes:
  • Publisher mode: Monitors Fusion for changes and pushes them to a Git repository.
  • Subscriber mode: Polls a Git repository for changes and applies them to Fusion.
  • Pub/Sub mode: Combines the features of both Publisher and Subscriber modes.
You can configure the synchronization mode by adding the appropriate profile to the sync configuration in the fusion-config-sync section of the Helm chart configuration, as shown below.
  • Publisher mode:
    fusion-config-sync:
      springProfilesOverride: "kubernetes,jwt,fusion,pub"
    
  • Subscriber mode:
    fusion-config-sync:
      springProfilesOverride: "kubernetes,jwt,fusion,sub"
    
  • PubSub mode:
    fusion-config-sync:
      springProfilesOverride: "kubernetes,jwt,fusion,pub,sub"
    
For additional options, see Filters and the ConfigSync configuration reference.

Additional configuration options

For additional configuration options, see the ConfigSync configuration reference.
I