Product Selector

Fusion 5.9
    Fusion 5.9

    Set up a GitHub repo for 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.

    1. Create a new repository

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

    2. 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.

    3. Add the deploy key and repository information to the ConfigSync values

    3.1. 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

    3.2. 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.

    3.2.1. 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

    3.2.2. 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

    4. 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"

    5. Update the ConfigSync deployment

    Update the ConfigSync deployment with the new values.