Files

1201 lines
36 KiB
YAML

pipelines:
# MUST SET FOR EXTERNAL POSTGRESQL AND VAULT
global:
postgresql:
host: OVERRIDE
port: OVERRIDE
database: OVERRIDE
user: OVERRIDE
password: OVERRIDE
ssl: OVERRIDE
## Common
initContainer:
image: registry.connect.redhat.com/jfrog/pipelines-init:1.8.0
pullPolicy: IfNotPresent
# Init containers
initContainers:
resources: {}
# requests:
# memory: "64Mi"
# cpu: "10m"
# limits:
# memory: "128Mi"
# cpu: "250m"
## Available modes: devmode (enable it for debuging) and production
runMode: production
## Image Registry to pull images for Pipelines components from
## You can override it with your private Artifactory registry
imageRegistry: registry.connect.redhat.com
## For supporting pulling from private registries
## Secret type: kubernetes.io/dockerconfigjson
imagePullSecrets:
## Existing secret with Pipelines system.yaml
existingSecret:
## String to partially override pipelines.fullname template (will maintain the release name)
# nameOverride:
## String to fully override pipelines.fullname template
# fullnameOverride:
## Set user/group to run Pipelines components with
securityContext:
enabled: true
uid: '1000721117'
gid: '1000721117'
## Pipelines components
pipelines:
version: 1.8.0
## Artifactory URL - Mandatory
jfrogUrl: OVERRIDE
jfrogUrlUI: OVERRIDE
## Pipelines requires the join key from Artifactory
joinKey: OVERRIDE
## Pipelines requires a unique master key
## You can generate one with the command: "openssl rand -hex 32"
masterKey: OVERRIDE
## Installer Authentication Token
## The unique token can be generated with: uuidgen | tr '[:upper:]' '[:lower:]'
authToken: "c7595edd-b63d-4fd6-9e1e-13924d6637f0"
## Pipelines ID in Artifactory
## For production, the unique ID should be generated instead of using 12345: openssl rand | tr -dc 1-9 | head -c 10
serviceId: jfpip@12345
## Artifactory Service ID
## This should be set to the Artifactory Service ID
artifactoryServiceId: "FFFFFFFFFFFF"
## Artifactory License ID
##
licenseId: "FFFFFFFFF"
## A name must be unique if the same Artifactory is shared between different Pipelines
## Repository type `Generic` with layout `maven-2-default` must be precreated in advance
rootBucket: jfrogpipelines
mountPath: /opt/jfrog/pipelines/var/etc
logPath: /opt/jfrog/pipelines/var/log
replicaCount: 1
# CORS configuration. Default values are artifactory url and www external url
accessControlAllowOrigins_0: OVERRIDE
accessControlAllowOrigins_1: OVERRIDE
# RabbitMQ health check interval in mins
rabbitmqHealthCheckIntervalInMins: 1
# Artifactory health check interval in mins
artifactoryHealthCheckIntervalInMins: 1
updateStrategy: RollingUpdate
nodeSelector: {}
tolerations: []
affinity: {}
## Apply horizontal pod auto scaling on Pipelines pods
## Ref: https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale
autoscaling:
enabled: false
minReplicas: 1
maxReplicas: 3
targetCPUUtilizationPercentage: 70
api:
image:
repository: jfrog/pipelines-api
pullPolicy: IfNotPresent
service:
## Supported service types: ClusterIP, NodePort and LoadBalancer
type: LoadBalancer
port: 30000
annotations:
# external-dns.alpha.kubernetes.io/hostname: example.org
# service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp
# service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:us-east-1:XXXXXX:certificate/XXXXXX
## Set LB static IP
loadBalancerIP:
## Whitelist IPs allowed to LoadBalancer type services
## Example: loadBalancerSourceRanges={82.82.190.51/32,141.141.8.8/32}
loadBalancerSourceRanges: []
livenessProbe:
enabled: true
initialDelaySeconds: 20
timeoutSeconds: 10
periodSeconds: 10
failureThreshold: 10
successThreshold: 1
path: /
port: api
readinessProbe:
enabled: true
initialDelaySeconds: 20
timeoutSeconds: 10
periodSeconds: 10
failureThreshold: 10
successThreshold: 1
path: /
port: api
## External URL, it is ignored if ingress is enabled
externalUrl:
ingress:
enabled: false
annotations: {}
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: "true"
path: /
hosts:
- chart-example.local
tls: []
# - secretName: chart-example-tls
# hosts:
# - chart-example.local
resources: {}
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
router:
image:
repository: jfrog/pipelines-router
pullPolicy: IfNotPresent
internalPort: 8046
externalPort: 8082
mountPath: "/opt/jfrog/router/var/etc"
resources: {}
# requests:
# memory: "2Gi"
# cpu: "500m"
# limits:
# memory: "4Gi"
# cpu: "2"
www:
image:
repository: jfrog/pipelines-www
pullPolicy: IfNotPresent
service:
## Supported service types: ClusterIP, NodePort and LoadBalancer
type: LoadBalancer
port: 30001
annotations:
# external-dns.alpha.kubernetes.io/hostname: example.org
# service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp
# service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:us-east-1:XXXXXX:certificate/XXXXXX
## Set LB static IP
loadBalancerIP:
## Whitelist IPs allowed to LoadBalancer type services
## Example: loadBalancerSourceRanges={82.82.190.51/32,141.141.8.8/32}
loadBalancerSourceRanges: []
livenessProbe:
enabled: true
initialDelaySeconds: 20
failureThreshold: 10
timeoutSeconds: 10
periodSeconds: 10
successThreshold: 1
path: /
port: www
readinessProbe:
enabled: true
initialDelaySeconds: 20
failureThreshold: 10
timeoutSeconds: 10
periodSeconds: 10
successThreshold: 1
path: /
port: www
## External URL, it is ignored if ingress is enabled
externalUrl:
ingress:
enabled: false
annotations: {}
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: "true"
path: /
hosts:
- chart-example.local
tls: []
# - secretName: chart-example-tls
# hosts:
# - chart-example.local
resources: {}
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
msg:
uiUser: OVERRIDE
uiUserPassword: OVERRIDE
pipelineSync:
image:
repository: jfrog/pipelines-micro
pullPolicy: Always
resources: {}
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
runTrigger:
image:
repository: jfrog/pipelines-micro
pullPolicy: IfNotPresent
resources: {}
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
stepTrigger:
image:
repository: jfrog/pipelines-micro
pullPolicy: IfNotPresent
resources: {}
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
cron:
image:
repository: jfrog/pipelines-micro
pullPolicy: IfNotPresent
resources: {}
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
nexec:
image:
repository: jfrog/pipelines-micro
pullPolicy: IfNotPresent
resources: {}
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
hookHandler:
image:
repository: jfrog/pipelines-micro
pullPolicy: IfNotPresent
resources: {}
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
marshaller:
image:
repository: jfrog/pipelines-micro
pullPolicy: IfNotPresent
resources: {}
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
logup:
image:
repository: jfrog/pipelines-micro
pullPolicy: IfNotPresent
resources: {}
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
extensionSync:
image:
repository: jfrog/pipelines-micro
pullPolicy: IfNotPresent
resources: {}
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
## Pipelines installer
pipelinesInit:
image:
repository: jfrog/pipelines-installer
pullPolicy: IfNotPresent
resources: {}
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
## Cluster Role Based Access
## Ref: https://kubernetes.io/docs/admin/authorization/rbac/
rbac:
role:
## Rules to create. It follows the role specification
rules:
- apiGroups: ["", "extensions", "apps"]
resources:
- deployments
- persistentvolumes
- persistentvolumeclaims
- pods
- deployments/scale
verbs: ["*"]
# Add any list of configmaps to Pipelines
configMaps: |
# posthook-start.sh: |-
# echo "This is a post start script"
# posthook-end.sh: |-
# echo "This is a post end script"
## Add custom volumes
customVolumes: |
# - name: custom-script
# configMap:
# name: custom-script
## Add custom volumesMounts
customVolumeMounts: |
# - name: custom-script
# mountPath: /scripts/script.sh
# subPath: script.sh
## Add custom init begin containers - first init container to run
customInitContainersBegin: |
- name: "redhat-custom-setup"
image: {{ .Values.initContainer.image }}
imagePullPolicy: Always
command:
- 'sh'
- '-c'
- 'chown -R {{ .Values.securityContext.uid }}:{{ .Values.securityContext.gid }} {{ .Values.pipelines.mountPath }} && chown -R {{ .Values.securityContext.uid }}:{{ .Values.securityContext.gid }} {{ .Values.pipelines.logPath }}'
securityContext:
runAsUser: 0
volumeMounts:
- name: jfrog-pipelines-folder
mountPath: "{{ .Values.pipelines.mountPath }}"
- name: jfrog-pipelines-logs
mountPath: {{ .Values.pipelines.logPath }}
## Add custom init containers - last init container to run
customInitContainers: |
# - name: "custom-setup"
# image: "{{ .Values.initContainer.image }}"
# imagePullPolicy: "{{ .Values.initContainer.pullPolicy}}"
# command:
# - 'sh'
# - '-c'
# - 'touch {{ .Values.pipelines.mountPath }}/example-custom-setup'
# volumeMounts:
# - mountPath: "{{ .Values.pipelines.mountPath}}"
# name: jfrog-pipelines-folder
## Add custom sidecar containers
# - The provided example uses a custom volume (customVolumes)
customSidecarContainers: |
# - name: "sidecar-list-etc"
# image: "{{ .Values.initContainer.image }}"
# imagePullPolicy: "{{ .Values.initContainer.pullPolicy }}"
# securityContext:
# allowPrivilegeEscalation: false
# command:
# - 'sh'
# - '-c'
# - 'sh /scripts/script.sh'
# volumeMounts:
# - mountPath: "{{ .Values.pipelines.mountPath }}"
# name: volume
# - mountPath: "/scripts/script.sh"
# name: custom-script
# subPath: script.sh
# resources:
# requests:
# memory: "32Mi"
# cpu: "50m"
# limits:
# memory: "128Mi"
# cpu: "100m"
systemYaml: |
{{- if .Values.router.routerConfiguration }}
router:
## Router configuration
topology:
external:
refresh:
interval: "{{ .Values.router.topology.external.refresh.interval }}"
serviceRegistry:
url: "{{ .Values.router.serviceRegistry.url }}"
{{- end }}
shared:
## Artifactory configuration
##
artifactory:
## Artifactory URL
##
baseUrl: "{{ tpl (required "\n\npipelines.jfrogUrl is required!\n" .Values.pipelines.jfrogUrl) . }}"
## Unified UI URL
##
baseUrlUI: "{{ tpl (required "\n\npipelines.jfrogUrlUI is required!\n" .Values.pipelines.jfrogUrlUI) . }}"
## Pipelines Service ID
##
serviceId: "{{ .Values.pipelines.serviceId }}"
## Artifactory Service ID
##
artifactoryServiceId: "{{ .Values.pipelines.artifactoryServiceId }}"
## Artifactory License ID
##
licenseId: "{{ .Values.pipelines.licenseId }}"
## Proxy to connect to Artifactory
##
proxy:
url: ""
username: ""
password: ""
## Router configuration
##
router:
ip: ""
accessPort: {{ .Values.pipelines.router.internalPort }}
dataPort: {{ .Values.pipelines.router.externalPort }}
joinKey: "{{ .Values.pipelines.joinKey }}"
security:
masterKey: "{{ .Values.pipelines.masterKey }}"
## Database configuration
##
db:
type: "postgres"
{{- if .Values.postgresql.enabled }}
ip: {{ tpl .Release.Name . }}-postgresql
port: "{{ .Values.postgresql.service.port }}"
name: {{ .Values.postgresql.postgresqlDatabase }}
username: {{ .Values.postgresql.postgresqlUsername }}
password: {{ .Values.postgresql.postgresqlPassword }}
{{- else }}
ip: {{ tpl .Values.global.postgresql.host . }}
port: "{{ .Values.global.postgresql.port }}"
name: {{ .Values.global.postgresql.database }}
username: {{ .Values.global.postgresql.user }}
password: {{ .Values.global.postgresql.password }}
{{- end }}
externalUrl: ""
{{- if .Values.postgresql.enabled }}
connectionString: "{{ tpl (printf "postgres://%s:%s@%s-postgresql:%v/%s" .Values.postgresql.postgresqlUsername .Values.postgresql.postgresqlPassword .Release.Name .Values.postgresql.service.port .Values.postgresql.postgresqlDatabase) . }}"
{{- else if and (not .Values.postgresql.enabled) (.Values.global.postgresql.ssl) }}
connectionString: "{{ tpl (printf "postgres://%s:%s@%v:%v/%s?sslmode=require" .Values.global.postgresql.user .Values.global.postgresql.password .Values.global.postgresql.host .Values.global.postgresql.port .Values.global.postgresql.database) . }}"
{{- else }}
connectionString: "{{ tpl (printf "postgres://%s:%s@%v:%v/%s" .Values.global.postgresql.user .Values.global.postgresql.password .Values.global.postgresql.host .Values.global.postgresql.port .Values.global.postgresql.database) . }}"
{{- end }}
## RabbitMQ configuration
##
msg:
{{- if .Values.rabbitmq.enabled }}
ip: {{ .Release.Name }}-rabbitmq
port: {{ .Values.rabbitmq.service.port }}
adminPort: {{ .Values.rabbitmq.service.managerPort }}
erlangCookie: {{ .Values.rabbitmq.rabbitmq.erlangCookie }}
username: {{ .Values.rabbitmq.rabbitmq.username }}
password: {{ .Values.rabbitmq.rabbitmq.password }}
defaultExchange: pipelinesEx
amqpVhost: pipelines
amqpRootVhost: pipelinesRoot
{{- else }}
ip: {{ tpl .Values.rabbitmq.internal_ip . }}
port: {{ .Values.rabbitmq.port}}
adminPort: {{ .Values.rabbitmq.manager_port }}
erlangCookie: {{ .Values.rabbitmq.erlang_cookie }}
username: {{ .Values.rabbitmq.ms_username }}
password: {{ .Values.rabbitmq.ms_password }}
defaultExchange: {{ .Values.rabbitmq.root_vhost_exchange_name }}
amqpVhost: {{ .Values.rabbitmq.build_vhost_name}}
amqpRootVhost: {{ .Values.rabbitmq.root_vhost_name }}
protocol: {{ .Values.rabbitmq.protocol }}
{{- end }}
queues:
- "core.pipelineSync"
- "core.runTrigger"
- "core.stepTrigger"
- "core.marshaller"
- "cluster.init"
- "core.logup"
- "www.signals"
- "core.nexec"
- "core.hookHandler"
- "core.extensionSync"
ui:
{{- if .Values.rabbitmq.enabled }}
username: {{ .Values.pipelines.msg.uiUser }}
password: {{ .Values.pipelines.msg.uiUserPassword }}
{{- else }}
protocol: http
username: {{ .Values.rabbitmq.cp_username }}
password: {{ .Values.rabbitmq.cp_password }}
{{- end }}
external:
## URL for build plane VMs to access RabbitMQ
{{- if .Values.rabbitmq.externalUrl }}
url: {{ .Values.rabbitmq.externalUrl }}
{{- else if (and .Values.rabbitmq.serviceVmLb.enabled .Values.rabbitmq.serviceVmLb.loadBalancerIP) }}
url: amqp://{{ .Values.rabbitmq.serviceVmLb.loadBalancerIP }}
{{- else if .Values.rabbitmq.enabled }}
url: amqp://{{ tpl .Release.Name . }}-rabbitmq
{{- else }}
url: {{ .Values.rabbitmq.protocol }}://{{ tpl .Values.rabbitmq.msg_hostname . }}:{{ .Values.rabbitmq.port }}
{{- end }}
rootUrl: ""
adminUrl: ""
{{- if not .Values.rabbitmq.enabled }}
build:
username: {{ .Values.rabbitmq.build_username }}
password: {{ .Values.rabbitmq.build_password }}
{{- end }}
## Vault configuration
##
vault:
{{- if .Values.vault.enabled }}
ip: {{ include "pipelines.vault.name" . }}
port: {{ .Values.vault.service.port }}
{{- else }}
ip: {{ .Values.global.vault.host }}
port: {{ .Values.global.vault.port }}
{{- end }}
## DO NOT CHANGE THE TOKEN VALUE!!!
token: "_VAULT_TOKEN_"
unsealKeys:
- ""
- ""
- ""
- ""
- ""
## Redis configuration
##
redis:
ip: {{ .Release.Name }}-redis-master
port: 6379
clusterEnabled: false
## This section is used for bringing up the core services and setting up
## configurations required by the installer & the services
##
core:
## id is automatically determined based on the current hostname
## or set using the SHARED_NODE_ID environment variable.
##
id: "afd8df9d08bf257ae9b7d7dbbf348b7a3a574ebdd3a61d350d4b64e3129dee85"
installerIP: "1.2.3.4"
installerAuthToken: "{{ .Values.pipelines.authToken }}"
installerImage: "jfrog/pipelines-installer"
registryUrl: "{{ .Values.imageRegistry }}"
os: "Ubuntu_16.04"
osDistribution: "xenial"
architecture: "x86_64"
dockerVersion: ""
runMode: "{{ .Values.runMode }}"
user: ""
group: ""
noVerifySsl: false
ignoreTLSErrors: false
controlplaneVersion: "{{ default .Chart.AppVersion .Values.pipelines.version }}"
buildplaneVersion: "{{ default .Chart.AppVersion .Values.pipelines.version }}"
accessControlAllowOrigins:
- {{ .Values.pipelines.accessControlAllowOrigins_0 }}
- {{ .Values.pipelines.accessControlAllowOrigins_1 }}
rabbitmqHealthCheckIntervalInMins: {{ .Values.pipelines.rabbitmqHealthCheckIntervalInMins}}
artifactoryHealthCheckIntervalInMins: {{ .Values.pipelines.artifactoryHealthCheckIntervalInMins}}
## Global proxy settings, to be applied to all services
##
proxy:
httpProxy: ""
httpsProxy: ""
noProxy: ""
username: ""
password: ""
## Mailserver settings
##
mailserver:
host: ""
port: ""
username: ""
password: ""
tls: ""
ssl: ""
apiRetryIntervalMs: 3000
accountSyncFrequencyHr: 1
imageRegistrySecret: "{{ .Values.imagePullSecrets }}"
hardDeleteIntervalInMins: 60
configBackupCount: 5
lastUpdateTime: ""
callHomeUrl: "https://api.bintray.com/products/jfrog/pipelines/stats/usage"
allowCallHome: true
serviceInstanceHealthCheckIntervalInMins: 1
serviceInstanceStatsCutOffIntervalInHours: 24
## Service configuration
##
services:
api:
name: {{ include "pipelines.api.name" . }}
port: {{ .Values.pipelines.api.service.port }}
{{- if (and .Values.pipelines.api.ingress.enabled .Values.pipelines.api.ingress.tls) }}
{{- range .Values.pipelines.api.ingress.hosts }}
externalUrl: https://{{ . }}
{{- end }}
{{- else if .Values.pipelines.api.ingress.enabled }}
{{- range .Values.pipelines.api.ingress.hosts }}
externalUrl: http://{{ . }}
{{- end }}
{{- else }}
externalUrl: {{ .Values.pipelines.api.externalUrl }}
{{- end }}
www:
name: {{ include "pipelines.www.name" . }}
port: {{ .Values.pipelines.www.service.port }}
{{- if (and .Values.pipelines.www.ingress.enabled .Values.pipelines.www.ingress.tls) }}
{{- range .Values.pipelines.www.ingress.hosts }}
externalUrl: https://{{ . }}
{{- end }}
{{- else if .Values.pipelines.www.ingress.enabled }}
{{- range .Values.pipelines.www.ingress.hosts }}
externalUrl: http://{{ . }}
{{- end }}
{{- else }}
externalUrl: {{ .Values.pipelines.www.externalUrl }}
{{- end }}
sessionSecret: "{{ .Values.pipelines.authToken }}"
pipelineSync:
name: pipelineSync
runTrigger:
name: runTrigger
stepTrigger:
name: stepTrigger
cron:
name: cron
nexec:
name: nexec
hookHandler:
name: hookHandler
marshaller:
name: marshaller
extensionSync:
name: extensionSync
## Runtime configuration
##
runtime:
rootBucket: "{{ .Values.pipelines.rootBucket }}"
defaultMinionCount: 1
nodeCacheIntervalMS: 600000
jobConsoleBatchSize: 10
jobConsoleBufferIntervalMs: 3
maxDiskUsagePercentage: 90
stepTimeoutMS: 3600000
nodeStopDayOfWeek: 0
nodeStopIntervalDays: 30
maxNodeCheckInDelayMin: 15
defaultMinionInstanceSize: "c4.large"
allowDynamicNodes: true
allowCustomNodes: true
{{- range $key, $value := .Values.runtimeOverride }}
{{ $key }}: {{ $value | quote }}
{{- end }}
languageImages:
- architecture: x86_64
os: Ubuntu_16.04
language: node
registryUrl: docker.bintray.io
image: jfrog/pipelines-u16node
isDefault: true
defaultVersion: 10.18.0
- architecture: x86_64
os: Ubuntu_16.04
language: java
registryUrl: docker.bintray.io
image: jfrog/pipelines-u16java
defaultVersion: 13
- architecture: x86_64
os: Ubuntu_16.04
language: cpp
registryUrl: docker.bintray.io
image: jfrog/pipelines-u16cpp
defaultVersion: 9.0.0
- architecture: x86_64
os: Ubuntu_16.04
language: go
registryUrl: docker.bintray.io
image: jfrog/pipelines-u16go
defaultVersion: 1.12.14
- architecture: x86_64
os: Ubuntu_18.04
language: node
registryUrl: docker.bintray.io
image: jfrog/pipelines-u18node
isDefault: true
defaultVersion: 10.18.0
- architecture: x86_64
os: Ubuntu_18.04
language: java
registryUrl: docker.bintray.io
image: jfrog/pipelines-u18java
defaultVersion: 13
- architecture: x86_64
os: Ubuntu_18.04
language: cpp
registryUrl: docker.bintray.io
image: jfrog/pipelines-u18cpp
defaultVersion: 9.0.0
- architecture: x86_64
os: Ubuntu_18.04
language: go
registryUrl: docker.bintray.io
image: jfrog/pipelines-u18go
defaultVersion: 1.12.14
- architecture: x86_64
os: CentOS_7
language: node
registryUrl: docker.bintray.io
image: jfrog/pipelines-c7node
isDefault: true
defaultVersion: 10.18.0
- architecture: x86_64
os: CentOS_7
language: java
registryUrl: docker.bintray.io
image: jfrog/pipelines-c7java
defaultVersion: 11
- architecture: x86_64
os: CentOS_7
language: cpp
registryUrl: docker.bintray.io
image: jfrog/pipelines-c7cpp
defaultVersion: 3.4.2
- architecture: x86_64
os: CentOS_7
language: go
registryUrl: docker.bintray.io
image: jfrog/pipelines-c7go
defaultVersion: 1.12.14
- architecture: x86_64
os: WindowsServer_2019
language: node
registryUrl: docker.bintray.io
image: jfrog/pipelines-w19node
defaultVersion: 10.18.0
- architecture: x86_64
os: WindowsServer_2019
language: java
registryUrl: docker.bintray.io
image: jfrog/pipelines-w19java
defaultVersion: 11
- architecture: x86_64
os: WindowsServer_2019
language: cpp
registryUrl: docker.bintray.io
image: jfrog/pipelines-w19cpp
defaultVersion: 9.0.0
- architecture: x86_64
os: WindowsServer_2019
language: go
registryUrl: docker.bintray.io
image: jfrog/pipelines-w19go
defaultVersion: 1.12.14
- architecture: x86_64
os: WindowsServer_2019
language: dotnetcore
registryUrl: docker.bintray.io
image: jfrog/pipelines-w19dotnetcore
isDefault: true
defaultVersion: 3.1
- architecture: x86_64
os: RHEL_7
language: node
registryUrl: docker.bintray.io
image: jfrog/pipelines-c7node
isDefault: true
defaultVersion: 10.18.0
- architecture: x86_64
os: RHEL_7
language: java
registryUrl: docker.bintray.io
image: jfrog/pipelines-c7java
defaultVersion: 11
- architecture: x86_64
os: RHEL_7
language: cpp
registryUrl: docker.bintray.io
image: jfrog/pipelines-c7cpp
defaultVersion: 3.4.2
- architecture: x86_64
os: RHEL_7
language: go
registryUrl: docker.bintray.io
image: jfrog/pipelines-c7go
defaultVersion: 1.12.14
## Runtime Override Properties Section
runtimeOverride: {}
# Router Configuration
router:
routerConfiguration: false
topology:
external:
refresh:
interval: "3s"
serviceRegistry:
url:
# PostgreSQL
## https://hub.helm.sh/charts/bitnami/postgresql
## Configuration values for the postgresql dependency
## ref: https://github.com/kubernetes/charts/blob/master/stable/postgresql/README.md
##
postgresql:
enabled: false
## RabbitMQ HA
## https://hub.helm.sh/charts/bitnami/rabbitmq
## Configuration values for the rabbitmq dependency
## ref: https://github.com/kubernetes/charts/blob/master/stable/rabbitmq/README.md
##
rabbitmq:
enabled: true
protocol: amqps
replicas: 1
image:
registry: registry.connect.redhat.com
repository: jfrog/pipelines-rabbitmq
tag: 3.8.9
# DO NOT CHANGE CUSTOM INIT USER
rabbitmq:
username: user
password: bitnami
erlangCookie: PIPELINESRABBITMQCLUSTER
extraPlugins: ""
service:
type: LoadBalancer
annotations: {}
persistence:
enabled: true
size: 20Gi
resources: {}
affinity: {}
ingress:
## Set to true to enable ingress record generation
enabled: false
## The list of hostnames to be covered with this ingress record.
## Most likely this will be just one host, but in the event more hosts are needed, this is an array
# hostName: foo.bar.com
path: /
## Set this to true in order to enable TLS on the ingress record
## A side effect of this will be that the backend wordpress service will be connected at port 443
tls: true
## If TLS is set to true, you must declare what secret will store the key/certificate for TLS
tlsSecret: myTlsSecret
## Ingress annotations done as key:value pairs
annotations:
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: true
externalUrl: OVERRIDE
## Service with external/internal LoadBalancer to access RabbitMQ by Node-pool VMs
serviceVmLb:
enabled: false
annotations:
## Set internal LB for Azure
# service.beta.kubernetes.io/azure-load-balancer-internal: "true"
## Set internal LB for AWS
# service.beta.kubernetes.io/aws-load-balancer-internal: 0.0.0.0/0
## Set internal LB for GCP
# cloud.google.com/load-balancer-type: "Internal"
## You must to provide internal LB static IP
loadBalancerIP:
## Whitelist IPs allowed to LoadBalancer type services
## Example: loadBalancerSourceRanges={82.82.190.51/32,141.141.8.8/32}
loadBalancerSourceRanges: []
## Redis
## Configuration values for the redis dependency
## ref: https://github.com/bitnami/charts/tree/master/bitnami/redis
##
redis:
enabled: true
image:
registry: registry.redhat.io
repository: rhel8/redis-5
tag: 1-98
redisPort: 6379
cluster:
enabled: false
slaveCount: 2
usePassword: false
master:
command: "container-entrypoint run-redis"
configmap: |-
appendonly yes
loglevel notice
resources: {}
# requests:
# memory: 200Mi
# cpu: 100m
# limits:
# memory: 700Mi
affinity: {}
slave:
resources: {}
# requests:
# memory: 200Mi
# cpu: 100m
# limits:
# memory: 200Mi
affinity: {}
## Vault
vault:
enabled: true
updateStrategy: RollingUpdate
image:
repository: registry.connect.redhat.com/jfrog/pipelines-vault
tag: 1.8.0
pullPolicy: IfNotPresent
init:
image:
repository: jfrog/pipelines-vault-init
pullPolicy: IfNotPresent
service:
# Supported service types: ClusterIP and NodePort
type: ClusterIP
port: 30100
# Disable mlock only in non-prod environments
disablemlock: false
resources: {}
# requests:
# memory: 256Mi
# cpu: 200m
# limits:
# memory: 1Gi
# cpu: 600m
affinity: {}
nodeSelector: {}
tolerations: []
## Role Based Access
## Ref: https://kubernetes.io/docs/admin/authorization/rbac/
rbac:
role:
## Rules to create. It follows the role specification
rules:
- apiGroups:
- ''
resources:
- secrets
verbs:
- "*"
# Add any list of configmaps to vault
configMaps: |
# posthook-start.sh: |-
# echo "This is a post start script"
# posthook-end.sh: |-
# echo "This is a post end script"
## Add custom volumes
customVolumes: |
# - name: custom-script
# configMap:
# name: custom-script
## Add custom volumesMounts
customVolumeMounts: |
# - name: custom-script
# mountPath: /scripts/script.sh
# subPath: script.sh
## Add custom init begin containers - first init container to run
customInitContainersBegin: |
# - name: "custom-begin-setup"
# image: "{{ .Values.initContainer.image }}"
# imagePullPolicy: "{{ .Values.initContainer.pullPolicy}}"
# command:
# - 'sh'
# - '-c'
# - 'touch {{ .Values.pipelines.mountPath }}/example-custom-setup'
# volumeMounts:
# - mountPath: "{{ .Values.pipelines.mountPath}}"
# name: jfrog-pipelines-folder
## Add custom init containers - last init container to run
customInitContainers: |
# - name: "custom-setup"
# image: "{{ .Values.initContainer.image }}"
# imagePullPolicy: "{{ .Values.initContainer.pullPolicy}}"
# command:
# - 'sh'
# - '-c'
# - 'touch {{ .Values.pipelines.mountPath }}/example-custom-setup'
# volumeMounts:
# - mountPath: "{{ .Values.pipelines.mountPath}}"
# name: jfrog-pipelines-folder
# Filebeat Sidecar container
## The provided filebeat configuration is for Pipeline logs. It assumes you have a logstash installed and configured properly.
filebeat:
enabled: false
##
rbac:
create: true
## The Build Plane is where the actual builds will run
buildPlane:
## Dynamic Build Plane integration for the initial bootstrapping of the build planes.
## Any required changes post install need to be done in UI: Administration/Pipelines/Integrations
dynamic:
## customer part is not needed for on-prem install
customer:
accountId: ""
nodePoolName: ""
nodelimit: ""
provider:
aws:
enabled: false
## Replace the dummy values with the real ones
nodePoolName: "aws-dynamic-node-pool"
nodelimit: "3"
instanceType: c4.xlarge
securityGroupId: testsecuritygroupId
subnetId: test-subnetId
keyPairName: testaccountSSHKeyPair
vpcId: testVPCId
region: us-east-1
##
accessKey: ""
secretKey: ""
## Existing secret with AWS keys
existingSecret:
k8s:
enabled: false
## Replace the dummy values with the real ones
nodePoolName: "k8s-dynamic-node-pool"
nodelimit: "3"
cpu: "1"
memory: "1000"
namespace: default
storageClass: standard
## Node Affinity values: {key1:value1,key2:value2}
labels:
## Kubernetes node pool kubeconfig base64 encoded
kubeconfig: ""
## Existing secret with kubeconfig
existingSecret: