diff --git a/px-central/Chart.yaml b/px-central/Chart.yaml index fba687e..3349c38 100644 --- a/px-central/Chart.yaml +++ b/px-central/Chart.yaml @@ -13,6 +13,5 @@ keywords: name: px-central sources: - https://github.com/portworx/aws-helm/tree/master/charts/px-central -version: 2.6.0 -appVersion: 2.6.0 -name: px-central +version: 2.7.0 +appVersion: 2.7.0 diff --git a/px-central/templates/px-backup/pxcentral-alertmanager.yaml b/px-central/templates/px-backup/pxcentral-alertmanager.yaml new file mode 100644 index 0000000..44e615d --- /dev/null +++ b/px-central/templates/px-backup/pxcentral-alertmanager.yaml @@ -0,0 +1,327 @@ +{{- $isOpenshiftCluster := .Capabilities.APIVersions.Has "apps.openshift.io/v1" -}} +{{- $deployDedicatedMonitoringSystem := .Values.pxbackup.deployDedicatedMonitoringSystem }} +{{- if eq $deployDedicatedMonitoringSystem true }} +apiVersion: monitoring.coreos.com/v1 +kind: Alertmanager +metadata: + name: px-backup-alertmanager + namespace: {{ .Release.Namespace }} +spec: + configSecret: px-backup-alertmanager-custom-config + alertmanagerConfigSelector: + matchLabels: + app: px-backup-alert-configs + replicas: {{ .Values.pxbackup.alertmanager.replicas }} + {{- if .Values.images.pullSecrets }} + imagePullSecrets: + {{- range $sec := .Values.images.pullSecrets }} + - name: {{ $sec | quote }} + {{- end }} + {{- end }} + retention: {{ .Values.pxbackup.alertmanager.retention}} + containers: + - args: + - '--config.file=/etc/alertmanager/config_out/alertmanager.env.yaml' + - '--storage.path=/alertmanager' + - '--data.retention={{ .Values.pxbackup.alertmanager.retention }}' + - '--cluster.listen-address=[$(POD_IP)]:9094' + - '--web.listen-address=:9093' + - '--web.route-prefix=/' + - '--cluster.label={{ .Release.Namespace }}/px-backup-alertmanager' + - '--cluster.peer=alertmanager-px-backup-alertmanager-0.alertmanager-operated:9094' + - '--cluster.peer=alertmanager-px-backup-alertmanager-1.alertmanager-operated:9094' + - '--cluster.reconnect-timeout=5m' + - '--web.config.file=/etc/alertmanager/web_config/web-config-custom.yaml' + env: + - name: AUTH_SECRET + valueFrom: + secretKeyRef: + name: pxc-backup-metrics + key: metrics-token + - name: POD_IP + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: status.podIP + image: {{ printf "%s/%s/%s:%s" .Values.images.pxBackupAlertmanagerImage.registry .Values.images.pxBackupAlertmanagerImage.repo .Values.images.pxBackupAlertmanagerImage.imageName .Values.images.pxBackupAlertmanagerImage.tag }} + name: alertmanager + ports: + - containerPort: 9093 + name: web + protocol: TCP + - args: + - --listen-address=:8080 + - --reload-url=http://$(USERNAME):$(PASSWORD)@localhost:9093/-/reload + - --config-file=/etc/alertmanager/config/alertmanager.yaml.gz + - --config-envsubst-file=/etc/alertmanager/config_out/alertmanager.env.yaml + - --watched-dir=/etc/alertmanager/config + env: + - name: USERNAME + valueFrom: + secretKeyRef: + key: username + name: pxc-backup-metrics + - name: PASSWORD + valueFrom: + secretKeyRef: + key: password + name: pxc-backup-metrics + name: config-reloader + ports: + - containerPort: 8080 + name: reloader-web + protocol: TCP + {{- if $isOpenshiftCluster }} + {{- else }} + securityContext: + fsGroup: 2000 + runAsNonRoot: true + runAsUser: 1000 + {{- end }} + listenLocal: true + volumeMounts: + - mountPath: /etc/alertmanager/web_config/web-config-custom.yaml + name: web-config-custom + readOnly: true + subPath: web-config-custom.yaml + volumes: + - name: web-config-custom + secret: + defaultMode: 420 + secretName: pxc-backup-metrics + {{- if .Values.persistentStorage.storageClassName }} + storage: + volumeClaimTemplate: + spec: + storageClassName: {{ .Values.persistentStorage.storageClassName }} + resources: + requests: + storage: {{ .Values.persistentStorage.alertManager.storage }} + {{- end }} +{{- end }} +--- +apiVersion: v1 +kind: Secret +metadata: + name: px-backup-alertmanager-custom-config +type: Opaque +stringData: + alertmanager.yaml: | + route: + receiver: "null" + receivers: + - name: "null" + templates: [ "/etc/alertmanager/config/*.tmpl" ] + pxc_template.tmpl: | + {{` + + + Portworx-Backup Email + + + +
+ + {{ range .Alerts }} + {{- if eq .Labels.alertname "ClusterAlert"}} +
+ Critical Alert: Cluster Disconnected +
+
+ Alert details: +
+ + {{- else if eq .Labels.alertname "BackupAlert" }} +
+ Critical Alert: Backup Failed +
+
+ Alert details: +
+ + {{- else if eq .Labels.alertname "RestoreAlert" }} +
+ Critical Alert: Restore Failed +
+
+ Alert details: +
+ + {{- else if eq .Labels.alertname "BackupLocationAlert" }} +
+ Critical Alert: Backup Location Disconnected +
+
+ Alert details: +
+ + {{- end }} + {{ end }} +
+ Please login to your Portworx Backup deployment to view more details and + take corrective actions. +
+
+ + `}} \ No newline at end of file diff --git a/px-central/templates/px-backup/pxcentral-backup.yaml b/px-central/templates/px-backup/pxcentral-backup.yaml index 5f0a503..ccfc834 100644 --- a/px-central/templates/px-backup/pxcentral-backup.yaml +++ b/px-central/templates/px-backup/pxcentral-backup.yaml @@ -30,6 +30,9 @@ rules: - apiGroups: [""] resources: ["namespaces"] verbs: ["get", "list"] + - apiGroups: ["snapshot.storage.k8s.io"] + resources: ["volumesnapshotclasses"] + verbs: ["get"] {{- if eq $nfsEnabled true }} - apiGroups: [""] resources: ["persistentvolumes"] @@ -86,6 +89,9 @@ rules: - apiGroups: ["apps"] resources: ["deployments"] verbs: ["get", "list"] + - apiGroups: ["monitoring.coreos.com"] + resources: ["alertmanagerconfigs"] + verbs: ["get","create","delete","update","list","deletecollection"] {{- if eq $nfsEnabled true }} - apiGroups: [""] resources: ["persistentvolumeclaims"] @@ -201,6 +207,8 @@ spec: value: {{ .Values.pxbackup.orgName }} - name: PX_BACKUP_DEFAULT_DATASTORE value: mongodb + - name: USE_PX_BACKUP_EMAIL_ALERT_TEMPLATE + value: "{{ .Values.pxbackup.usePxBackupEmailAlertTemplate }}" - name: SOFT_LICENSING_PERIOD value: "30" - name: AIRGAP_REPORTING_PERIOD diff --git a/px-central/templates/px-backup/pxcentral-prometheus.yaml b/px-central/templates/px-backup/pxcentral-prometheus.yaml new file mode 100644 index 0000000..b592977 --- /dev/null +++ b/px-central/templates/px-backup/pxcentral-prometheus.yaml @@ -0,0 +1,482 @@ +{{- $isOpenshiftCluster := .Capabilities.APIVersions.Has "apps.openshift.io/v1" -}} +{{- $deployDedicatedMonitoringSystem := .Values.pxbackup.deployDedicatedMonitoringSystem }} +{{- $pxMonitorEnabled := .Values.pxmonitor.enabled | default false }} +{{- $metricsSecret := (lookup "v1" "Secret" .Release.Namespace "pxc-backup-metrics") | default dict }} +{{- $metricsSecretData := (get $metricsSecret "data") | default dict }} +{{- $metricsPass := (get $metricsSecretData "password" | b64dec) | default (randAlphaNum 12 ) }} +{{- $metricsToken := (get $metricsSecretData "metrics-token" | b64dec) | default ( printf "admin:%s" $metricsPass | b64enc | quote ) }} +{{- $metricsBasicAuth := htpasswd "admin" $metricsPass }} +{{- if eq $deployDedicatedMonitoringSystem true }} +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: pxc-prometheus-operator + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/component: px-backup +{{- include "px-central.labels" . | nindent 4 }} +subjects: + - kind: ServiceAccount + name: pxc-prometheus-operator + namespace: {{ .Release.Namespace }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: pxc-prometheus-operator +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: pxc-prometheus-operator + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/component: px-backup +{{- include "px-central.labels" . | nindent 4 }} +rules: + - apiGroups: + - extensions + resources: + - thirdpartyresources + verbs: ["*"] + - apiGroups: + - apiextensions.k8s.io + resources: + - customresourcedefinitions + verbs: ["*"] + - apiGroups: + - monitoring.coreos.com + resources: + - alertmanagers + - alertmanagers/status + - alertmanagers/finalizers + - prometheuses + - prometheuses/finalizers + - prometheuses/status + - servicemonitors + - prometheusrules + - podmonitors + - thanosrulers + - alertmanagerconfigs + - probes + verbs: ["*"] + - apiGroups: + - apps + resources: + - statefulsets + verbs: ["*"] + - apiGroups: [""] + resources: + - configmaps + - secrets + verbs: ["*"] + - apiGroups: [""] + resources: + - pods + verbs: ["list", "delete"] + - apiGroups: [""] + resources: + - services + - endpoints + verbs: ["get", "create", "update"] + - apiGroups: [""] + resources: + - nodes + verbs: ["list", "watch"] + - apiGroups: [""] + resources: + - namespaces + verbs: ["list", "watch", "get"] + +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pxc-prometheus-operator + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/component: px-backup +{{- include "px-central.labels" . | nindent 4 }} +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + k8s-app: prometheus-operator + app.kubernetes.io/component: px-backup +{{- include "px-central.labels" . | nindent 4 }} + name: prometheus-operator + namespace: {{ .Release.Namespace }} +spec: + selector: + matchLabels: + k8s-app: prometheus-operator + replicas: 1 + template: + metadata: + labels: + k8s-app: prometheus-operator + spec: + containers: + - args: + - -namespaces={{ .Release.Namespace }} + - --kubelet-service={{ .Release.Namespace }}/kubelet + - --prometheus-config-reloader={{ printf "%s/%s/%s:%s" .Values.images.pxBackupPrometheusConfigReloaderImage.registry .Values.images.pxBackupPrometheusConfigReloaderImage.repo .Values.images.pxBackupPrometheusConfigReloaderImage.imageName .Values.images.pxBackupPrometheusConfigReloaderImage.tag }} + image: {{ printf "%s/%s/%s:%s" .Values.images.pxBackupPrometheusOperatorImage.registry .Values.images.pxBackupPrometheusOperatorImage.repo .Values.images.pxBackupPrometheusOperatorImage.imageName .Values.images.pxBackupPrometheusOperatorImage.tag }} + name: prometheus-operator + ports: + - containerPort: 8080 + name: http + {{- if $isOpenshiftCluster }} + {{- else }} + securityContext: +{{ toYaml .Values.securityContext | indent 8 }} + {{- end }} + serviceAccountName: pxc-prometheus-operator + {{- if .Values.images.pullSecrets }} + imagePullSecrets: + {{- range $sec := .Values.images.pullSecrets }} + - name: {{ $sec | quote }} + {{- end }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} + +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: px-backup-dashboard-prometheus + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/component: px-backup +{{- include "px-central.labels" . | nindent 4 }} +rules: +- apiGroups: + - "" + resources: + - nodes + - services + - endpoints + - pods + verbs: + - get + - list + - watch +- apiGroups: + - "" + resources: + - configmaps + verbs: + - get +- nonResourceURLs: + - /metrics + - /federate + verbs: + - get +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: px-backup-dashboard-prometheus + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/component: px-backup +{{- include "px-central.labels" . | nindent 4 }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: px-backup-dashboard-prometheus +subjects: +- kind: ServiceAccount + name: px-backup-dashboard-prometheus + namespace: {{ .Release.Namespace }} +--- +apiVersion: v1 +kind: Service +metadata: + name: px-backup-dashboard-prometheus + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/component: px-backup +{{- include "px-central.labels" . | nindent 4 }} +spec: + type: ClusterIP + ports: + - name: web + port: 9090 + protocol: TCP + targetPort: 9090 + selector: + prometheus: px-backup-dashboard-prometheus +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: px-backup-dashboard-prometheus + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/component: px-backup +{{- include "px-central.labels" . | nindent 4 }} + + +--- +apiVersion: monitoring.coreos.com/v1 +kind: Prometheus +metadata: + name: px-backup-dashboard-prometheus + namespace: {{ .Release.Namespace }} +spec: + additionalAlertManagerConfigs: + key: am-configs.yaml + name: pxc-backup-metrics + {{- if .Values.persistentStorage.storageClassName }} + storage: + volumeClaimTemplate: + spec: + storageClassName: {{ .Values.persistentStorage.storageClassName }} + resources: + requests: + storage: {{ .Values.persistentStorage.prometheus.storage }} + {{- end }} + containers: + - args: + - --web.console.templates=/etc/prometheus/consoles + - --web.console.libraries=/etc/prometheus/console_libraries + - --storage.tsdb.retention.time={{ .Values.pxbackup.prometheus.retention }} + - --storage.tsdb.retention.size={{ .Values.persistentStorage.prometheus.retentionSize }} + - --config.file=/etc/prometheus/config_out/prometheus.env.yaml + - --storage.tsdb.path=/prometheus + - --web.enable-lifecycle + - --web.route-prefix=/ + - --log.level=debug + - --web.config.file=/etc/prometheus/web_config/web-config-custom.yaml + env: + - name: AUTH_SECRET + valueFrom: + secretKeyRef: + name: pxc-backup-metrics + key: metrics-token + image: {{ printf "%s/%s/%s:%s" .Values.images.pxBackupPrometheusImage.registry .Values.images.pxBackupPrometheusImage.repo .Values.images.pxBackupPrometheusImage.imageName .Values.images.pxBackupPrometheusImage.tag }} + livenessProbe: + exec: + command: + - sh + - -c + - wget http://localhost:9090/-/healthy --header="Authorization:Basic $AUTH_SECRET" + -qO- + name: prometheus + readinessProbe: + exec: + command: + - sh + - -c + - wget http://localhost:9090/-/ready --header="Authorization:Basic $AUTH_SECRET" + -qO- + startupProbe: + exec: + command: + - sh + - -c + - wget http://localhost:9090/-/ready --header="Authorization:Basic $AUTH_SECRET" + -qO- + ports: + - containerPort: 9090 + name: web + protocol: TCP + - args: + - --listen-address=:8080 + - --reload-url=http://$(USERNAME):$(PASSWORD)@localhost:9090/-/reload + - --config-file=/etc/prometheus/config/prometheus.yaml.gz + - --config-envsubst-file=/etc/prometheus/config_out/prometheus.env.yaml + - --watched-dir=/etc/prometheus/rules/prometheus-px-backup-dashboard-prometheus-rulefiles-0 + - --log-level=debug + name: config-reloader + env: + - name: USERNAME + valueFrom: + secretKeyRef: + key: username + name: pxc-backup-metrics + - name: PASSWORD + valueFrom: + secretKeyRef: + key: password + name: pxc-backup-metrics + ports: + - containerPort: 8080 + name: reloader-web + protocol: TCP + {{- if $isOpenshiftCluster }} + {{- else }} + securityContext: + fsGroup: 2000 + runAsNonRoot: true + runAsUser: 1000 + {{- end }} + logLevel: debug + listenLocal: true + volumeMounts: + - mountPath: /etc/prometheus/web_config/web-config-custom.yaml + name: web-config-custom + readOnly: true + subPath: web-config-custom.yaml + volumes: + - name: web-config-custom + secret: + defaultMode: 420 + secretName: pxc-backup-metrics + replicas: {{ .Values.pxbackup.prometheus.replicas }} + evaluationInterval: 30s + scrapeInterval: 30s + ruleSelector: + matchLabels: + app: px-backup-alerts + serviceAccountName: px-backup-dashboard-prometheus + {{- if .Values.images.pullSecrets }} + imagePullSecrets: + {{- range $sec := .Values.images.pullSecrets }} + - name: {{ $sec | quote }} + {{- end }} + {{- end }} + serviceMonitorSelector: + matchLabels: + name: px-backup-dashboard-prometheus-sm + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end}} + +{{- if (or (eq $deployDedicatedMonitoringSystem true) (eq $pxMonitorEnabled true))}} +--- +apiVersion: v1 +kind: Secret +metadata: + labels: + app.kubernetes.io/component: pxc-backup-metrics +{{- include "px-central.labels" . | nindent 4 }} + name: pxc-backup-metrics + namespace: {{ .Release.Namespace }} +type: Opaque +stringData: + metrics-token: {{ $metricsToken }} + username: admin + password: {{ $metricsPass }} + web-config-custom.yaml: | + basic_auth_users: + admin: {{ (split ":" $metricsBasicAuth)._1 }} + {{- if eq $deployDedicatedMonitoringSystem true }} + am-configs.yaml: | + - path_prefix: / + scheme: http + kubernetes_sd_configs: + - role: endpoints + namespaces: + names: + - {{ .Release.Namespace }} + basic_auth: + username: admin + password: {{ $metricsPass }} + relabel_configs: + - action: keep + source_labels: + - __meta_kubernetes_service_name + regex: alertmanager-operated + - action: keep + source_labels: + - __meta_kubernetes_endpoint_port_name + regex: web + {{- end }} +{{- end}} + +--- +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + namespace: {{ .Release.Namespace }} + name: px-backup-dashboard-prometheus-sm + labels: + name: px-backup-dashboard-prometheus-sm + app.kubernetes.io/component: px-backup +{{- include "px-central.labels" . | nindent 4 }} +spec: + endpoints: + - metricRelabelings: + - action: labeldrop + regex: (instance|pod) + - action: drop + regex: process_.* + sourceLabels: + - __name__ + - action: drop + regex: go_.* + sourceLabels: + - __name__ + - action: drop + regex: grpc_.* + sourceLabels: + - __name__ + - action: drop + regex: (pxbackup_backup_duration_seconds|pxbackup_backup_resource_count|pxbackup_backup_schedule_status|pxbackup_backup_size_bytes|pxbackup_backup_volume_count|pxbackup_backuplocation_metrics|pxbackup_cloudcred_metrics|pxbackup_schedpolicy_metrics|pxbackup_restore_duration_seconds|pxbackup_restore_resource_count|pxbackup_restore_size_bytes|pxbackup_restore_volume_count) + sourceLabels: + - __name__ + port: rest-api + targetPort: 10001 + namespaceSelector: + any: true + selector: + matchLabels: + app: px-backup + +--- +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + labels: + app: px-backup-alerts + name: px-backup-dashboard-prometheus-rules +spec: + groups: + - name: gauge_rules + rules: + - alert: ClusterAlert + annotations: + description: {{`The Cluster "{{ $labels.name + }}" has failed.`}} + summary: Cluster addition failed + expr: pxbackup_cluster_status == 5 + for: 1m + labels: + severity: critical + + - alert: BackupAlert + annotations: + description: {{`The Backup "{{ $labels.name + }}" {{- if eq .Labels.schedule_name "" }} {{ else }} part of backup schedule "{{ $labels.schedule_name}}" {{ end }} taken for cluster "{{ $labels.cluster}}" on namespace "{{ $labels.backup_namespace}}" has failed.`}} + summary: Backup failed + expr: pxbackup_backup_status == 4 + for: 1m + labels: + severity: critical + + - alert: RestoreAlert + annotations: + description: {{`The Restore "{{ $labels.name + }}" made from backup "{{ $labels.backup}}" has failed.`}} + summary: Restoring backup failed + expr: pxbackup_restore_status == 4 + for: 1m + labels: + severity: critical + + - alert: BackupLocationAlert + annotations: + description: {{`The Backup Location "{{ $labels.name + }}" has failed.`}} + summary: BackupLocation addition failed + expr: pxbackup_backup_location_status == 4 + for: 1m + labels: + severity: critical \ No newline at end of file diff --git a/px-central/templates/px-lighthouse/px-central-ui/pxcentral-lighthouse.yaml b/px-central/templates/px-lighthouse/px-central-ui/pxcentral-lighthouse.yaml index 3c4ff71..23d7ae3 100644 --- a/px-central/templates/px-lighthouse/px-central-ui/pxcentral-lighthouse.yaml +++ b/px-central/templates/px-lighthouse/px-central-ui/pxcentral-lighthouse.yaml @@ -1,5 +1,30 @@ {{/* Setting defaults if they are omitted. */}} {{- $isOpenshiftCluster := .Capabilities.APIVersions.Has "apps.openshift.io/v1" -}} +{{- $deployDedicatedMonitoringSystem := .Values.pxbackup.deployDedicatedMonitoringSystem }} +{{- $prometheusEndpoint := "http://px-backup-dashboard-prometheus:9090" }} +{{- $alertmanagerEndpoint := "http://alertmanager-operated:9093" }} +{{- $prometheusSecretName := "pxc-backup-metrics" }} +{{- $alertmanagerSecretName := "pxc-backup-metrics" }} + +{{- if not (eq $deployDedicatedMonitoringSystem true) }} + +{{- $prometheusEndpoint = .Values.pxbackup.prometheusEndpoint | required ".Values.pxbackup.prometheusEndpoint is required ." }} +{{- $alertmanagerEndpoint = .Values.pxbackup.alertmanagerEndpoint | required ".Values.pxbackup.alertmanagerEndpoint is required." }} + +{{- $prometheusSecretName = .Values.pxbackup.prometheusSecretName }} +{{- $alertmanagerSecretName = .Values.pxbackup.alertmanagerSecretName }} + +{{- $requiredPrometheusSecret := hasPrefix "https" .Values.pxbackup.prometheusEndpoint }} +{{- if eq $requiredPrometheusSecret true }} +{{- $prometheusSecretName = .Values.pxbackup.prometheusSecretName | required ".Values.pxbackup.prometheusSecretName is required for fetching the tls certificate."}} +{{- end }} + +{{- $requiredAlertmanagerSecret := hasPrefix "https" .Values.pxbackup.alertmanagerEndpoint }} +{{- if eq $requiredAlertmanagerSecret true }} +{{- $alertmanagerSecretName = .Values.pxbackup.alertmanagerSecretName | required ".Values.pxbackup.alertmanagerSecretName is required for fetching the tls certificate."}} +{{- end }} + +{{- end }} apiVersion: v1 kind: ServiceAccount metadata: @@ -21,6 +46,9 @@ rules: - apiGroups: [""] resources: ["configmaps"] verbs: ["get"] +- apiGroups: [""] + resources: ["secrets"] + verbs: ["get"] --- kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 @@ -120,17 +148,37 @@ spec: - name: SSL_CERT_DIR value: /tmp/certs {{- end }} + {{- if eq .Release.IsInstall true }} + - name: QUERY_ACTIVITY_TIMELINE_FROM_MONGO_DB + value: "false" + {{- end }} + - name: PROMETHEUS_ENDPOINT + value: {{ $prometheusEndpoint }} + - name: ALERTMANAGER_ENDPOINT + value: {{ $alertmanagerEndpoint }} ports: - name: http containerPort: 8091 - name: https containerPort: 8092 - {{- if .Values.caCertsSecretName }} + {{- if or .Values.caCertsSecretName $prometheusSecretName $alertmanagerSecretName }} volumeMounts: + {{- if .Values.caCertsSecretName }} - mountPath: /tmp/certs readOnly: true name: ssl-cert-dir {{- end }} + {{- if $prometheusSecretName }} + - mountPath: /tmp/prometheus/cred + readOnly: true + name: prometheus-cred-dir + {{- end }} + {{- if $alertmanagerSecretName }} + - mountPath: /tmp/alertmanager/cred + readOnly: true + name: alertmanager-cred-dir + {{- end }} + {{- end }} readinessProbe: httpGet: path: /ping @@ -148,14 +196,28 @@ spec: {{- with .Values.tolerations }} tolerations: {{- toYaml . | nindent 8 }} - {{- end }} - {{- if .Values.caCertsSecretName }} + {{- end }} + {{- if or .Values.caCertsSecretName $prometheusSecretName $alertmanagerSecretName }} volumes: + {{- if .Values.caCertsSecretName }} - name: ssl-cert-dir secret: defaultMode: 420 secretName: "{{ .Values.caCertsSecretName }}" {{- end }} + {{- if $prometheusSecretName }} + - name: prometheus-cred-dir + secret: + defaultMode: 420 + secretName: {{ $prometheusSecretName }} + {{- end }} + {{- if $alertmanagerSecretName }} + - name: alertmanager-cred-dir + secret: + defaultMode: 420 + secretName: {{ $alertmanagerSecretName }} + {{- end }} + {{- end }} {{- if .Values.images.pullSecrets }} imagePullSecrets: {{- range $sec := .Values.images.pullSecrets }} diff --git a/px-central/templates/px-lighthouse/px-central-ui/pxcentral-ui.yaml b/px-central/templates/px-lighthouse/px-central-ui/pxcentral-ui.yaml index eb7a172..3d53540 100644 --- a/px-central/templates/px-lighthouse/px-central-ui/pxcentral-ui.yaml +++ b/px-central/templates/px-lighthouse/px-central-ui/pxcentral-ui.yaml @@ -53,6 +53,7 @@ data: location / { root /usr/share/nginx/html; add_header Cache-Control "no-cache"; + add_header Referrer-Policy 'no-referrer'; index index.html index.htm; } @@ -72,7 +73,7 @@ data: location /lhBackend/ { proxy_pass http://lhBackend/; } - location /auth/ { + location /auth { proxy_pass http://keycloak; proxy_cache_bypass $http_upgrade; proxy_set_header Upgrade $http_upgrade; diff --git a/px-central/templates/px-lighthouse/pxcentral-post-install-hook.yaml b/px-central/templates/px-lighthouse/pxcentral-post-install-hook.yaml index 686afa3..ef8686f 100644 --- a/px-central/templates/px-lighthouse/pxcentral-post-install-hook.yaml +++ b/px-central/templates/px-lighthouse/pxcentral-post-install-hook.yaml @@ -1,5 +1,6 @@ {{/* Setting defaults if they are omitted. */}} {{- $isOpenshiftCluster := .Capabilities.APIVersions.Has "apps.openshift.io/v1" -}} +{{- $deployDedicatedMonitoringSystem := .Values.pxbackup.deployDedicatedMonitoringSystem }} apiVersion: batch/v1 kind: Job metadata: @@ -50,6 +51,13 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace + {{- if eq $deployDedicatedMonitoringSystem true }} + - name: DEDICATED_PROMETHEUS + value: "true" + {{- else }} + - name: DEDICATED_PROMETHEUS + value: "false" + {{- end }} - name: DEPLOYMENT_TYPE {{- if eq .Release.IsInstall true }} value: "install" diff --git a/px-central/values.yaml b/px-central/values.yaml index c6f9b4b..4bceff7 100644 --- a/px-central/values.yaml +++ b/px-central/values.yaml @@ -11,6 +11,9 @@ persistentStorage: storage: 2Gi ingester: storage: 2Gi + prometheus: + storage: 5Gi + retentionSize: 4600MB mysqlVolumeSize: "100Gi" mongodbVolumeSize: "64Gi" mongoCacheSize: 4 @@ -50,8 +53,20 @@ pxbackup: callHome: true mongoMigration: complete livenessProbeInitialDelay: 1800 + prometheus: + replicas: 2 + retention: 90d + alertmanager: + replicas: 2 + retention: 2208h nfs: enabled: true + deployDedicatedMonitoringSystem: true + prometheusEndpoint: "" + alertmanagerEndpoint: "" + prometheusSecretName: "" + alertmanagerSecretName: "" + usePxBackupEmailAlertTemplate: true pxlicenseserver: enabled: false @@ -136,27 +151,27 @@ images: registry: 709825985650.dkr.ecr.us-east-1.amazonaws.com repo: portworx imageName: pxcentral-onprem-api - tag: 2.6.0 + tag: 2.7.0 pxcentralFrontendImage: registry: 709825985650.dkr.ecr.us-east-1.amazonaws.com repo: portworx imageName: pxcentral-onprem-ui-frontend - tag: 2.6.0 + tag: 2.7.0 pxcentralBackendImage: registry: 709825985650.dkr.ecr.us-east-1.amazonaws.com repo: portworx imageName: pxcentral-onprem-ui-backend - tag: 2.6.0 + tag: 2.7.0 pxcentralMiddlewareImage: registry: 709825985650.dkr.ecr.us-east-1.amazonaws.com repo: portworx imageName: pxcentral-onprem-ui-lhbackend - tag: 2.6.0 + tag: 2.7.0 postInstallSetupImage: registry: 709825985650.dkr.ecr.us-east-1.amazonaws.com repo: portworx imageName: pxcentral-onprem-post-setup - tag: 2.6.0 + tag: 2.7.0 keycloakBackendImage: registry: 709825985650.dkr.ecr.us-east-1.amazonaws.com repo: portworx/bitnami @@ -171,17 +186,17 @@ images: registry: 709825985650.dkr.ecr.us-east-1.amazonaws.com repo: portworx imageName: keycloak-login-theme - tag: 2.2.0 + tag: 2.7.0 keycloakInitContainerImage: registry: 709825985650.dkr.ecr.us-east-1.amazonaws.com repo: portworx/library imageName: busybox - tag: 1.31 + tag: 1.35.0 mysqlImage: registry: 709825985650.dkr.ecr.us-east-1.amazonaws.com repo: portworx/library imageName: mysql - tag: 5.7.41 + tag: 5.7.44 ## Images required for enabling px-backup @@ -189,10 +204,32 @@ images: registry: 709825985650.dkr.ecr.us-east-1.amazonaws.com repo: portworx imageName: px-backup - tag: 2.6.0 + tag: 2.7.0 mongodbImage: registry: 709825985650.dkr.ecr.us-east-1.amazonaws.com repo: portworx/bitnami imageName: mongodb - tag: 5.0.20-debian-11-r13 + tag: 5.0.24-debian-11-r0 + ## Images required for enabling pxbackup-monitor + + pxBackupPrometheusImage: + registry: docker.io + repo: portworx + imageName: prometheus + tag: v2.48.0 + pxBackupAlertmanagerImage: + registry: docker.io + repo: portworx + imageName: alertmanager + tag: v0.26.0 + pxBackupPrometheusOperatorImage: + registry: docker.io + repo: portworx + imageName: prometheus-operator + tag: v0.70.0 + pxBackupPrometheusConfigReloaderImage: + registry: docker.io + repo: portworx + imageName: prometheus-config-reloader + tag: v0.70.0 diff --git a/stable/index.yaml b/stable/index.yaml index 604bcfe..bb3cd51 100644 --- a/stable/index.yaml +++ b/stable/index.yaml @@ -3,7 +3,7 @@ entries: portworx: - apiVersion: v1 appVersion: 3.0.3 - created: "2023-12-07T04:01:16.768318097Z" + created: "2024-05-28T14:14:57.852505265Z" description: A Helm chart for installing Portworx on EKS through the AWS Marketplace. digest: 423a3669889954d708925bbfebfc103ec369d51c56a05af130eb15c63e044085 home: https://portworx.com/ @@ -12,11 +12,11 @@ entries: sources: - https://github.com/portworx/aws-helm urls: - - https://raw.githubusercontent.com/portworx/aws-helm/2.6.0/stable/portworx-1.0.13.tgz + - https://raw.githubusercontent.com/portworx/aws-helm/2.7.0/stable/portworx-1.0.13.tgz version: 1.0.13 - apiVersion: v1 appVersion: 3.0.0 - created: "2023-12-07T04:01:16.766493006Z" + created: "2024-05-28T14:14:57.845296666Z" description: A Helm chart for installing Portworx on EKS through the AWS Marketplace. digest: 13348957baa4f80ccac794aea3fa3f87731b50120e7e2e234dd13d0b1305935c home: https://portworx.com/ @@ -25,11 +25,11 @@ entries: sources: - https://github.com/portworx/aws-helm urls: - - https://raw.githubusercontent.com/portworx/aws-helm/2.6.0/stable/portworx-1.0.12.tgz + - https://raw.githubusercontent.com/portworx/aws-helm/2.7.0/stable/portworx-1.0.12.tgz version: 1.0.12 - apiVersion: v1 appVersion: 2.13.3 - created: "2023-12-07T04:01:16.764710432Z" + created: "2024-05-28T14:14:57.838428385Z" description: A Helm chart for installing Portworx on EKS through the AWS Marketplace. digest: 554b0f54d6336297669ccb4eebf68e50d9d342c0e4d74ea491e5c37adc2ab49a home: https://portworx.com/ @@ -38,11 +38,11 @@ entries: sources: - https://github.com/portworx/aws-helm urls: - - https://raw.githubusercontent.com/portworx/aws-helm/2.6.0/stable/portworx-1.0.11.tgz + - https://raw.githubusercontent.com/portworx/aws-helm/2.7.0/stable/portworx-1.0.11.tgz version: 1.0.11 - apiVersion: v1 appVersion: 2.13.0 - created: "2023-12-07T04:01:16.762244678Z" + created: "2024-05-28T14:14:57.83316728Z" description: A Helm chart for installing Portworx on EKS through the AWS Marketplace. digest: fb1de9c87c38318cf041f35463e70d561e6f18763b676edf61e5b3eeae1f931e home: https://portworx.com/ @@ -51,11 +51,11 @@ entries: sources: - https://github.com/portworx/aws-helm urls: - - https://raw.githubusercontent.com/portworx/aws-helm/2.6.0/stable/portworx-1.0.10.tgz + - https://raw.githubusercontent.com/portworx/aws-helm/2.7.0/stable/portworx-1.0.10.tgz version: 1.0.10 - apiVersion: v1 appVersion: 2.12.1 - created: "2023-12-07T04:01:16.7836267Z" + created: "2024-05-28T14:14:57.906604477Z" description: A Helm chart for installing Portworx on EKS through the AWS Marketplace. digest: 129e7ecc64fc8a4c2fd51baf47dfcaf4060edaa8640656b22a2a48d4db8c8f9b home: https://portworx.com/ @@ -64,11 +64,11 @@ entries: sources: - https://github.com/portworx/aws-helm urls: - - https://raw.githubusercontent.com/portworx/aws-helm/2.6.0/stable/portworx-1.0.9.tgz + - https://raw.githubusercontent.com/portworx/aws-helm/2.7.0/stable/portworx-1.0.9.tgz version: 1.0.9 - apiVersion: v1 appVersion: 2.12.0 - created: "2023-12-07T04:01:16.781803055Z" + created: "2024-05-28T14:14:57.901922427Z" description: A Helm chart for installing Portworx on EKS through the AWS Marketplace. digest: 3e8bc5c69743a5c502c6509c1b6e1e11e416612a34dbfc661cbe8214f66f3a51 home: https://portworx.com/ @@ -77,11 +77,11 @@ entries: sources: - https://github.com/portworx/aws-helm urls: - - https://raw.githubusercontent.com/portworx/aws-helm/2.6.0/stable/portworx-1.0.8.tgz + - https://raw.githubusercontent.com/portworx/aws-helm/2.7.0/stable/portworx-1.0.8.tgz version: 1.0.8 - apiVersion: v1 appVersion: 2.11.0 - created: "2023-12-07T04:01:16.779981098Z" + created: "2024-05-28T14:14:57.894859071Z" description: A Helm chart for installing Portworx on EKS through the AWS Marketplace. digest: 91eab902f3d9c0ebbd1fc5e58a548f05bd80b350ae249e2ff871e6ff7ea76cb2 home: https://portworx.com/ @@ -90,11 +90,11 @@ entries: sources: - https://github.com/portworx/aws-helm urls: - - https://raw.githubusercontent.com/portworx/aws-helm/2.6.0/stable/portworx-1.0.7.tgz + - https://raw.githubusercontent.com/portworx/aws-helm/2.7.0/stable/portworx-1.0.7.tgz version: 1.0.7 - apiVersion: v1 appVersion: 2.10.0 - created: "2023-12-07T04:01:16.777776956Z" + created: "2024-05-28T14:14:57.88816965Z" description: A Helm chart for installing Portworx on EKS through the AWS Marketplace. digest: f9cd5606cfd57ebc6aac31baeef58f6577ab9463b9dda97c116dc34d63fd05aa home: https://portworx.com/ @@ -103,11 +103,11 @@ entries: sources: - https://github.com/portworx/aws-helm urls: - - https://raw.githubusercontent.com/portworx/aws-helm/2.6.0/stable/portworx-1.0.6.tgz + - https://raw.githubusercontent.com/portworx/aws-helm/2.7.0/stable/portworx-1.0.6.tgz version: 1.0.6 - apiVersion: v1 appVersion: 2.9.1.2 - created: "2023-12-07T04:01:16.775259416Z" + created: "2024-05-28T14:14:57.882440157Z" description: A Helm chart for installing Portworx on EKS through the AWS Marketplace. digest: ae3197372b494392aab92fffa4ecd69cfcfedb1476021e41e99784703e2568e3 home: https://portworx.com/ @@ -116,11 +116,11 @@ entries: sources: - https://github.com/portworx/aws-helm urls: - - https://raw.githubusercontent.com/portworx/aws-helm/2.6.0/stable/portworx-1.0.5.tgz + - https://raw.githubusercontent.com/portworx/aws-helm/2.7.0/stable/portworx-1.0.5.tgz version: 1.0.5 - apiVersion: v1 appVersion: 2.9.0.1 - created: "2023-12-07T04:01:16.77341858Z" + created: "2024-05-28T14:14:57.876654094Z" description: A Helm chart for installing Portworx on EKS through the AWS Marketplace. digest: 460cfc1b5b838230e336c130f8b13918df2090391831fc006a473f05b7df89c6 home: https://portworx.com/ @@ -129,11 +129,11 @@ entries: sources: - https://github.com/portworx/aws-helm urls: - - https://raw.githubusercontent.com/portworx/aws-helm/2.6.0/stable/portworx-1.0.4.tgz + - https://raw.githubusercontent.com/portworx/aws-helm/2.7.0/stable/portworx-1.0.4.tgz version: 1.0.4 - apiVersion: v1 appVersion: 2.8.1 - created: "2023-12-07T04:01:16.771673147Z" + created: "2024-05-28T14:14:57.869596455Z" description: A Helm chart for installing Portworx on EKS through the AWS Marketplace. digest: 618013189e439fc099c7557931df9e502ea0438ba91cf54338ae3ff5460ea357 home: https://portworx.com/ @@ -142,11 +142,11 @@ entries: sources: - https://github.com/portworx/aws-helm urls: - - https://raw.githubusercontent.com/portworx/aws-helm/2.6.0/stable/portworx-1.0.3.tgz + - https://raw.githubusercontent.com/portworx/aws-helm/2.7.0/stable/portworx-1.0.3.tgz version: 1.0.3 - apiVersion: v1 appVersion: 2.6.2.1 - created: "2023-12-07T04:01:16.769856273Z" + created: "2024-05-28T14:14:57.860672929Z" description: A Helm chart for installing Portworx on EKS through the AWS Marketplace. digest: 4b40fb293c15b81e98a981da9b2b04fbacf7ec853eab4ca8ed2bf09a2c2989f9 home: https://portworx.com/ @@ -155,11 +155,11 @@ entries: sources: - https://github.com/portworx/aws-helm urls: - - https://raw.githubusercontent.com/portworx/aws-helm/2.6.0/stable/portworx-1.0.2.tgz + - https://raw.githubusercontent.com/portworx/aws-helm/2.7.0/stable/portworx-1.0.2.tgz version: 1.0.2 - apiVersion: v1 appVersion: 2.6.1 - created: "2023-12-07T04:01:16.759505513Z" + created: "2024-05-28T14:14:57.82738979Z" description: A Helm chart for installing Portworx on EKS through the AWS Marketplace. digest: f62ba26aec43fd96faba2db500a1867720fa5cc95c379719e6d0b29f7202e270 home: https://portworx.com/ @@ -168,11 +168,11 @@ entries: sources: - https://github.com/portworx/aws-helm urls: - - https://raw.githubusercontent.com/portworx/aws-helm/2.6.0/stable/portworx-1.0.1.tgz + - https://raw.githubusercontent.com/portworx/aws-helm/2.7.0/stable/portworx-1.0.1.tgz version: 1.0.1 - apiVersion: v1 appVersion: 2.6.1 - created: "2023-12-07T04:01:16.757174608Z" + created: "2024-05-28T14:14:57.818622367Z" description: A Helm chart for installing Portworx on EKS through the AWS Marketplace. digest: f6041b68d76915b1ac5f4cff0d6a22c2fa701747f9f34a764f55358bac6c5a7f home: https://portworx.com/ @@ -181,12 +181,33 @@ entries: sources: - https://github.com/portworx/aws-helm urls: - - https://raw.githubusercontent.com/portworx/aws-helm/2.6.0/stable/portworx-1.0.0.tgz + - https://raw.githubusercontent.com/portworx/aws-helm/2.7.0/stable/portworx-1.0.0.tgz version: 1.0.0 px-central: + - apiVersion: v1 + appVersion: 2.7.0 + created: "2024-05-28T14:14:57.934090615Z" + description: A Helm chart for installing PX-Central on Kubernetes and Openshift + digest: 7ab443daacbb97c0d9cf950f1b483b35e003bd95771c8c5b4526f7e3f7f6e106 + home: https://portworx.com/ + icon: https://raw.githubusercontent.com/portworx/aws-helm/master/portworx/doc/media/px-logo.png + keywords: + - px-backup + - storage + - persistent disk + - pvc + - portworx + - px-central + - lighthouse + name: px-central + sources: + - https://github.com/portworx/aws-helm/tree/master/charts/px-central + urls: + - https://raw.githubusercontent.com/portworx/aws-helm/2.7.0/stable/px-central-2.7.0.tgz + version: 2.7.0 - apiVersion: v1 appVersion: 2.6.0 - created: "2023-12-07T04:01:16.795058245Z" + created: "2024-05-28T14:14:57.931891436Z" description: A Helm chart for installing PX-Central on Kubernetes and Openshift digest: 3059fcd1428d58bf3a2431ea35b48f03fca9cd7ae48001c6b8c1c680e0fbd7e0 home: https://portworx.com/ @@ -203,11 +224,11 @@ entries: sources: - https://github.com/portworx/aws-helm/tree/master/charts/px-central urls: - - https://raw.githubusercontent.com/portworx/aws-helm/2.6.0/stable/px-central-2.6.0.tgz + - https://raw.githubusercontent.com/portworx/aws-helm/2.7.0/stable/px-central-2.6.0.tgz version: 2.6.0 - apiVersion: v1 appVersion: 2.5.1 - created: "2023-12-07T04:01:16.793577379Z" + created: "2024-05-28T14:14:57.930019236Z" description: A Helm chart for installing PX-Central on Kubernetes and Openshift digest: 3b457990d05aa48009249e2d9309a39cfd75279ad616105f6d94f38125ba3336 home: https://portworx.com/ @@ -224,11 +245,11 @@ entries: sources: - https://github.com/portworx/aws-helm/tree/master/charts/px-central urls: - - https://raw.githubusercontent.com/portworx/aws-helm/2.6.0/stable/px-central-2.5.1.tgz + - https://raw.githubusercontent.com/portworx/aws-helm/2.7.0/stable/px-central-2.5.1.tgz version: 2.5.1 - apiVersion: v1 appVersion: 2.2.1 - created: "2023-12-07T04:01:16.792097159Z" + created: "2024-05-28T14:14:57.926861548Z" description: A Helm chart for installing PX-Central on Kubernetes and Openshift digest: 59c7a8da258aa64b51a1d42cf96272c6f74156ea70cee7831d2540c93604e882 home: https://portworx.com/ @@ -245,11 +266,11 @@ entries: sources: - https://github.com/portworx/aws-helm/tree/master/charts/px-central urls: - - https://raw.githubusercontent.com/portworx/aws-helm/2.6.0/stable/px-central-2.2.1.tgz + - https://raw.githubusercontent.com/portworx/aws-helm/2.7.0/stable/px-central-2.2.1.tgz version: 2.2.1 - apiVersion: v1 appVersion: 2.1.1 - created: "2023-12-07T04:01:16.789927112Z" + created: "2024-05-28T14:14:57.923143656Z" description: A Helm chart for installing PX-Central on Kubernetes and Openshift digest: 19f5179a2b832a65c617ed63c4c6cf7783800799396c0d3995bd3c76ca52a5da home: https://portworx.com/ @@ -266,11 +287,11 @@ entries: sources: - https://github.com/portworx/aws-helm/tree/master/charts/px-central urls: - - https://raw.githubusercontent.com/portworx/aws-helm/2.6.0/stable/px-central-2.1.1.tgz + - https://raw.githubusercontent.com/portworx/aws-helm/2.7.0/stable/px-central-2.1.1.tgz version: 2.1.1 - apiVersion: v1 appVersion: 2.1.0 - created: "2023-12-07T04:01:16.788303991Z" + created: "2024-05-28T14:14:57.918965913Z" description: A Helm chart for installing PX-Central on Kubernetes and Openshift digest: 059a66b47ecd5c03130bfd3c9edcb2a631bbc47bd76c511c4aab1f59ec7723d3 home: https://portworx.com/ @@ -287,11 +308,11 @@ entries: sources: - https://github.com/portworx/aws-helm/tree/master/charts/px-central urls: - - https://raw.githubusercontent.com/portworx/aws-helm/2.6.0/stable/px-central-2.1.0.tgz + - https://raw.githubusercontent.com/portworx/aws-helm/2.7.0/stable/px-central-2.1.0.tgz version: 2.1.0 - apiVersion: v1 appVersion: 2.0.1 - created: "2023-12-07T04:01:16.786685714Z" + created: "2024-05-28T14:14:57.914881122Z" description: A Helm chart for installing PX-Central on Kubernetes and Openshift digest: baf599a08f0099fc6a449f2368428466597f244ffc0b707a3c87e54d9d852c8b home: https://portworx.com/ @@ -308,11 +329,11 @@ entries: sources: - https://github.com/portworx/aws-helm/tree/master/charts/px-central urls: - - https://raw.githubusercontent.com/portworx/aws-helm/2.6.0/stable/px-central-2.0.1.tgz + - https://raw.githubusercontent.com/portworx/aws-helm/2.7.0/stable/px-central-2.0.1.tgz version: 2.0.1 - apiVersion: v1 appVersion: 2.0.0 - created: "2023-12-07T04:01:16.785130736Z" + created: "2024-05-28T14:14:57.911490763Z" description: A Helm chart for installing PX-Central on Kubernetes and Openshift digest: 7823ef89f0283b262f3c3360f34a5c522613fe27a330fb66d53b95c383e32f2c home: https://portworx.com/ @@ -329,6 +350,6 @@ entries: sources: - https://github.com/portworx/aws-helm/tree/master/charts/px-central urls: - - https://raw.githubusercontent.com/portworx/aws-helm/2.6.0/stable/px-central-2.0.0.tgz + - https://raw.githubusercontent.com/portworx/aws-helm/2.7.0/stable/px-central-2.0.0.tgz version: 2.0.0 -generated: "2023-12-07T04:01:16.755168392Z" +generated: "2024-05-28T14:14:57.811186076Z" diff --git a/stable/px-central-2.7.0.tgz b/stable/px-central-2.7.0.tgz new file mode 100644 index 0000000..7a7df1f Binary files /dev/null and b/stable/px-central-2.7.0.tgz differ