From 770a673dc9832fde2310624edfe9a7e7890fdd44 Mon Sep 17 00:00:00 2001 From: casad Date: Fri, 26 Apr 2019 12:07:34 -0400 Subject: [PATCH 1/8] Add latest changes for supporting GKE/PKS/AKS and HPAs --- charts/pega/Chart.yaml | 1 - charts/pega/requirements.yaml | 4 + charts/pega/templates/_helpers.tpl | 18 +-- charts/pega/templates/_pega-config.tpl | 4 +- charts/pega/templates/_pega-deployment.tpl | 4 +- charts/pega/templates/_pega_hpa.tpl | 26 ++++ .../templates/eks/pega-ebs-storage-class.yaml | 13 -- charts/pega/templates/pega-batch-hpa.yaml | 1 + ...cret.yaml => pega-credentials-secret.yaml} | 6 +- .../templates/pega-environment-config.yaml | 6 +- .../templates/pega-search-deployment.yaml | 8 + .../templates/pega-stream-deployment.yaml | 3 - charts/pega/templates/pega-web-hpa.yaml | 1 + charts/pega/values.yaml | 145 ++++++++++++------ 14 files changed, 158 insertions(+), 82 deletions(-) create mode 100644 charts/pega/templates/_pega_hpa.tpl delete mode 100644 charts/pega/templates/eks/pega-ebs-storage-class.yaml create mode 100644 charts/pega/templates/pega-batch-hpa.yaml rename charts/pega/templates/{pega-database-secret.yaml => pega-credentials-secret.yaml} (70%) create mode 100644 charts/pega/templates/pega-web-hpa.yaml diff --git a/charts/pega/Chart.yaml b/charts/pega/Chart.yaml index 7ffa26ed3..ac60f88f8 100644 --- a/charts/pega/Chart.yaml +++ b/charts/pega/Chart.yaml @@ -1,4 +1,3 @@ ---- name: pega version: "0.0.1" description: Pega installation on kubernetes diff --git a/charts/pega/requirements.yaml b/charts/pega/requirements.yaml index 5fcf997b1..6af0f1807 100644 --- a/charts/pega/requirements.yaml +++ b/charts/pega/requirements.yaml @@ -21,3 +21,7 @@ dependencies: version: "1.1.0" repository: https://kubernetes-charts.storage.googleapis.com/ condition: kibana.enabled +- name: metrics-server + version: "2.5.0" + repository: https://kubernetes-charts.storage.googleapis.com/ + condition: metrics-server.enabled diff --git a/charts/pega/templates/_helpers.tpl b/charts/pega/templates/_helpers.tpl index f41825360..6977117f0 100644 --- a/charts/pega/templates/_helpers.tpl +++ b/charts/pega/templates/_helpers.tpl @@ -1,8 +1,7 @@ {{- define "pegaEnvironmentConfig" }}pega-environment-config{{- end }} {{- define "pegaVolumeConfig" }}pega-volume-config{{- end }} {{- define "pegaVolumeCredentials" }}pega-volume-credentials{{- end }} -{{- define "pegaStorageClassEBS" }}pega-ebs-storage-class{{- end }} -{{- define "pegaDatabaseSecret" }}pega-database-secret{{- end }} +{{- define "pegaCredentialsSecret" }}pega-credentials-secret{{- end }} {{- define "pegaRegistrySecret" }}pega-registry-secret{{- end }} {{- define "pegaWebName" -}}pega-web{{- end -}} {{- define "pegaBatchName" -}}pega-batch{{- end -}} @@ -118,16 +117,6 @@ until cqlsh -u {{ $cassandraUser | quote }} -p {{ $cassandraPassword | quote }} configMapKeyRef: name: {{ template "pegaEnvironmentConfig" }} key: CASSANDRA_PORT -- name: CASSANDRA_USERNAME - valueFrom: - configMapKeyRef: - name: {{ template "pegaEnvironmentConfig" }} - key: CASSANDRA_USERNAME -- name: CASSANDRA_PASSWORD - valueFrom: - configMapKeyRef: - name: {{ template "pegaEnvironmentConfig" }} - key: CASSANDRA_PASSWORD - name: PEGA_SEARCH_URL valueFrom: configMapKeyRef: @@ -158,6 +147,11 @@ until cqlsh -u {{ $cassandraUser | quote }} -p {{ $cassandraPassword | quote }} configMapKeyRef: name: {{ template "pegaEnvironmentConfig" }} key: DATA_SCHEMA +- name: CUSTOMERDATA_SCHEMA + valueFrom: + configMapKeyRef: + name: {{ template "pegaEnvironmentConfig" }} + key: CUSTOMERDATA_SCHEMA - name: DL-NAME value: EMPTY {{- end }} diff --git a/charts/pega/templates/_pega-config.tpl b/charts/pega/templates/_pega-config.tpl index a20e2479f..5a06c65ac 100644 --- a/charts/pega/templates/_pega-config.tpl +++ b/charts/pega/templates/_pega-config.tpl @@ -6,10 +6,10 @@ metadata: name: {{ .name }} namespace: {{ .root.Release.Namespace }} data: - # prconfig file to be used by {{ .name }} + # prconfig file to be used by {{ .name }} prconfig.xml: |- {{ .root.Files.Get .node.prconfigPath | indent 6 }} - # prlog4j2 file to be used by {{ .name }} + # prlog4j2 file to be used by {{ .name }} prlog4j2.xml: |- {{ .root.Files.Get .node.prlog4j2Path | indent 6 }} {{- end }} diff --git a/charts/pega/templates/_pega-deployment.tpl b/charts/pega/templates/_pega-deployment.tpl index 1ab677164..d226234da 100644 --- a/charts/pega/templates/_pega-deployment.tpl +++ b/charts/pega/templates/_pega-deployment.tpl @@ -29,7 +29,7 @@ spec: - name: {{ template "pegaVolumeCredentials" }} secret: # This name will be referred in the volume mounts kind. - secretName: {{ template "pegaDatabaseSecret" }} + secretName: {{ template "pegaCredentialsSecret" }} # Used to specify permissions on files within the volume. defaultMode: 420 initContainers: @@ -82,4 +82,4 @@ spec: {{- if .extraSpecData }} {{ include .extraSpecData .root | indent 2 }} {{- end }} -{{- end -}} \ No newline at end of file +{{- end -}} diff --git a/charts/pega/templates/_pega_hpa.tpl b/charts/pega/templates/_pega_hpa.tpl new file mode 100644 index 000000000..a991fac73 --- /dev/null +++ b/charts/pega/templates/_pega_hpa.tpl @@ -0,0 +1,26 @@ +{{- define "pega.hpa" -}} +{{- if .hpa.enabled -}} +# The Horizontal Pod Autoscaler for {{ .deploymentName }} deployment +apiVersion: autoscaling/v2beta1 +kind: HorizontalPodAutoscaler +metadata: + name: {{ .name | quote}} + namespace: {{ .root.Release.Namespace }} +spec: + scaleTargetRef: + apiVersion: extensions/v1beta1 + kind: Deployment + name: {{ .deploymentName | quote }} + minReplicas: {{ .hpa.minReplicas }} + maxReplicas: {{ .hpa.maxReplicas }} + metrics: + - type: Resource + resource: + name: cpu + targetAverageUtilization: {{ .hpa.targetAverageCPUUtilization }} + - type: Resource + resource: + name: memory + targetAverageUtilization: {{ .hpa.targetAverageMemoryUtilization }} +{{- end -}} +{{- end -}} \ No newline at end of file diff --git a/charts/pega/templates/eks/pega-ebs-storage-class.yaml b/charts/pega/templates/eks/pega-ebs-storage-class.yaml deleted file mode 100644 index 063ddf057..000000000 --- a/charts/pega/templates/eks/pega-ebs-storage-class.yaml +++ /dev/null @@ -1,13 +0,0 @@ -{{- if eq .Values.provider "eks" -}} -kind: StorageClass -apiVersion: storage.k8s.io/v1 -metadata: - name: {{ template "pegaStorageClassEBS" }} -provisioner: kubernetes.io/aws-ebs -parameters: - type: gp2 -reclaimPolicy: Retain -mountOptions: -- debug -volumeBindingMode: Immediate -{{- end -}} diff --git a/charts/pega/templates/pega-batch-hpa.yaml b/charts/pega/templates/pega-batch-hpa.yaml new file mode 100644 index 000000000..4da9426da --- /dev/null +++ b/charts/pega/templates/pega-batch-hpa.yaml @@ -0,0 +1 @@ +{{ template "pega.hpa" dict "root" $ "name" (printf "%s-hpa" (include "pegaBatchName" .)) "deploymentName" (include "pegaBatchName" .) "hpa" .Values.batch.hpa}} \ No newline at end of file diff --git a/charts/pega/templates/pega-database-secret.yaml b/charts/pega/templates/pega-credentials-secret.yaml similarity index 70% rename from charts/pega/templates/pega-database-secret.yaml rename to charts/pega/templates/pega-credentials-secret.yaml index bd15bfd17..80a22c27f 100644 --- a/charts/pega/templates/pega-database-secret.yaml +++ b/charts/pega/templates/pega-credentials-secret.yaml @@ -1,13 +1,17 @@ kind: Secret apiVersion: v1 metadata: - name: {{ template "pegaDatabaseSecret" }} + name: {{ template "pegaCredentialsSecret" }} namespace: {{ .Release.Namespace }} data: # Base64 encdoded username for connecting to the Pega DB DB_USERNAME: {{ .Values.jdbc.username | b64enc }} # Base64 encdoded password for connecting to the Pega DB DB_PASSWORD: {{ .Values.jdbc.password | b64enc }} + # Base64 encdoded username for connecting to cassandra + CASSANDRA_USERNAME: {{ .Values.dds.username | b64enc }} + # Base64 encdoded password for connecting to cassandra + CASSANDRA_PASSWORD: {{ .Values.dds.password | b64enc }} # Base64 encdoded username for a Tomcat user that will be created with the PegaDiagnosticUser role PEGA_DIAGNOSTIC_USER: {{ .Values.web.pegaDiagnosticUser | b64enc }} # Base64 encdoded password for a Tomcat user that will be created with the PegaDiagnosticUser role diff --git a/charts/pega/templates/pega-environment-config.yaml b/charts/pega/templates/pega-environment-config.yaml index 1915059b2..5071d016f 100644 --- a/charts/pega/templates/pega-environment-config.yaml +++ b/charts/pega/templates/pega-environment-config.yaml @@ -15,6 +15,8 @@ data: RULES_SCHEMA: {{ .Values.jdbc.rulesSchema }} # Data schema of the Pega installation DATA_SCHEMA: {{ .Values.jdbc.dataSchema }} + # CustomerData schema of the Pega installation + CUSTOMERDATA_SCHEMA: {{ .Values.jdbc.customerDataSchema }} # URL to connect to Elastic Search PEGA_SEARCH_URL: {{ include "properPegaSearchURL" . }} # Whether to enable connecting to a cassandra cluster. "true" for enabled, "false for disabled" @@ -23,7 +25,3 @@ data: CASSANDRA_NODES: {{ include "cassandraNodes" . }} # Port to connect to cassandra with CASSANDRA_PORT: "{{ .Values.dds.port }}" - # Username for Cassandra DB - CASSANDRA_USERNAME: {{ .Values.dds.username }} - # Password for Cassandra DB - CASSANDRA_PASSWORD: {{ .Values.dds.password }} diff --git a/charts/pega/templates/pega-search-deployment.yaml b/charts/pega/templates/pega-search-deployment.yaml index 19836a5e0..58ecb5d8a 100644 --- a/charts/pega/templates/pega-search-deployment.yaml +++ b/charts/pega/templates/pega-search-deployment.yaml @@ -27,6 +27,14 @@ spec: fsGroup: 1000 {{ end }} initContainers: + {{ if eq .Values.provider "openshift" }} + - name: set-dir-owner + image: busybox:1.27.2 + command: ['sh', '-c', 'chown -R 1000:1000 /usr/share/elasticsearch/data'] + volumeMounts: + - name: esstorage + mountPath: /usr/share/elasticsearch/data + {{ end }} - name: set-max-map-count image: busybox:1.27.2 command: ['sysctl', '-w', 'vm.max_map_count=262144'] diff --git a/charts/pega/templates/pega-stream-deployment.yaml b/charts/pega/templates/pega-stream-deployment.yaml index 3d249daad..69be019ee 100644 --- a/charts/pega/templates/pega-stream-deployment.yaml +++ b/charts/pega/templates/pega-stream-deployment.yaml @@ -10,9 +10,6 @@ volumeClaimTemplates: spec: accessModes: - ReadWriteOnce - {{- if eq .Values.provider "eks" }} - storageClassName: {{ template "pegaStorageClassEBS" }} - {{- end }} resources: requests: storage: 5Gi diff --git a/charts/pega/templates/pega-web-hpa.yaml b/charts/pega/templates/pega-web-hpa.yaml new file mode 100644 index 000000000..1436319ff --- /dev/null +++ b/charts/pega/templates/pega-web-hpa.yaml @@ -0,0 +1 @@ +{{ template "pega.hpa" dict "root" $ "name" (printf "%s-hpa" (include "pegaWebName" .)) "deploymentName" (include "pegaWebName" .) "hpa" .Values.web.hpa}} \ No newline at end of file diff --git a/charts/pega/values.yaml b/charts/pega/values.yaml index 6aa6ae758..973f8c18c 100644 --- a/charts/pega/values.yaml +++ b/charts/pega/values.yaml @@ -1,8 +1,10 @@ ---- # Enter your Kubernetes provider. Replace "YOUR_KUBERNETES_PROVIDER" with one of the following values: # k8s - for a deployment using open-source Kubernetes # openshift - for a deployment using Red Hat Openshift # eks - for a deployment using Amazon EKS +# gke - for a deployment using Google Kubernetes Engine +# pks - for a deployment using Pivotal Container Service +# aks - for a deployment using Azure Kubernetes Service provider: "YOUR_KUBERNETES_PROVIDER" # Configure Traefik for load balancing: @@ -14,7 +16,11 @@ traefik: enabled: true # Set any additional Traefik parameters. These values will be used by Traefik's helm chart. # See https://github.com/helm/charts/blob/master/stable/traefik/values.yaml + # Set traefik.serviceType to "LoadBalancer" on gke, aks, and pks serviceType: NodePort + # If enabled is set to "true", ssl will be enabled for traefik + ssl: + enabled: false rbac: enabled: true service: @@ -23,48 +29,6 @@ traefik: http: 30080 https: 30443 -# Configure EFK stack for logging: -# For a complete EFK stack: elasticsearch, fluentd-elasticsearch, and kibana should all be enabled -# Pega recommends deploying EFK only on k8s -# On Openshift, see https://docs.openshift.com/container-platform/3.11/install_config/aggregate_logging.html -# On EKS, see https://eksworkshop.com/logging/ -elasticsearch: - # If elasticsearch.enabled is set to true, elasticsearch is deployed automatically. - enabled: true - # Set this variable to create the service with given prefix. - # elasticsearch service would be -client. - # If this parameter is changed, please update the values for for kibana [elasticsearch.url] and fluentd-elasticsearch [host]. - # Set any additional elastic search parameters. These values will be used by elasticsearch helm chart. - # See https://github.com/helm/charts/tree/master/stable/elasticsearch/values.yaml - fullnameOverride: "YOUR_ELASTICSEARCH_NAME" - -kibana: - # If kibana.enabled is set to true, kibana is deployed automatically. - enabled: true - # Set any additional kibana parameters. These values will be used by Kibana's helm chart. - # See https://github.com/helm/charts/tree/master/stable/kibana/values.yaml - files: - kibana.yml: - elasticsearch.url: http://-client:9200 - service: - externalPort: 80 - ingress: - # If enabled is set to "true", an ingress is created to access kibana. - enabled: true - # Enter the domain name to access kibana via a load balancer. - hosts: - - "YOUR_WEB.KIBANA.EXAMPLE.COM" - -fluentd-elasticsearch: - # If fluentd-elasticsearch.enabled is set to true, fluentd-elasticsearch is deployed automatically. - enabled: true - # Set any additional fluentd-elasticsearch parameters. These values will be used by fluentd-elasticsearch's helm chart. - # See https://github.com/helm/charts/tree/master/stable/fluentd-elasticsearch/values.yaml - elasticsearch: - host: '-client' - buffer_chunk_limit: 250M - buffer_queue_limit: 30 - # Docker image information for the Pega docker image, containing the application server. # To use this feature you MUST host the image using a private registry. # See https://kubernetes.io/docs/concepts/containers/images/#using-a-private-registry @@ -108,6 +72,8 @@ jdbc: # Set the rules and data schemas for your database. Additional schemas can be defined within Pega. rulesSchema: "YOUR_RULES_SCHEMA" dataSchema: "YOUR_DATA_SCHEMA" + # If configured, set the customerdata schema for your database. Defaults to value of dataSchema if not provided. + customerDataSchema: # Pega web deployment settings. web: @@ -134,6 +100,20 @@ web: # Set your Pega diagnostic credentials. pegaDiagnosticUser: "" pegaDiagnosticPassword: "" + hpa: + enabled: true + # Enter the minimum number of replicas that HPA can scale-down + minReplicas: 1 + # Enter the maximum number of replicas that HPA can scale-up + maxReplicas: 5 + # Enter the threshold value for average cpu utilization percentage. This value is calculated on resource request. + # Default value is set at 70% of web pod cpu limit. Pega web pod default cpu request is 200m & limit is 2c. 70% of limit or 700% request which is 1.4c. + # HPA will scale up if pega web pods average cpu utilization reaches 1.4c + targetAverageCPUUtilization: 700 + # Enter the threshold value for average memory utilization percentage. This value is calculated on resource request. + # Default value is set at 70% of web pod memory limit. Pega web pod default memory request is 2Gi & limit is 8Gi. 70% of limit or 280% request which is 5.6Gi. + # HPA will scale up if pega web pods average memory utilization reaches 5.6Gi + targetAverageMemoryUtilization: 280 # Pega stream deployment settings. stream: @@ -141,7 +121,7 @@ stream: # e.g. stream.mypega.example.com domain: "YOUR_STREAM_NODE_DOMAIN" # Enter the number of stream nodes for Kubernetes to deploy (minimum 2). - replicas: 1 + replicas: 2 # Enter the CPU limit for each stream node (recommended 2). cpuLimit: 2 # Enter the memory limit for each stream node (recommended 8Gi). @@ -177,6 +157,20 @@ batch: # Pega includes default files, but supports overriding these files with customized prconfig and prlog4j2 files. prconfigPath: "config/prconfig.xml" prlog4j2Path: "config/prlog4j2.xml" + hpa: + enabled: true + # Enter the minimum number of replicas that HPA can scale-down + minReplicas: 1 + # Enter the maximum number of replicas that HPA can scale-up + maxReplicas: 3 + # Enter the threshold value for average cpu utilization percentage. This value is calculated on resource request. + # Default value is set at 70% of batch pod cpu limit. Pega batch pod default cpu request is 200m & limit is 2c. 70% of limit or 700% request which is 1.4c. + # HPA will scale up if pega batch pods average cpu utilization reaches 1.4c + targetAverageCPUUtilization: 700 + # Enter the threshold value for average memory utilization percentage. This value is calculated on resource request. + # Default value is set at 70% of batch pod memory limit. Pega batch pod default memory request is 2Gi & limit is 8Gi. 70% of limit or 280% request which is 5.6Gi. + # HPA will scale up if pega batch pods average memory utilization reaches 5.6Gi + targetAverageMemoryUtilization: 280 # Cassandra automatic deployment settings. cassandra: @@ -215,3 +209,66 @@ search: cpuLimit: 1 # Enter the volume size limit for each search node (recommended 5Gi). volumeSize: "5Gi" + + +# Configure EFK stack for logging: +# For a complete EFK stack: elasticsearch, fluentd-elasticsearch, and kibana should all be enabled +# Pega recommends deploying EFK only on k8s +# On Openshift, see https://docs.openshift.com/container-platform/3.11/install_config/aggregate_logging.html +# On EKS, see https://eksworkshop.com/logging/ + +# Replace false with true to deploy EFK. +# Do not remove &deploy_efk; it is a yaml anchor which is referenced by the EFK subcharts. +deploy_efk: &deploy_efk false + +elasticsearch: + enabled: *deploy_efk + # Set any additional elastic search parameters. These values will be used by elasticsearch helm chart. + # See https://github.com/helm/charts/tree/master/stable/elasticsearch/values.yaml + # + # If you need to change this value then you will also need to replace the same + # part of the value within the following properties further below: + # + # kibana.files.kibana.yml.elasticsearch.url + # fluentd-elasticsearch.elasticsearch.host + # + fullnameOverride: "elastic-search" + +kibana: + enabled: *deploy_efk + # Set any additional kibana parameters. These values will be used by Kibana's helm chart. + # See https://github.com/helm/charts/tree/master/stable/kibana/values.yaml + files: + kibana.yml: + elasticsearch.url: http://elastic-search-client:9200 + service: + externalPort: 80 + ingress: + # If enabled is set to "true", an ingress is created to access kibana. + enabled: true + # Enter the domain name to access kibana via a load balancer. + hosts: + - "YOUR_WEB.KIBANA.EXAMPLE.COM" + +fluentd-elasticsearch: + enabled: *deploy_efk + # Set any additional fluentd-elasticsearch parameters. These values will be used by fluentd-elasticsearch's helm chart. + # See https://github.com/helm/charts/tree/master/stable/fluentd-elasticsearch/values.yaml + elasticsearch: + host: elastic-search-client + buffer_chunk_limit: 250M + buffer_queue_limit: 30 + +metrics-server: + # Set this to true to install metrics-server. Follow below guidelines specific to each provider, + # open-source Kubernetes, Openshift & EKS - mandatory to set this to true if web.hpa.enabled or batch.hpa.enabled is true + # GKE or AKS - set this to false since metrics-server is installed in the cluster by default. + enabled: true + # Set any additional metrics-server parameters. These values will be used by metrics-server's helm chart. + # See https://github.com/helm/charts/blob/master/stable/metrics-server/values.yaml + args: + - --logtostderr + # The order in which to consider different Kubelet node address types when connecting to Kubelet. Uncomment below arguemnt if host names are not resolvable from metrics server pod. This setting is not required for public cloud providers & openshift enterprise. It may be required for open-source Kubernetes. + #- --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP + # Uncomment below arguemnt to skip verifying Kubelet CA certificates. Not recommended for production usage, but can be useful in test clusters with self-signed Kubelet serving certificates. This setting is not required for public cloud providers & openshift enterprise. It may be required for open-source Kubernetes. + #- --kubelet-insecure-tls \ No newline at end of file From c23bfd6b344d21655360e6c21512893e16d6a475 Mon Sep 17 00:00:00 2001 From: casad Date: Fri, 26 Apr 2019 13:27:00 -0400 Subject: [PATCH 2/8] fix yaml lint problems --- charts/pega/Chart.yaml | 1 + charts/pega/values.yaml | 44 ++++++++++++++++++++++++++--------------- 2 files changed, 29 insertions(+), 16 deletions(-) diff --git a/charts/pega/Chart.yaml b/charts/pega/Chart.yaml index ac60f88f8..7ffa26ed3 100644 --- a/charts/pega/Chart.yaml +++ b/charts/pega/Chart.yaml @@ -1,3 +1,4 @@ +--- name: pega version: "0.0.1" description: Pega installation on kubernetes diff --git a/charts/pega/values.yaml b/charts/pega/values.yaml index 973f8c18c..4cbeed71a 100644 --- a/charts/pega/values.yaml +++ b/charts/pega/values.yaml @@ -1,3 +1,4 @@ +--- # Enter your Kubernetes provider. Replace "YOUR_KUBERNETES_PROVIDER" with one of the following values: # k8s - for a deployment using open-source Kubernetes # openshift - for a deployment using Red Hat Openshift @@ -106,14 +107,14 @@ web: minReplicas: 1 # Enter the maximum number of replicas that HPA can scale-up maxReplicas: 5 - # Enter the threshold value for average cpu utilization percentage. This value is calculated on resource request. - # Default value is set at 70% of web pod cpu limit. Pega web pod default cpu request is 200m & limit is 2c. 70% of limit or 700% request which is 1.4c. + # Enter the threshold value for average cpu utilization percentage. This value is calculated on resource request. + # Default value is set at 70% of web pod cpu limit. Pega web pod default cpu request is 200m & limit is 2c. 70% of limit or 700% request which is 1.4c. # HPA will scale up if pega web pods average cpu utilization reaches 1.4c targetAverageCPUUtilization: 700 # Enter the threshold value for average memory utilization percentage. This value is calculated on resource request. - # Default value is set at 70% of web pod memory limit. Pega web pod default memory request is 2Gi & limit is 8Gi. 70% of limit or 280% request which is 5.6Gi. + # Default value is set at 70% of web pod memory limit. Pega web pod default memory request is 2Gi & limit is 8Gi. 70% of limit or 280% request which is 5.6Gi. # HPA will scale up if pega web pods average memory utilization reaches 5.6Gi - targetAverageMemoryUtilization: 280 + targetAverageMemoryUtilization: 280 # Pega stream deployment settings. stream: @@ -163,12 +164,12 @@ batch: minReplicas: 1 # Enter the maximum number of replicas that HPA can scale-up maxReplicas: 3 - # Enter the threshold value for average cpu utilization percentage. This value is calculated on resource request. - # Default value is set at 70% of batch pod cpu limit. Pega batch pod default cpu request is 200m & limit is 2c. 70% of limit or 700% request which is 1.4c. + # Enter the threshold value for average cpu utilization percentage. This value is calculated on resource request. + # Default value is set at 70% of batch pod cpu limit. Pega batch pod default cpu request is 200m & limit is 2c. 70% of limit or 700% request which is 1.4c. # HPA will scale up if pega batch pods average cpu utilization reaches 1.4c targetAverageCPUUtilization: 700 # Enter the threshold value for average memory utilization percentage. This value is calculated on resource request. - # Default value is set at 70% of batch pod memory limit. Pega batch pod default memory request is 2Gi & limit is 8Gi. 70% of limit or 280% request which is 5.6Gi. + # Default value is set at 70% of batch pod memory limit. Pega batch pod default memory request is 2Gi & limit is 8Gi. 70% of limit or 280% request which is 5.6Gi. # HPA will scale up if pega batch pods average memory utilization reaches 5.6Gi targetAverageMemoryUtilization: 280 @@ -260,15 +261,26 @@ fluentd-elasticsearch: buffer_queue_limit: 30 metrics-server: - # Set this to true to install metrics-server. Follow below guidelines specific to each provider, - # open-source Kubernetes, Openshift & EKS - mandatory to set this to true if web.hpa.enabled or batch.hpa.enabled is true - # GKE or AKS - set this to false since metrics-server is installed in the cluster by default. + # Set this to true to install metrics-server. Follow below guidelines specific + # to each provider, open-source Kubernetes, Openshift & EKS - mandatory to + # set this to true if web.hpa.enabled or batch.hpa.enabled is true GKE or + # AKS - set this to false since metrics-server is installed in the cluster + # by default. enabled: true - # Set any additional metrics-server parameters. These values will be used by metrics-server's helm chart. + # Set any additional metrics-server parameters. These values will be used by + # metrics-server's helm chart. # See https://github.com/helm/charts/blob/master/stable/metrics-server/values.yaml args: - - --logtostderr - # The order in which to consider different Kubelet node address types when connecting to Kubelet. Uncomment below arguemnt if host names are not resolvable from metrics server pod. This setting is not required for public cloud providers & openshift enterprise. It may be required for open-source Kubernetes. - #- --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP - # Uncomment below arguemnt to skip verifying Kubelet CA certificates. Not recommended for production usage, but can be useful in test clusters with self-signed Kubelet serving certificates. This setting is not required for public cloud providers & openshift enterprise. It may be required for open-source Kubernetes. - #- --kubelet-insecure-tls \ No newline at end of file + - --logtostderr + # The order in which to consider different Kubelet node address types when + # connecting to Kubelet. Uncomment below arguemnt if host names are not + # resolvable from metrics server pod. This setting is not required for + # public cloud providers & openshift enterprise. It may be required for + # open-source Kubernetes. + # - --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP + # Uncomment below arguemnt to skip verifying Kubelet CA certificates. + # Not recommended for production usage, but can be useful in test clusters + # with self-signed Kubelet serving certificates. This setting is not + # required for public cloud providers & openshift enterprise. It may be + # required for open-source Kubernetes. + # - --kubelet-insecure-tls From 42beb463274106a679ff2d0833a3b52803c0c30e Mon Sep 17 00:00:00 2001 From: casad Date: Mon, 29 Apr 2019 14:28:03 +0200 Subject: [PATCH 3/8] add aks/gke/pks to the example generation logic --- .gitignore | 3 ++- .travis.yml | 5 ++++- Makefile | 14 +++++++++++++- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index fa6e50f61..d31c96326 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,8 @@ **/requirements.lock # Generated example yaml -/examples +/build +*.tar.gz # OSX trash .DS_Store diff --git a/.travis.yml b/.travis.yml index 3bca62011..00af88b7f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -43,7 +43,10 @@ deploy: file: - pega-kubernetes-example.tar.gz - pega-openshift-example.tar.gz - - pega-eks-example.tar.gz + - pega-azure-aks-example.tar.gz + - pega-aws-eks-example.tar.gz + - pega-google-gke-example.tar.gz + - pega-pivotal-pks-example.tar.gz skip_cleanup: true on: repo: pegasystems/pega-helm-charts diff --git a/Makefile b/Makefile index 2d04cace9..8ebb04f91 100644 --- a/Makefile +++ b/Makefile @@ -18,7 +18,19 @@ examples: dependencies mkdir -p ./build/aws-eks helm template ./charts/pega/ --output-dir ./build/aws-eks --values ./charts/pega/values.yaml --namespace example --set provider=eks --set actions.execute=deploy - tar -C ./build/aws-eks/pega/templates -cvzf ./pega-eks-example.tar.gz . + tar -C ./build/aws-eks/pega/templates -cvzf ./pega-aws-eks-example.tar.gz . + + mkdir -p ./build/azure-aks + helm template ./charts/pega/ --output-dir ./build/azure-aks --values ./charts/pega/values.yaml --namespace example --set provider=aks --set actions.execute=deploy + tar -C ./build/azure-aks/pega/templates -cvzf ./pega-azure-aks-example.tar.gz . + + mkdir -p ./build/google-gke + helm template ./charts/pega/ --output-dir ./build/google-gke --values ./charts/pega/values.yaml --namespace example --set provider=gke --set actions.execute=deploy + tar -C ./build/google-gke/pega/templates -cvzf ./pega-google-gke-example.tar.gz . + + mkdir -p ./build/pivotal-pks + helm template ./charts/pega/ --output-dir ./build/pivotal-pks --values ./charts/pega/values.yaml --namespace example --set provider=pks --set actions.execute=deploy + tar -C ./build/pivotal-pks/pega/templates -cvzf ./pega-pivotal-pks-example.tar.gz . clean: rm -rf ./build From bbd8c8475a4ac4441f912abfb6e54e5d308486a9 Mon Sep 17 00:00:00 2001 From: casad Date: Mon, 29 Apr 2019 14:45:37 +0200 Subject: [PATCH 4/8] fix code formatting from feedback --- Makefile | 42 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 36 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 8ebb04f91..3fcd2dc23 100644 --- a/Makefile +++ b/Makefile @@ -9,27 +9,57 @@ dependencies: examples: dependencies mkdir -p ./build/kubernetes - helm template ./charts/pega/ --output-dir ./build/kubernetes --values ./charts/pega/values.yaml --namespace example --set provider=k8s --set actions.execute=deploy + helm template ./charts/pega/ \ + --output-dir ./build/kubernetes \ + --values ./charts/pega/values.yaml \ + --namespace example \ + --set provider=k8s \ + --set actions.execute=deploy tar -C ./build/kubernetes/pega/templates -cvzf ./pega-kubernetes-example.tar.gz . mkdir -p ./build/openshift - helm template ./charts/pega/ --output-dir ./build/openshift --values ./charts/pega/values.yaml --namespace example --set provider=openshift --set actions.execute=deploy + helm template ./charts/pega/ \ + --output-dir ./build/openshift \ + --values ./charts/pega/values.yaml \ + --namespace example \ + --set provider=openshift \ + --set actions.execute=deploy tar -C ./build/openshift/pega/templates -cvzf ./pega-openshift-example.tar.gz . mkdir -p ./build/aws-eks - helm template ./charts/pega/ --output-dir ./build/aws-eks --values ./charts/pega/values.yaml --namespace example --set provider=eks --set actions.execute=deploy + helm template ./charts/pega/ \ + --output-dir ./build/aws-eks \ + --values ./charts/pega/values.yaml \ + --namespace example \ + --set provider=eks \ + --set actions.execute=deploy tar -C ./build/aws-eks/pega/templates -cvzf ./pega-aws-eks-example.tar.gz . mkdir -p ./build/azure-aks - helm template ./charts/pega/ --output-dir ./build/azure-aks --values ./charts/pega/values.yaml --namespace example --set provider=aks --set actions.execute=deploy + helm template ./charts/pega/ \ + --output-dir ./build/azure-aks \ + --values ./charts/pega/values.yaml \ + --namespace example \ + --set provider=aks \ + --set actions.execute=deploy tar -C ./build/azure-aks/pega/templates -cvzf ./pega-azure-aks-example.tar.gz . mkdir -p ./build/google-gke - helm template ./charts/pega/ --output-dir ./build/google-gke --values ./charts/pega/values.yaml --namespace example --set provider=gke --set actions.execute=deploy + helm template ./charts/pega/ \ + --output-dir ./build/google-gke \ + --values ./charts/pega/values.yaml \ + --namespace example \ + --set provider=gke \ + --set actions.execute=deploy tar -C ./build/google-gke/pega/templates -cvzf ./pega-google-gke-example.tar.gz . mkdir -p ./build/pivotal-pks - helm template ./charts/pega/ --output-dir ./build/pivotal-pks --values ./charts/pega/values.yaml --namespace example --set provider=pks --set actions.execute=deploy + helm template ./charts/pega/ \ + --output-dir ./build/pivotal-pks \ + --values ./charts/pega/values.yaml \ + --namespace example \ + --set provider=pks \ + --set actions.execute=deploy tar -C ./build/pivotal-pks/pega/templates -cvzf ./pega-pivotal-pks-example.tar.gz . clean: From 97ff76d606d2c1c86967814361e5b29dd80775f2 Mon Sep 17 00:00:00 2001 From: casad Date: Mon, 29 Apr 2019 14:51:06 +0200 Subject: [PATCH 5/8] Fix releases link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4a68523e0..77c21b304 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ This project provides Helm charts and basic examples for deploying Pega on Kubernetes. This project **does not include** the required database installation image which you [may obtain from the Pega Community](https://community.pega.com/knowledgebase/products/platform/deploy). [![Build Status](https://travis-ci.org/pegasystems/pega-helm-charts.svg?branch=master)](https://travis-ci.org/pegasystems/pega-helm-charts) -![GitHub release](https://img.shields.io/github/release/pegasystems/pega-helm-charts.svg) +[![GitHub release](https://img.shields.io/github/release/pegasystems/pega-helm-charts.svg)](https://github.com/pegasystems/pega-helm-charts/releases) ## Getting Started From 66f56c21019b26e3020f8ade9be73c38ef987556 Mon Sep 17 00:00:00 2001 From: casad Date: Mon, 29 Apr 2019 14:56:41 +0200 Subject: [PATCH 6/8] Add dependency information --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 77c21b304..8e1b4bd00 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Pega Deployment on Kubernetes -This project provides Helm charts and basic examples for deploying Pega on Kubernetes. This project **does not include** the required database installation image which you [may obtain from the Pega Community](https://community.pega.com/knowledgebase/products/platform/deploy). +This project provides Helm charts and basic examples for deploying Pega on Kubernetes. This project **does not include** the required database installation image which you [may obtain from the Pega Community](https://community.pega.com/knowledgebase/products/platform/deploy). Deploying Pega on Kubernetes requires Pega Infinity 8.2 or newer. [![Build Status](https://travis-ci.org/pegasystems/pega-helm-charts.svg?branch=master)](https://travis-ci.org/pegasystems/pega-helm-charts) [![GitHub release](https://img.shields.io/github/release/pegasystems/pega-helm-charts.svg)](https://github.com/pegasystems/pega-helm-charts/releases) From c1bbaf6e7a53299d06ab93b42dc7a5348dbb3bf1 Mon Sep 17 00:00:00 2001 From: casad Date: Mon, 29 Apr 2019 15:44:33 +0200 Subject: [PATCH 7/8] Fix indentation --- Makefile | 60 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/Makefile b/Makefile index 3fcd2dc23..17ae715d7 100644 --- a/Makefile +++ b/Makefile @@ -10,56 +10,56 @@ dependencies: examples: dependencies mkdir -p ./build/kubernetes helm template ./charts/pega/ \ - --output-dir ./build/kubernetes \ - --values ./charts/pega/values.yaml \ - --namespace example \ - --set provider=k8s \ - --set actions.execute=deploy + --output-dir ./build/kubernetes \ + --values ./charts/pega/values.yaml \ + --namespace example \ + --set provider=k8s \ + --set actions.execute=deploy tar -C ./build/kubernetes/pega/templates -cvzf ./pega-kubernetes-example.tar.gz . mkdir -p ./build/openshift helm template ./charts/pega/ \ - --output-dir ./build/openshift \ - --values ./charts/pega/values.yaml \ - --namespace example \ - --set provider=openshift \ - --set actions.execute=deploy + --output-dir ./build/openshift \ + --values ./charts/pega/values.yaml \ + --namespace example \ + --set provider=openshift \ + --set actions.execute=deploy tar -C ./build/openshift/pega/templates -cvzf ./pega-openshift-example.tar.gz . mkdir -p ./build/aws-eks helm template ./charts/pega/ \ - --output-dir ./build/aws-eks \ - --values ./charts/pega/values.yaml \ - --namespace example \ - --set provider=eks \ - --set actions.execute=deploy + --output-dir ./build/aws-eks \ + --values ./charts/pega/values.yaml \ + --namespace example \ + --set provider=eks \ + --set actions.execute=deploy tar -C ./build/aws-eks/pega/templates -cvzf ./pega-aws-eks-example.tar.gz . mkdir -p ./build/azure-aks helm template ./charts/pega/ \ - --output-dir ./build/azure-aks \ - --values ./charts/pega/values.yaml \ - --namespace example \ - --set provider=aks \ - --set actions.execute=deploy + --output-dir ./build/azure-aks \ + --values ./charts/pega/values.yaml \ + --namespace example \ + --set provider=aks \ + --set actions.execute=deploy tar -C ./build/azure-aks/pega/templates -cvzf ./pega-azure-aks-example.tar.gz . mkdir -p ./build/google-gke helm template ./charts/pega/ \ - --output-dir ./build/google-gke \ - --values ./charts/pega/values.yaml \ - --namespace example \ - --set provider=gke \ - --set actions.execute=deploy + --output-dir ./build/google-gke \ + --values ./charts/pega/values.yaml \ + --namespace example \ + --set provider=gke \ + --set actions.execute=deploy tar -C ./build/google-gke/pega/templates -cvzf ./pega-google-gke-example.tar.gz . mkdir -p ./build/pivotal-pks helm template ./charts/pega/ \ - --output-dir ./build/pivotal-pks \ - --values ./charts/pega/values.yaml \ - --namespace example \ - --set provider=pks \ - --set actions.execute=deploy + --output-dir ./build/pivotal-pks \ + --values ./charts/pega/values.yaml \ + --namespace example \ + --set provider=pks \ + --set actions.execute=deploy tar -C ./build/pivotal-pks/pega/templates -cvzf ./pega-pivotal-pks-example.tar.gz . clean: From 2ce470ad799ddddae88497e432ef0acf294872f5 Mon Sep 17 00:00:00 2001 From: Dave Casavant Date: Tue, 30 Apr 2019 10:06:27 +0200 Subject: [PATCH 8/8] Improve list of included repos --- Makefile | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 17ae715d7..315b3bd81 100644 --- a/Makefile +++ b/Makefile @@ -1,9 +1,5 @@ dependencies: - helm repo add traefik https://kubernetes-charts.storage.googleapis.com - helm repo add cassandra https://kubernetes-charts-incubator.storage.googleapis.com/ - helm repo add elasticsearch https://kubernetes-charts.storage.googleapis.com/ - helm repo add fluentd-elasticsearch https://kubernetes-charts.storage.googleapis.com/ - helm repo add kibana https://kubernetes-charts.storage.googleapis.com/ + helm repo add incubator https://kubernetes-charts-incubator.storage.googleapis.com/ helm repo list helm dependency update ./charts/pega/