Skip to content

GitOps

GitOps System Sync facilitates bidirectional synchronization between system configuration and Git repositories. Any configuration changes performed in the Git repository get reflected in the system, and vice versa. This framework ensures a seamless exchange of changes, utilizing external triggers (Pipeline Triggers) for Git modifications and internal triggers whenever the artifact manifests in the Git repo need to be updated. With standardized specs, managing configurations becomes extremely efficient.

Here are some examples of specs for Environment Manager resources for system sync operations:

Drivers

Container Drivers

apiVersion: eaas.envmgmt.io/v1
kind: Driver
metadata:
  name: driver-demo
  project: demo-project
  description: This is a driver
spec:
  config:
  sharing:
    enabled: true
    projects:
    - name: demo-project  
    container:
      arguments:
      - refresh=true
      cpuLimitMilli: "100"
      envVars:
        DRIVER_DEBUG: "true"
        SHISHIR: "true"
        TF_VAR_rafay_config_file: config.json
      files:
        config.json: <base64 encoded data>
      imagePullCredentials:
        password: ********
        registry: https://index.docker.io/v1/
        username: user1
      kubeOptions:
        labels:
          name: terraform1
          name: tf
        namespace: sp
        nodeSelector:
          first102node: sp1  
      memoryLimitMb: "100"
      volumes:
      - mountPath: testsp3/mount
        pvcSizeGB: "3"
        pvcStorageClass: gp2
        usePVC: true
      - mountPath: Path/tmp1/mount
      - mountPath: path/22/mount
    timeoutSeconds: 3600
    type: container

HTTP Drivers

apiVersion: eaas.envmgmt.io/v1
kind: Driver
metadata:
  description: This is a driver of HTTP type
  name: demo-http-driver
  project: demo-project
spec:
  config:
    http:
      body: <h1>This is a heading</h1>
      endpoint: https://example.com
      headers:
        Content-type: application/javascript
        X-TOKEN: token
      method: GET
    maxRetryCount: 2
    successCondition: 200ok
    timeoutSeconds: 12
    type: http

Context

apiVersion: eaas.envmgmt.io/v1
kind: ConfigContext
metadata:
  name: demo-context
  project: demo-project
spec:
  envs:
  - key: AWS_ACCESS_KEY_ID
    sensitive: true
    value: key
  - key: AWS_SECRET_ACCESS_KEY
    sensitive: true
    value: secret
  - key: DRIVER_DEBUG
    value: "true"
  files:
  - data: <base 64 encoded data>
    sensitive: true
  variables:
  - name: rafay_config_file
    value: config.json
    valueType: text    

Static Resource

apiVersion: eaas.envmgmt.io/v1
kind: Resource
metadata:
  name: demo-static-resource
  project: demo-project
spec:
  variables:
  - name: name
    value: value
    valueType: text

Resource Template

apiVersion: eaas.envmgmt.io/v1
kind: ResourceTemplate
metadata:
  description: This is a resource environment template
  name: demo-resource-temp
  project: demo-project
spec:
  agents:
  - name: sp-agent
  contexts:
  - name: aws-creds-tf9
  - name: eks-config-tf9
  - name: rctl-config-tf9
  hooks: {}
  provider: terraform
  providerOptions:
    driver:
      name: demo-driver
    terraform:
      backendType: system
      version: v1.5.7
  repositoryOptions:
    branch: main
    directoryPath: cloud-creds
    name: demo-envmgr
  version: v1
  versionState: active

Environment Template

apiVersion: eaas.envmgmt.io/v1
kind: EnvironmentTemplate
metadata:
  description: This is an environment template
  name: demo-env-temp
  project: demo-project
  displayName: demo-displayname
spec:
  iconURL: url
  readme: |-
    readme line1
    readme line2
    readme line3
  agents:
  - name: demo-agent
  resources:
  - kind: resourcetemplate
    name: demo-eks
    resourceOptions:
      version: v1
    type: dynamic
  version: v1
  versionState: active

Environment

apiVersion: eaas.envmgmt.io/v1
kind: Environment
metadata:
  description: This is an environment
  name: demo-env1
  project: demo-project
spec:
  template:
    name: demo-env1
    version: v1