diff --git a/stable/artifactory-ha/Chart.yaml b/stable/artifactory-ha/Chart.yaml index 06487b9339..2f00c88f8c 100644 --- a/stable/artifactory-ha/Chart.yaml +++ b/stable/artifactory-ha/Chart.yaml @@ -1,7 +1,7 @@ apiVersion: v1 name: artifactory-ha home: https://www.jfrog.com/artifactory/ -version: 0.1.9 +version: 0.1.10 appVersion: 5.10.1 description: Universal Repository Manager supporting all major packaging formats, build tools and CI servers. diff --git a/stable/artifactory-ha/README.md b/stable/artifactory-ha/README.md index 54ec0d2281..c957c21175 100644 --- a/stable/artifactory-ha/README.md +++ b/stable/artifactory-ha/README.md @@ -255,6 +255,18 @@ The following table lists the configurable parameters of the artifactory chart a | `artifactory.service.pool` | Artifactory instances to be in the load balancing pool. `members` or `all` | `members` | | `artifactory.externalPort` | Artifactory service external port | `8081` | | `artifactory.internalPort` | Artifactory service internal port | `8081` | +| `artifactory.livenessProbe.enabled` | would you like a livessProbed to be enabled | `true` | +| `artifactory.livenessProbe.initialDelaySeconds` | Delay before liveness probe is initiated | 180 | +| `artifactory.livenessProbe.periodSeconds` | How often to perform the probe | 10 | +| `artifactory.livenessProbe.timeoutSeconds` | When the probe times out | 10 | +| `artifactory.livenessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed. | 1 | +| `artifactory.livenessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded. | 10 | +| `artifactory.readinessProbe.enabled` | would you like a readinessProbe to be enabled | `true` | +| `artifactory.readinessProbe.initialDelaySeconds` | Delay before readiness probe is initiated | 60 | +| `artifactory.readinessProbe.periodSeconds` | How often to perform the probe | 10 | +| `artifactory.readinessProbe.timeoutSeconds` | When the probe times out | 10 | +| `artifactory.readinessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed. | 1 | +| `artifactory.readinessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded. | 10 | | `artifactory.persistence.mountPath` | Artifactory persistence volume mount path | `"/var/opt/jfrog/artifactory"` | | `artifactory.persistence.enabled` | Artifactory persistence volume enabled | `true` | | `artifactory.persistence.accessMode` | Artifactory persistence volume access mode | `ReadWriteOnce` | @@ -309,6 +321,18 @@ The following table lists the configurable parameters of the artifactory chart a | `nginx.internalPortHttp` | Nginx service internal port | `80` | | `nginx.externalPortHttps` | Nginx service external port | `443` | | `nginx.internalPortHttps` | Nginx service internal port | `443` | +| `nginx.livenessProbe.enabled` | would you like a livessProbed to be enabled | `true` | +| `nginx.livenessProbe.initialDelaySeconds` | Delay before liveness probe is initiated | 100 | +| `nginx.livenessProbe.periodSeconds` | How often to perform the probe | 10 | +| `nginx.livenessProbe.timeoutSeconds` | When the probe times out | 10 | +| `nginx.livenessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed. | 1 | +| `nginx.livenessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded. | 10 | +| `nginx.readinessProbe.enabled` | would you like a readinessProbe to be enabled | `true` | +| `nginx.readinessProbe.initialDelaySeconds` | Delay before readiness probe is initiated | 60 | +| `nginx.readinessProbe.periodSeconds` | How often to perform the probe | 10 | +| `nginx.readinessProbe.timeoutSeconds` | When the probe times out | 10 | +| `nginx.readinessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed. | 1 | +| `nginx.readinessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded. | 10 | | `nginx.tlsSecretName` | SSL secret that will be used by the Nginx pod | | | `nginx.env.ssl` | Nginx Environment enable ssl | `true` | | `nginx.resources.requests.memory` | Nginx initial memory request | `250Mi` | diff --git a/stable/artifactory-ha/templates/artifactory-node-statefulset.yaml b/stable/artifactory-ha/templates/artifactory-node-statefulset.yaml index e3f91b5895..1f5796e4ed 100644 --- a/stable/artifactory-ha/templates/artifactory-node-statefulset.yaml +++ b/stable/artifactory-ha/templates/artifactory-node-statefulset.yaml @@ -143,19 +143,28 @@ spec: {{- end }} resources: {{ toYaml .Values.artifactory.node.resources | indent 10 }} + {{- if .Values.artifactory.readinessProbe.enabled }} readinessProbe: httpGet: path: '/artifactory/webapp/#/login' port: 8081 - initialDelaySeconds: 90 - periodSeconds: 10 - failureThreshold: 10 + initialDelaySeconds: {{ .Values.artifactory.readinessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.artifactory.readinessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.artifactory.readinessProbe.timeoutSeconds }} + failureThreshold: {{ .Values.artifactory.readinessProbe.failureThreshold }} + successThreshold: {{ .Values.artifactory.readinessProbe.successThreshold }} + {{- end }} + {{- if .Values.artifactory.livenessProbe.enabled }} livenessProbe: httpGet: path: '/artifactory/webapp/#/login' port: 8081 - initialDelaySeconds: 240 - periodSeconds: 10 + initialDelaySeconds: {{ .Values.artifactory.livenessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.artifactory.livenessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.artifactory.livenessProbe.timeoutSeconds }} + failureThreshold: {{ .Values.artifactory.livenessProbe.failureThreshold }} + successThreshold: {{ .Values.artifactory.livenessProbe.successThreshold }} + {{- end }} volumes: - name: binarystore-xml configMap: diff --git a/stable/artifactory-ha/templates/artifactory-primary-statefulset.yaml b/stable/artifactory-ha/templates/artifactory-primary-statefulset.yaml index 7f2aed956b..0f469eec6f 100644 --- a/stable/artifactory-ha/templates/artifactory-primary-statefulset.yaml +++ b/stable/artifactory-ha/templates/artifactory-primary-statefulset.yaml @@ -149,19 +149,28 @@ spec: {{- end }} resources: {{ toYaml .Values.artifactory.primary.resources | indent 10 }} + {{- if .Values.artifactory.readinessProbe.enabled }} readinessProbe: httpGet: path: '/artifactory/webapp/#/login' port: 8081 - initialDelaySeconds: 60 - periodSeconds: 10 - failureThreshold: 10 + initialDelaySeconds: {{ .Values.artifactory.readinessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.artifactory.readinessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.artifactory.readinessProbe.timeoutSeconds }} + failureThreshold: {{ .Values.artifactory.readinessProbe.failureThreshold }} + successThreshold: {{ .Values.artifactory.readinessProbe.successThreshold }} + {{- end }} + {{- if .Values.artifactory.livenessProbe.enabled }} livenessProbe: httpGet: path: '/artifactory/webapp/#/login' port: 8081 - initialDelaySeconds: 180 - periodSeconds: 10 + initialDelaySeconds: {{ .Values.artifactory.livenessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.artifactory.livenessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.artifactory.livenessProbe.timeoutSeconds }} + failureThreshold: {{ .Values.artifactory.livenessProbe.failureThreshold }} + successThreshold: {{ .Values.artifactory.livenessProbe.successThreshold }} + {{- end }} volumes: - name: binarystore-xml configMap: diff --git a/stable/artifactory-ha/templates/nginx-deployment.yaml b/stable/artifactory-ha/templates/nginx-deployment.yaml index 8ea812d696..83ff1a6146 100644 --- a/stable/artifactory-ha/templates/nginx-deployment.yaml +++ b/stable/artifactory-ha/templates/nginx-deployment.yaml @@ -29,8 +29,8 @@ spec: imagePullSecrets: - name: {{ .Values.imagePullSecrets }} {{- end }} - {{- if .Values.nginx.persistence.enabled }} initContainers: + {{- if .Values.nginx.persistence.enabled }} - name: "remove-lost-found" image: "{{ .Values.initContainerImage }}" imagePullPolicy: {{ .Values.nginx.image.pullPolicy }} @@ -42,6 +42,15 @@ spec: - mountPath: {{ .Values.nginx.persistence.mountPath | quote }} name: nginx-volume {{- end }} + - name: "wait-for-artifactory" + image: "{{ .Values.initContainerImage }}" + command: + - 'sh' + - '-c' + - > + until nc -z -w 2 {{ $serviceName }} {{ $servicePort }} && echo artifactory ok; do + sleep 2; + done; containers: - name: {{ .Values.nginx.name }} image: '{{ .Values.nginx.image.repository }}:{{ .Values.nginx.image.version }}' @@ -58,9 +67,11 @@ spec: cp -fv /tmp/ssl/* /var/opt/jfrog/nginx/ssl; fi; until [ -f /etc/nginx/conf.d/artifactory.conf ]; do sleep 1; done; + if ! grep -q 'upstream' /etc/nginx/conf.d/artifactory.conf; then sed -i -e 's,proxy_pass .*,proxy_pass http://{{ $serviceName }}:{{ $servicePort }}/artifactory/;,g' \ -e 's,server_name .*,server_name ~(?.+)\\.{{ $serviceName }} {{ $serviceName }};,g' \ /etc/nginx/conf.d/artifactory.conf; + fi; sleep 5; nginx -s reload; touch /var/log/nginx/conf.done env: - name: ART_BASE_URL @@ -83,6 +94,28 @@ spec: {{- end }} resources: {{ toYaml .Values.nginx.resources | indent 10 }} + {{- if .Values.nginx.readinessProbe.enabled }} + readinessProbe: + httpGet: + path: '/artifactory/webapp/#/login' + port: 80 + initialDelaySeconds: {{ .Values.nginx.readinessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.nginx.readinessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.nginx.readinessProbe.timeoutSeconds }} + failureThreshold: {{ .Values.nginx.readinessProbe.failureThreshold }} + successThreshold: {{ .Values.nginx.readinessProbe.successThreshold }} + {{- end }} + {{- if .Values.nginx.livenessProbe.enabled }} + livenessProbe: + httpGet: + path: '/artifactory/webapp/#/login' + port: 80 + initialDelaySeconds: {{ .Values.nginx.livenessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.nginx.livenessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.nginx.livenessProbe.timeoutSeconds }} + failureThreshold: {{ .Values.nginx.livenessProbe.failureThreshold }} + successThreshold: {{ .Values.nginx.livenessProbe.successThreshold }} + {{- end }} volumes: - name: nginx-volume {{- if .Values.nginx.persistence.enabled }} diff --git a/stable/artifactory-ha/values.yaml b/stable/artifactory-ha/values.yaml index e7b39befc2..ecad550fbd 100644 --- a/stable/artifactory-ha/values.yaml +++ b/stable/artifactory-ha/values.yaml @@ -78,7 +78,22 @@ artifactory: membershipPort: 10017 externalPort: 8081 internalPort: 8081 + ## The following settings are to configure the frequency of the liveness and readiness probes + livenessProbe: + enabled: true + initialDelaySeconds: 180 + failureThreshold: 10 + timeoutSeconds: 10 + periodSeconds: 10 + successThreshold: 1 + readinessProbe: + enabled: true + initialDelaySeconds: 60 + failureThreshold: 10 + timeoutSeconds: 10 + periodSeconds: 10 + successThreshold: 1 persistence: redundancy: 3 mountPath: "/var/opt/jfrog/artifactory" @@ -204,6 +219,22 @@ nginx: internalPortHttp: 80 externalPortHttps: 443 internalPortHttps: 443 + ## The following settings are to configure the frequency of the liveness and readiness probes + livenessProbe: + enabled: true + initialDelaySeconds: 100 + failureThreshold: 10 + timeoutSeconds: 10 + periodSeconds: 10 + successThreshold: 1 + + readinessProbe: + enabled: true + initialDelaySeconds: 60 + failureThreshold: 10 + timeoutSeconds: 10 + periodSeconds: 10 + successThreshold: 1 ## The SSL secret that will be used by the Nginx pod # tlsSecretName: chart-example-tls env: