diff --git a/charts/argo-cd/Chart.yaml b/charts/argo-cd/Chart.yaml index 6e0b68a4..0904bc0d 100644 --- a/charts/argo-cd/Chart.yaml +++ b/charts/argo-cd/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v1 appVersion: "1.4.2" description: A Helm chart for ArgoCD, a declarative, GitOps continuous delivery tool for Kubernetes. name: argo-cd -version: 1.7.3 +version: 1.8.0 home: https://github.com/argoproj/argo-helm icon: https://raw.githubusercontent.com/argoproj/argo/master/docs/assets/argo.png keywords: diff --git a/charts/argo-cd/README.md b/charts/argo-cd/README.md index ee1787fd..da37209b 100644 --- a/charts/argo-cd/README.md +++ b/charts/argo-cd/README.md @@ -101,6 +101,11 @@ Helm v3 has removed the `install-crds` hook so CRDs are now populated by files i | Key | Type | Default | Description | |-----|------|---------|-------------| | repoServer.affinity | Assign custom affinity rules to the deployment https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ | `{}` | +| repoServer.autoscaling.enabled | Enable Horizontal Pod Autoscaler (HPA) for the repo server | `false` | +| repoServer.autoscaling.minReplicas | Minimum number of replicas for the repo server HPA | `1` | +| repoServer.autoscaling.maxReplicas | Maximum number of replicas for the repo server HPA | `5` | +| repoServer.autoscaling.targetCPUUtilizationPercentage | Average CPU utilization percentage for the repo server HPA | `50` | +| repoServer.autoscaling.targetMemoryUtilizationPercentage | Average memory utilization percentage for the repo server HPA | `50` | | repoServer.containerPort | Repo server port | `8081` | | repoServer.extraArgs | Additional arguments for the repo server. A list of key:value pairs. | `[]` | | repoServer.env | Environment variables for the repo server. | `[]` | @@ -143,10 +148,16 @@ Helm v3 has removed the `install-crds` hook so CRDs are now populated by files i | Key | Type | Default | Description | |-----|------|---------|-------------| | server.affinity | Assign custom affinity rules to the deployment https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ | `{}` | +| server.autoscaling.enabled | Enable Horizontal Pod Autoscaler (HPA) for the server | `false` | +| server.autoscaling.minReplicas | Minimum number of replicas for the server HPA | `1` | +| server.autoscaling.maxReplicas | Maximum number of replicas for the server HPA | `5` | +| server.autoscaling.targetCPUUtilizationPercentage | Average CPU utilization percentage for the server HPA | `50` | +| server.autoscaling.targetMemoryUtilizationPercentage | Average memory utilization percentage for the server HPA | `50` | | server.certificate.additionalHosts | Certificate manager additional hosts | `[]` | | server.certificate.domain | Certificate manager domain | `"argocd.example.com"` | | server.certificate.enabled | Enables a certificate manager certificate. | `false` | | server.certificate.issuer | Certificate manager issuer | `{}` | +| server.clusterAdminAccess.enabled | Enable RBAC for local cluster deployments. | `true` | | server.config | [General Argo CD configuration](https://argoproj.github.io/argo-cd/operator-manual/declarative-setup/#repositories) | See [values.yaml](values.yaml) | | server.containerPort | Server container port. | `8080` | | server.extraArgs | Additional arguments for the server. A list of key:value pairs. | `[]` | diff --git a/charts/argo-cd/templates/argocd-application-controller/deployment.yaml b/charts/argo-cd/templates/argocd-application-controller/deployment.yaml index 286fb981..9c13b535 100755 --- a/charts/argo-cd/templates/argocd-application-controller/deployment.yaml +++ b/charts/argo-cd/templates/argocd-application-controller/deployment.yaml @@ -68,7 +68,7 @@ spec: name: {{ .Values.controller.name }} {{- if .Values.controller.containerSecurityContext }} securityContext: {{- toYaml .Values.controller.containerSecurityContext | nindent 10 }} - {{- end }} + {{- end }} {{- if .Values.controller.env }} env: {{- toYaml .Values.controller.env | nindent 8 }} diff --git a/charts/argo-cd/templates/argocd-application-controller/service.yaml b/charts/argo-cd/templates/argocd-application-controller/service.yaml index bda37168..69f8ce52 100644 --- a/charts/argo-cd/templates/argocd-application-controller/service.yaml +++ b/charts/argo-cd/templates/argocd-application-controller/service.yaml @@ -17,7 +17,7 @@ metadata: app.kubernetes.io/component: {{ .Values.controller.name }} spec: ports: - - name: {{ .Values.controller.name }} + - name: {{ .Values.controller.service.portName }} port: {{ .Values.controller.service.port }} targetPort: {{ .Values.controller.containerPort }} selector: diff --git a/charts/argo-cd/templates/argocd-repo-server/deployment.yaml b/charts/argo-cd/templates/argocd-repo-server/deployment.yaml index 918accd4..cb4dffa0 100755 --- a/charts/argo-cd/templates/argocd-repo-server/deployment.yaml +++ b/charts/argo-cd/templates/argocd-repo-server/deployment.yaml @@ -16,7 +16,9 @@ spec: app.kubernetes.io/name: {{ include "argo-cd.name" . }}-{{ .Values.repoServer.name }} app.kubernetes.io/instance: {{ .Release.Name }} revisionHistoryLimit: 5 + {{- if (ne .Values.repoServer.autoscaling.enabled true) }} replicas: {{ .Values.repoServer.replicas }} + {{- end }} template: metadata: {{- if .Values.repoServer.podAnnotations }} @@ -61,7 +63,7 @@ spec: {{- end }} {{- if .Values.repoServer.containerSecurityContext }} securityContext: {{- toYaml .Values.repoServer.containerSecurityContext | nindent 10 }} - {{- end }} + {{- end }} {{- if .Values.repoServer.env }} env: {{- toYaml .Values.repoServer.env | nindent 8 }} diff --git a/charts/argo-cd/templates/argocd-repo-server/hpa.yaml b/charts/argo-cd/templates/argocd-repo-server/hpa.yaml new file mode 100644 index 00000000..860e70f4 --- /dev/null +++ b/charts/argo-cd/templates/argocd-repo-server/hpa.yaml @@ -0,0 +1,33 @@ +{{- if .Values.repoServer.autoscaling.enabled }} +apiVersion: autoscaling/v2beta1 +kind: HorizontalPodAutoscaler +metadata: + labels: + app.kubernetes.io/name: {{ include "argo-cd.name" . }}-{{ .Values.repoServer.name }}-hpa + helm.sh/chart: {{ include "argo-cd.chart" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + app.kubernetes.io/part-of: argocd + app.kubernetes.io/component: {{ .Values.repoServer.name }} + name: {{ template "argo-cd.repoServer.fullname" . }}-hpa +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ template "argo-cd.repoServer.fullname" . }} + minReplicas: {{ .Values.repoServer.autoscaling.minReplicas }} + maxReplicas: {{ .Values.repoServer.autoscaling.maxReplicas }} + metrics: +{{- with .Values.repoServer.autoscaling.targetCPUUtilizationPercentage }} + - type: Resource + resource: + name: cpu + targetAverageUtilization: {{ . }} +{{- end }} +{{- with .Values.repoServer.autoscaling.targetMemoryUtilizationPercentage }} + - type: Resource + resource: + name: memory + targetAverageUtilization: {{ . }} +{{- end }} +{{- end }} diff --git a/charts/argo-cd/templates/argocd-repo-server/service.yaml b/charts/argo-cd/templates/argocd-repo-server/service.yaml index 9ce1f144..169edd31 100644 --- a/charts/argo-cd/templates/argocd-repo-server/service.yaml +++ b/charts/argo-cd/templates/argocd-repo-server/service.yaml @@ -17,7 +17,7 @@ metadata: name: {{ template "argo-cd.repoServer.fullname" . }} spec: ports: - - name: repo-server + - name: {{ .Values.repoServer.service.portName }} protocol: TCP port: {{ .Values.repoServer.service.port }} targetPort: repo-server diff --git a/charts/argo-cd/templates/argocd-server/clusterrole.yaml b/charts/argo-cd/templates/argocd-server/clusterrole.yaml index d14fcca6..4570454b 100644 --- a/charts/argo-cd/templates/argocd-server/clusterrole.yaml +++ b/charts/argo-cd/templates/argocd-server/clusterrole.yaml @@ -1,3 +1,4 @@ +{{- if .Values.server.clusterAdminAccess.enabled }} apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: @@ -30,4 +31,5 @@ rules: - pods - pods/log verbs: - - get \ No newline at end of file + - get +{{- end }} \ No newline at end of file diff --git a/charts/argo-cd/templates/argocd-server/clusterrolebinding.yaml b/charts/argo-cd/templates/argocd-server/clusterrolebinding.yaml index 2cf4765e..3bbd5a0d 100644 --- a/charts/argo-cd/templates/argocd-server/clusterrolebinding.yaml +++ b/charts/argo-cd/templates/argocd-server/clusterrolebinding.yaml @@ -1,3 +1,4 @@ +{{- if .Values.server.clusterAdminAccess.enabled }} apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: @@ -16,4 +17,5 @@ roleRef: subjects: - kind: ServiceAccount name: {{ template "argo-cd.serverServiceAccountName" . }} - namespace: {{ .Release.Namespace }} \ No newline at end of file + namespace: {{ .Release.Namespace }} +{{- end }} \ No newline at end of file diff --git a/charts/argo-cd/templates/argocd-server/deployment.yaml b/charts/argo-cd/templates/argocd-server/deployment.yaml index fe6e54d5..1c1d1072 100755 --- a/charts/argo-cd/templates/argocd-server/deployment.yaml +++ b/charts/argo-cd/templates/argocd-server/deployment.yaml @@ -16,7 +16,9 @@ spec: app.kubernetes.io/name: {{ include "argo-cd.name" . }}-{{ .Values.server.name }} app.kubernetes.io/instance: {{ .Release.Name }} revisionHistoryLimit: 5 + {{- if (ne .Values.server.autoscaling.enabled true) }} replicas: {{ .Values.server.replicas }} + {{- end }} template: metadata: {{- if .Values.server.podAnnotations }} @@ -69,14 +71,14 @@ spec: {{- end }} {{- if .Values.server.containerSecurityContext }} securityContext: {{- toYaml .Values.server.containerSecurityContext | nindent 10 }} - {{- end }} + {{- end }} {{- if .Values.server.env }} env: {{- toYaml .Values.server.env | nindent 8 }} {{- end }} volumeMounts: {{- if .Values.server.volumeMounts }} -{{- toYaml .Values.server.volumeMounts | nindent 10}} +{{- toYaml .Values.server.volumeMounts | nindent 8}} {{- end }} {{- if .Values.configs.knownHosts }} - mountPath: /app/config/ssh diff --git a/charts/argo-cd/templates/argocd-server/hpa.yaml b/charts/argo-cd/templates/argocd-server/hpa.yaml new file mode 100644 index 00000000..0da43850 --- /dev/null +++ b/charts/argo-cd/templates/argocd-server/hpa.yaml @@ -0,0 +1,33 @@ +{{- if .Values.server.autoscaling.enabled }} +apiVersion: autoscaling/v2beta1 +kind: HorizontalPodAutoscaler +metadata: + labels: + app.kubernetes.io/name: {{ include "argo-cd.name" . }}-{{ .Values.server.name }}-hpa + helm.sh/chart: {{ include "argo-cd.chart" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + app.kubernetes.io/part-of: argocd + app.kubernetes.io/component: {{ .Values.server.name }} + name: {{ template "argo-cd.server.fullname" . }}-hpa +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ template "argo-cd.server.fullname" . }} + minReplicas: {{ .Values.server.autoscaling.minReplicas }} + maxReplicas: {{ .Values.server.autoscaling.maxReplicas }} + metrics: +{{- with .Values.server.autoscaling.targetCPUUtilizationPercentage }} + - type: Resource + resource: + name: cpu + targetAverageUtilization: {{ . }} +{{- end }} +{{- with .Values.server.autoscaling.targetMemoryUtilizationPercentage }} + - type: Resource + resource: + name: memory + targetAverageUtilization: {{ . }} +{{- end }} +{{- end }} diff --git a/charts/argo-cd/values.yaml b/charts/argo-cd/values.yaml index df42b9c1..e88c2f8c 100755 --- a/charts/argo-cd/values.yaml +++ b/charts/argo-cd/values.yaml @@ -86,6 +86,7 @@ controller: annotations: {} labels: {} port: 8082 + portName: https-controller ## Node selectors and tolerations for server scheduling to nodes with taints ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ @@ -270,6 +271,13 @@ server: replicas: 1 + autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 5 + targetCPUUtilizationPercentage: 50 + targetMemoryUtilizationPercentage: 50 + image: repository: # argoproj/argocd tag: # v1.4.2 @@ -507,12 +515,24 @@ server: # orphanedResources: {} # roles: [] + ## Enable Admin ClusterRole resources. + ## Enable if you would like to grant rights to ArgoCD to deploy to the local kuberentes cluster. + clusterAdminAccess: + enabled: true + ## Repo Server repoServer: name: repo-server replicas: 1 + autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 5 + targetCPUUtilizationPercentage: 50 + targetMemoryUtilizationPercentage: 50 + image: repository: # argoproj/argocd tag: # v1.4.2 @@ -590,6 +610,7 @@ repoServer: annotations: {} labels: {} port: 8081 + portName: https-repo-server ## Repo server metrics service configuration metrics: diff --git a/charts/argo-rollouts/Chart.yaml b/charts/argo-rollouts/Chart.yaml index fa8038dd..175d2c86 100644 --- a/charts/argo-rollouts/Chart.yaml +++ b/charts/argo-rollouts/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v1 appVersion: "0.7" description: A Helm chart for Argo Rollouts name: argo-rollouts -version: 0.1.0 +version: 0.1.1 icon: https://raw.githubusercontent.com/argoproj/argo/master/argo.png home: https://github.com/argoproj/argo-helm maintainers: diff --git a/charts/argo-rollouts/README.md b/charts/argo-rollouts/README.md new file mode 100644 index 00000000..f4f0f3a6 --- /dev/null +++ b/charts/argo-rollouts/README.md @@ -0,0 +1,39 @@ +Argo Rollouts Chart +============= +A Helm chart for Argo Rollouts, progressive delivery for Kubernetes. + +Current chart version is `0.1.0` + +Source code can be found [here](https://github.com/argoproj/argo-rollouts) + +## Additional Information +This is a **community maintained** chart. This chart installs [argo-rollouts](https://argoproj.github.io/argo-rollouts/), progressive delivery for Kubernetes. + +The default installation is intended to be similar to the provided Argo Rollouts [releases](https://github.com/argoproj/argo-rollouts/releases). + +## Prerequisites + +- Kubernetes 1.7+ + + +## Installing the Chart + +To install the chart with the release name `my-release`: + +```console +$ helm repo add argo https://argoproj.github.io/argo-helm +$ helm install --name my-release argo/argo-rollouts +``` + +## Chart Values + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| clusterInstall | bool | `true` | | +| controller.component | string | `"rollouts-controller"` | | +| controller.image.pullPolicy | string | `"IfNotPresent"` | | +| controller.image.repository | string | `"argoproj/argo-rollouts"` | | +| controller.image.tag | string | `"v0.7.0"` | | +| controller.name | string | `"argo-rollouts"` | | +| installCRDs | bool | `true` | | +| serviceAccount.name | string | `"argo-rollouts"` | |