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