diff --git a/catalog.json b/catalog.json index d18a9b1247..f2eec552a9 100644 --- a/catalog.json +++ b/catalog.json @@ -182,7 +182,7 @@ "latest_version": "1.0.95", "latest_app_version": "2023.6.1", "latest_human_version": "2023.6.1_1.0.95", - "last_update": "2023-06-08 12:26:56", + "last_update": "2023-06-12 11:52:57", "name": "home-assistant", "recommended": false, "title": "Home Assistant", @@ -531,7 +531,7 @@ "latest_version": "1.0.10", "latest_app_version": "8.8.1", "latest_human_version": "8.8.1_1.0.10", - "last_update": "2023-06-10 20:58:16", + "last_update": "2023-06-12 11:52:57", "name": "elastic-search", "recommended": false, "title": "Elastic Search", @@ -611,7 +611,7 @@ "latest_version": "1.0.8", "latest_app_version": "0.107.31", "latest_human_version": "0.107.31_1.0.8", - "last_update": "2023-06-08 12:26:56", + "last_update": "2023-06-12 11:52:57", "name": "adguard-home", "recommended": false, "title": "AdGuard Home", @@ -1126,6 +1126,47 @@ "icon_url": null, "icon": "https://raw.githubusercontent.com/dani-garcia/vaultwarden/main/src/static/images/vaultwarden-icon.png" }, + "grafana": { + "app_readme": "

Grafana

\n

Grafana is the open source analytics & monitoring solution for every database.

\n
\n

When application is installed, a container will be launched with root privileges.\nThis is required in order to apply the correct permissions to the Grafana directories.\nAfterward, the Grafana container will run as a non-root user (Default: 568).\nAll mounted storage(s) will be chowned only if the parent directory does not match the configured user.

\n
\n

Additional configuration can be made by adding additional environment variables\nHere is the available configuration documentation

\n

Use the following syntax:\nGF_<SECTION-NAME>_<KEY-NAME>

\n

Example:\nGF_SMTP_ENABLED

", + "categories": [ + "productivity" + ], + "description": "Grafana is the open source analytics & monitoring solution for every database.", + "healthy": true, + "healthy_error": null, + "home": "https://grafana.com", + "location": "/__w/charts/charts/community/grafana", + "latest_version": "1.0.0", + "latest_app_version": "9.5.3", + "latest_human_version": "9.5.3_1.0.0", + "last_update": null, + "name": "grafana", + "recommended": false, + "title": "Grafana", + "maintainers": [ + { + "name": "truenas", + "url": "https://www.truenas.com/", + "email": "dev@ixsystems.com" + } + ], + "tags": [ + "analytics", + "monitoring", + "metrics", + "dashboards" + ], + "screenshots": [ + "https://grafana.com/static/img/grafana/showcase_visualize.jpg", + "https://grafana.com/static/img/screenshots/Modal_dashboards.png" + ], + "sources": [ + "https://hub.docker.com/r/grafana/grafana", + "https://github.com/truenas/charts/tree/master/community/grafana", + "https://github.com/grafana" + ], + "icon_url": "https://www.gravatar.com/avatar/31cea69afa424609b2d83621b4d47f1d?s=120&r=g&d=404" + }, "chia": { "app_readme": "

Chia

\n

This container runs as root user.

\n

When a port is set to < 9000. Host Networking is enabled automatically.

\n
\n

Also NodePort services turn to ClusterIP services, to avoid attempts to bind ports twice.

\n
\n

Key file is stored in /plots/keyfile and is generated automatically, only if the file does not exist.\nIf you want to use your own keyfile, you can create a file called keyfile in the /plots directory and it will be used instead.

\n
\n

When set on harvester mode keys variable is set to none and no generation is performed.

\n
", "categories": [ diff --git a/community/grafana/1.0.0/Chart.lock b/community/grafana/1.0.0/Chart.lock new file mode 100644 index 0000000000..18b7609c37 --- /dev/null +++ b/community/grafana/1.0.0/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: file://../../../common + version: 1.0.8 +digest: sha256:254efaa1285f634b7a80b7baadeadbd20a680f7fee49d1d9d3c4618aa0d657ad +generated: "2023-06-08T20:43:17.286126829+03:00" diff --git a/community/grafana/1.0.0/Chart.yaml b/community/grafana/1.0.0/Chart.yaml new file mode 100644 index 0000000000..57d6caf56f --- /dev/null +++ b/community/grafana/1.0.0/Chart.yaml @@ -0,0 +1,28 @@ +name: grafana +description: Grafana is the open source analytics & monitoring solution for every database. +annotations: + title: Grafana +type: application +version: 1.0.0 +apiVersion: v2 +appVersion: '9.5.3' +kubeVersion: '>=1.16.0-0' +maintainers: + - name: truenas + url: https://www.truenas.com/ + email: dev@ixsystems.com +dependencies: + - name: common + repository: file://../../../common + version: 1.0.8 +home: https://grafana.com +icon: https://www.gravatar.com/avatar/31cea69afa424609b2d83621b4d47f1d?s=120&r=g&d=404 +sources: + - https://hub.docker.com/r/grafana/grafana + - https://github.com/truenas/charts/tree/master/community/grafana + - https://github.com/grafana +keywords: + - dashboard + - monitoring + - analytics + - metrics diff --git a/community/grafana/1.0.0/README.md b/community/grafana/1.0.0/README.md new file mode 100644 index 0000000000..78663222bd --- /dev/null +++ b/community/grafana/1.0.0/README.md @@ -0,0 +1,17 @@ +# Grafana + +[Grafana](https://grafana.com/) is the open source analytics & monitoring solution for every database. + +> When application is installed, a container will be launched with **root** privileges. +> This is required in order to apply the correct permissions to the `Grafana` directories. +> Afterward, the `Grafana` container will run as a **non**-root user (Default: `568`). +> All mounted storage(s) will be `chown`ed only if the parent directory does not match the configured user. + +Additional configuration can be made by adding additional environment variables +Here is the available [configuration documentation](https://grafana.com/docs/grafana/latest/setup-grafana/configure-grafana/) + +Use the following syntax: +`GF__` + +Example: +`GF_SMTP_ENABLED` diff --git a/community/grafana/1.0.0/app-readme.md b/community/grafana/1.0.0/app-readme.md new file mode 100644 index 0000000000..78663222bd --- /dev/null +++ b/community/grafana/1.0.0/app-readme.md @@ -0,0 +1,17 @@ +# Grafana + +[Grafana](https://grafana.com/) is the open source analytics & monitoring solution for every database. + +> When application is installed, a container will be launched with **root** privileges. +> This is required in order to apply the correct permissions to the `Grafana` directories. +> Afterward, the `Grafana` container will run as a **non**-root user (Default: `568`). +> All mounted storage(s) will be `chown`ed only if the parent directory does not match the configured user. + +Additional configuration can be made by adding additional environment variables +Here is the available [configuration documentation](https://grafana.com/docs/grafana/latest/setup-grafana/configure-grafana/) + +Use the following syntax: +`GF__` + +Example: +`GF_SMTP_ENABLED` diff --git a/community/grafana/1.0.0/charts/common-1.0.8.tgz b/community/grafana/1.0.0/charts/common-1.0.8.tgz new file mode 100644 index 0000000000..560796ace6 Binary files /dev/null and b/community/grafana/1.0.0/charts/common-1.0.8.tgz differ diff --git a/community/grafana/1.0.0/ci/basic-plugin-values.yaml b/community/grafana/1.0.0/ci/basic-plugin-values.yaml new file mode 100644 index 0000000000..41b2f9c940 --- /dev/null +++ b/community/grafana/1.0.0/ci/basic-plugin-values.yaml @@ -0,0 +1,16 @@ +grafanaStorage: + data: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/data + additionalStorages: + - type: hostPath + hostPath: /mnt/{{ .Release.Namespace }}/logs + mountPath: /logs + +grafanaConfig: + plugins: + - grafana-piechart-panel + - grafana-clock-panel 1.0.0 + additionalEnvs: + - name: GF_PATHS_LOGS + value: /logs diff --git a/community/grafana/1.0.0/ci/basic-values.yaml b/community/grafana/1.0.0/ci/basic-values.yaml new file mode 100644 index 0000000000..858792030c --- /dev/null +++ b/community/grafana/1.0.0/ci/basic-values.yaml @@ -0,0 +1,8 @@ +grafanaStorage: + data: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/data + +grafanaRunAs: + user: 1000 + group: 1000 diff --git a/community/grafana/1.0.0/ci/https-plugins-values.yaml b/community/grafana/1.0.0/ci/https-plugins-values.yaml new file mode 100644 index 0000000000..5dcb472790 --- /dev/null +++ b/community/grafana/1.0.0/ci/https-plugins-values.yaml @@ -0,0 +1,106 @@ +grafanaStorage: + data: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/data + additionalStorages: + - type: hostPath + hostPath: /mnt/{{ .Release.Namespace }}/logs + mountPath: /logs + +grafanaNetwork: + certificateID: 1 + rootURL: https://grafana.example.com:30000 + +grafanaConfig: + plugins: + - grafana-piechart-panel + - grafana-clock-panel 1.0.0 + additionalEnvs: + - name: GF_PATHS_LOGS + value: /logs + +ixCertificates: + "1": + certificate: | + -----BEGIN CERTIFICATE----- + MIIEdjCCA16gAwIBAgIDYFMYMA0GCSqGSIb3DQEBCwUAMGwxDDAKBgNVBAMMA2Fz + ZDELMAkGA1UEBhMCVVMxDTALBgNVBAgMBGFzZGYxCzAJBgNVBAcMAmFmMQ0wCwYD + VQQKDARhc2RmMQwwCgYDVQQLDANhc2QxFjAUBgkqhkiG9w0BCQEWB2FAYS5jb20w + HhcNMjEwODMwMjMyMzU0WhcNMjMxMjAzMjMyMzU0WjBuMQswCQYDVQQDDAJhZDEL + MAkGA1UEBhMCVVMxDTALBgNVBAgMBGFzZGYxDTALBgNVBAcMBGFzZGYxDTALBgNV + BAoMBGFkc2YxDTALBgNVBAsMBGFzZGYxFjAUBgkqhkiG9w0BCQEWB2FAYS5jb20w + ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC7+1xOHRQyOnQTHFcrdasX + Zl0gzutVlA890a1wiQpdD5dOtCLo7+eqVYjqVKo9W8RUIArXWmBu/AbkH7oVFWC1 + P973W1+ArF5sA70f7BZgqRKJTIisuIFIlRETgfnP2pfQmHRZtGaIJRZI4vQCdYgW + 2g0KOvvNcZJCVq1OrhKiNiY1bWCp66DGg0ic6OEkZFHTm745zUNQaf2dNgsxKU0H + PGjVLJI//yrRFAOSBUqgD4c50krnMF7fU/Fqh+UyOu8t6Y/HsySh3urB+Zie331t + AzV6QV39KKxRflNx/yuWrtIEslGTm+xHKoCYJEk/nZ3mX8Y5hG6wWAb7A/FuDVg3 + AgMBAAGjggEdMIIBGTAnBgNVHREEIDAehwTAqAADhwTAqAAFhwTAqAC2hwTAqACB + hwTAqACSMB0GA1UdDgQWBBQ4G2ff4tgZl4vmo4xCfqmJhdqShzAMBgNVHRMBAf8E + AjAAMIGYBgNVHSMEgZAwgY2AFLlYf9L99nxJDcpCM/LT3V5hQ/a3oXCkbjBsMQww + CgYDVQQDDANhc2QxCzAJBgNVBAYTAlVTMQ0wCwYDVQQIDARhc2RmMQswCQYDVQQH + DAJhZjENMAsGA1UECgwEYXNkZjEMMAoGA1UECwwDYXNkMRYwFAYJKoZIhvcNAQkB + FgdhQGEuY29tggNgUxcwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwEwDgYDVR0PAQH/ + BAQDAgWgMA0GCSqGSIb3DQEBCwUAA4IBAQA6FpOInEHB5iVk3FP67GybJ29vHZTD + KQHbQgmg8s4L7qIsA1HQ+DMCbdylpA11x+t/eL/n48BvGw2FNXpN6uykhLHJjbKR + h8yITa2KeD3LjLYhScwIigXmTVYSP3km6s8jRL6UKT9zttnIHyXVpBDya6Q4WTMx + fmfC6O7t1PjQ5ZyVtzizIUP8ah9n4TKdXU4A3QIM6WsJXpHb+vqp1WDWJ7mKFtgj + x5TKv3wcPnktx0zMPfLb5BTSE9rc9djcBG0eIAsPT4FgiatCUChe7VhuMnqskxEz + MymJLoq8+mzucRwFkOkR2EIt1x+Irl2mJVMeBow63rVZfUQBD8h++LqB + -----END CERTIFICATE----- + -----BEGIN CERTIFICATE----- + MIIEhDCCA2ygAwIBAgIDYFMXMA0GCSqGSIb3DQEBCwUAMGwxDDAKBgNVBAMMA2Fz + ZDELMAkGA1UEBhMCVVMxDTALBgNVBAgMBGFzZGYxCzAJBgNVBAcMAmFmMQ0wCwYD + VQQKDARhc2RmMQwwCgYDVQQLDANhc2QxFjAUBgkqhkiG9w0BCQEWB2FAYS5jb20w + HhcNMjEwODMwMjMyMDQ1WhcNMzEwODI4MjMyMDQ1WjBsMQwwCgYDVQQDDANhc2Qx + CzAJBgNVBAYTAlVTMQ0wCwYDVQQIDARhc2RmMQswCQYDVQQHDAJhZjENMAsGA1UE + CgwEYXNkZjEMMAoGA1UECwwDYXNkMRYwFAYJKoZIhvcNAQkBFgdhQGEuY29tMIIB + IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAq//c0hEEr83CS1pMgsHX50jt + 2MqIbcf63UUNJTiYpUUvUQSFJFc7m/dr+RTZvu97eDCnD5K2qkHHvTPaPZwY+Djf + iy7N641Sz6u/y3Yo3xxs1Aermsfedh48vusJpjbkT2XS44VjbkrpKcWDNVpp3Evd + M7oJotXeUsZ+imiyVCfr4YhoY5gbGh/r+KN9Wf9YKoUyfLLZGwdZkhtX2zIbidsL + Thqi9YTaUHttGinjiBBum234u/CfvKXsfG3yP2gvBGnlvZnM9ktv+lVffYNqlf7H + VmB1bKKk84HtzuW5X76SGAgOG8eHX4x5ZLI1WQUuoQOVRl1I0UCjBtbz8XhwvQID + AQABo4IBLTCCASkwLQYDVR0RBCYwJIcEwKgABYcEwKgAA4cEwKgAkocEwKgAtYcE + wKgAgYcEwKgAtjAdBgNVHQ4EFgQUuVh/0v32fEkNykIz8tPdXmFD9rcwDwYDVR0T + AQH/BAUwAwEB/zCBmAYDVR0jBIGQMIGNgBS5WH/S/fZ8SQ3KQjPy091eYUP2t6Fw + pG4wbDEMMAoGA1UEAwwDYXNkMQswCQYDVQQGEwJVUzENMAsGA1UECAwEYXNkZjEL + MAkGA1UEBwwCYWYxDTALBgNVBAoMBGFzZGYxDDAKBgNVBAsMA2FzZDEWMBQGCSqG + SIb3DQEJARYHYUBhLmNvbYIDYFMXMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEF + BQcDAjAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQELBQADggEBAKEocOmVuWlr + zegtKYMe8NhHIkFY9oVn5ym6RHNOJpPH4QF8XYC3Z5+iC5yGh4P/jVe/4I4SF6Ql + PtofU0jNq5vzapt/y+m008eXqPQFmoUOvu+JavoRVcRx2LIP5AgBA1mF56CSREsX + TkuJAA9IUQ8EjnmAoAeKINuPaKxGDuU8BGCMqr/qd564MKNf9XYL+Fb2rlkA0O2d + 2No34DQLgqSmST/LAvPM7Cbp6knYgnKmGr1nETCXasg1cueHLnWWTvps2HiPp2D/ + +Fq0uqcZLu4Mdo0CPs4e5sHRyldEnRSKh0DVLprq9zr/GMipmPLJUsT5Jed3sj0w + M7Y3vwxshpo= + -----END CERTIFICATE----- + privatekey: | + -----BEGIN PRIVATE KEY----- + MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC7+1xOHRQyOnQT + HFcrdasXZl0gzutVlA890a1wiQpdD5dOtCLo7+eqVYjqVKo9W8RUIArXWmBu/Abk + H7oVFWC1P973W1+ArF5sA70f7BZgqRKJTIisuIFIlRETgfnP2pfQmHRZtGaIJRZI + 4vQCdYgW2g0KOvvNcZJCVq1OrhKiNiY1bWCp66DGg0ic6OEkZFHTm745zUNQaf2d + NgsxKU0HPGjVLJI//yrRFAOSBUqgD4c50krnMF7fU/Fqh+UyOu8t6Y/HsySh3urB + +Zie331tAzV6QV39KKxRflNx/yuWrtIEslGTm+xHKoCYJEk/nZ3mX8Y5hG6wWAb7 + A/FuDVg3AgMBAAECggEAapt30rj9DitGTtxAt13pJMEhyYxvvD3WkvmJwguF/Bbu + eW0Ba1c668fMeRCA54FWi1sMqusPS4HUqqUvk+tmyAOsAF4qgD/A4MMSC7uJSVI5 + N/JWhJWyhCY94/FPakiO1nbPbVw41bcqtzU2qvparpME2CtxSCbDiqm7aaag3Kqe + EF0fGSUdZ+TYl9JM05+eIyiX+UY19Fg0OjTHMn8nGpxcNTfDBdQ68TKvdo/dtIKL + PLKzJUNNdM8odC4CvQtfGMqaslwZwXkiOl5VJcW21ncj/Y0ngEMKeD/i65ZoqGdR + 0FKCQYEAGtM2FvJcZQ92Wsw7yj2bK2MSegVUyLK32QKBgQDe8syVCepPzRsfjfxA + 6TZlWcGuTZLhwIx97Ktw3VcQ1f4rLoEYlv0xC2VWBORpzIsJo4I/OLmgp8a+Ga8z + FkVRnq90dV3t4NP9uJlHgcODHnOardC2UUka4olBSCG6zmK4Jxi34lOxhGRkshOo + L4IBeOIB5g+ZrEEXkzfYJHESRQKBgQDX2YhFhGIrT8BAnC5BbXbhm8h6Bhjz8DYL + d+qhVJjef7L/aJxViU0hX9Ba2O8CLK3FZeREFE3hJPiJ4TZSlN4evxs5p+bbNDcA + 0mhRI/o3X4ac6IxdRebyYnCOB/Cu94/MzppcZcotlCekKNike7eorCcX4Qavm7Pu + MUuQ+ifmSwKBgEnchoqZzlbBzMqXb4rRuIO7SL9GU/MWp3TQg7vQmJerTZlgvsQ2 + wYsOC3SECmhCq4117iCj2luvOdihCboTFsQDnn0mpQe6BIF6Ns3J38wAuqv0CcFd + DKsrge1uyD3rQilgSoAhKzkUc24o0PpXQurZ8YZPgbuXpbj5vPaOnCdBAoGACYc7 + wb3XS4wos3FxhUfcwJbM4b4VKeeHqzfu7pI6cU/3ydiHVitKcVe2bdw3qMPqI9Wc + nvi6e17Tbdq4OCsEJx1OiVwFD9YdO3cOTc6lw/3+hjypvZBRYo+/4jUthbu96E+S + dtOzehGZMmDvN0uSzupSi3ZOgkAAUFpyuIKickMCgYAId0PCRjonO2thn/R0rZ7P + //L852uyzYhXKw5/fjFGhQ6LbaLgIRFaCZ0L2809u0HFnNvJjHv4AKP6j+vFQYYY + qQ+66XnfsA9G/bu4MDS9AX83iahD9IdLXQAy8I19prAbpVumKegPbMnNYNB/TYEc + 3G15AKCXo7jjOUtHY01DCQ== + -----END PRIVATE KEY----- diff --git a/community/grafana/1.0.0/ci/https-values.yaml b/community/grafana/1.0.0/ci/https-values.yaml new file mode 100644 index 0000000000..3d631978e9 --- /dev/null +++ b/community/grafana/1.0.0/ci/https-values.yaml @@ -0,0 +1,94 @@ +grafanaStorage: + data: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/data + +grafanaNetwork: + certificateID: 1 + rootURL: https://grafana.example.com:30000 + +ixCertificates: + "1": + certificate: | + -----BEGIN CERTIFICATE----- + MIIEdjCCA16gAwIBAgIDYFMYMA0GCSqGSIb3DQEBCwUAMGwxDDAKBgNVBAMMA2Fz + ZDELMAkGA1UEBhMCVVMxDTALBgNVBAgMBGFzZGYxCzAJBgNVBAcMAmFmMQ0wCwYD + VQQKDARhc2RmMQwwCgYDVQQLDANhc2QxFjAUBgkqhkiG9w0BCQEWB2FAYS5jb20w + HhcNMjEwODMwMjMyMzU0WhcNMjMxMjAzMjMyMzU0WjBuMQswCQYDVQQDDAJhZDEL + MAkGA1UEBhMCVVMxDTALBgNVBAgMBGFzZGYxDTALBgNVBAcMBGFzZGYxDTALBgNV + BAoMBGFkc2YxDTALBgNVBAsMBGFzZGYxFjAUBgkqhkiG9w0BCQEWB2FAYS5jb20w + ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC7+1xOHRQyOnQTHFcrdasX + Zl0gzutVlA890a1wiQpdD5dOtCLo7+eqVYjqVKo9W8RUIArXWmBu/AbkH7oVFWC1 + P973W1+ArF5sA70f7BZgqRKJTIisuIFIlRETgfnP2pfQmHRZtGaIJRZI4vQCdYgW + 2g0KOvvNcZJCVq1OrhKiNiY1bWCp66DGg0ic6OEkZFHTm745zUNQaf2dNgsxKU0H + PGjVLJI//yrRFAOSBUqgD4c50krnMF7fU/Fqh+UyOu8t6Y/HsySh3urB+Zie331t + AzV6QV39KKxRflNx/yuWrtIEslGTm+xHKoCYJEk/nZ3mX8Y5hG6wWAb7A/FuDVg3 + AgMBAAGjggEdMIIBGTAnBgNVHREEIDAehwTAqAADhwTAqAAFhwTAqAC2hwTAqACB + hwTAqACSMB0GA1UdDgQWBBQ4G2ff4tgZl4vmo4xCfqmJhdqShzAMBgNVHRMBAf8E + AjAAMIGYBgNVHSMEgZAwgY2AFLlYf9L99nxJDcpCM/LT3V5hQ/a3oXCkbjBsMQww + CgYDVQQDDANhc2QxCzAJBgNVBAYTAlVTMQ0wCwYDVQQIDARhc2RmMQswCQYDVQQH + DAJhZjENMAsGA1UECgwEYXNkZjEMMAoGA1UECwwDYXNkMRYwFAYJKoZIhvcNAQkB + FgdhQGEuY29tggNgUxcwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwEwDgYDVR0PAQH/ + BAQDAgWgMA0GCSqGSIb3DQEBCwUAA4IBAQA6FpOInEHB5iVk3FP67GybJ29vHZTD + KQHbQgmg8s4L7qIsA1HQ+DMCbdylpA11x+t/eL/n48BvGw2FNXpN6uykhLHJjbKR + h8yITa2KeD3LjLYhScwIigXmTVYSP3km6s8jRL6UKT9zttnIHyXVpBDya6Q4WTMx + fmfC6O7t1PjQ5ZyVtzizIUP8ah9n4TKdXU4A3QIM6WsJXpHb+vqp1WDWJ7mKFtgj + x5TKv3wcPnktx0zMPfLb5BTSE9rc9djcBG0eIAsPT4FgiatCUChe7VhuMnqskxEz + MymJLoq8+mzucRwFkOkR2EIt1x+Irl2mJVMeBow63rVZfUQBD8h++LqB + -----END CERTIFICATE----- + -----BEGIN CERTIFICATE----- + MIIEhDCCA2ygAwIBAgIDYFMXMA0GCSqGSIb3DQEBCwUAMGwxDDAKBgNVBAMMA2Fz + ZDELMAkGA1UEBhMCVVMxDTALBgNVBAgMBGFzZGYxCzAJBgNVBAcMAmFmMQ0wCwYD + VQQKDARhc2RmMQwwCgYDVQQLDANhc2QxFjAUBgkqhkiG9w0BCQEWB2FAYS5jb20w + HhcNMjEwODMwMjMyMDQ1WhcNMzEwODI4MjMyMDQ1WjBsMQwwCgYDVQQDDANhc2Qx + CzAJBgNVBAYTAlVTMQ0wCwYDVQQIDARhc2RmMQswCQYDVQQHDAJhZjENMAsGA1UE + CgwEYXNkZjEMMAoGA1UECwwDYXNkMRYwFAYJKoZIhvcNAQkBFgdhQGEuY29tMIIB + IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAq//c0hEEr83CS1pMgsHX50jt + 2MqIbcf63UUNJTiYpUUvUQSFJFc7m/dr+RTZvu97eDCnD5K2qkHHvTPaPZwY+Djf + iy7N641Sz6u/y3Yo3xxs1Aermsfedh48vusJpjbkT2XS44VjbkrpKcWDNVpp3Evd + M7oJotXeUsZ+imiyVCfr4YhoY5gbGh/r+KN9Wf9YKoUyfLLZGwdZkhtX2zIbidsL + Thqi9YTaUHttGinjiBBum234u/CfvKXsfG3yP2gvBGnlvZnM9ktv+lVffYNqlf7H + VmB1bKKk84HtzuW5X76SGAgOG8eHX4x5ZLI1WQUuoQOVRl1I0UCjBtbz8XhwvQID + AQABo4IBLTCCASkwLQYDVR0RBCYwJIcEwKgABYcEwKgAA4cEwKgAkocEwKgAtYcE + wKgAgYcEwKgAtjAdBgNVHQ4EFgQUuVh/0v32fEkNykIz8tPdXmFD9rcwDwYDVR0T + AQH/BAUwAwEB/zCBmAYDVR0jBIGQMIGNgBS5WH/S/fZ8SQ3KQjPy091eYUP2t6Fw + pG4wbDEMMAoGA1UEAwwDYXNkMQswCQYDVQQGEwJVUzENMAsGA1UECAwEYXNkZjEL + MAkGA1UEBwwCYWYxDTALBgNVBAoMBGFzZGYxDDAKBgNVBAsMA2FzZDEWMBQGCSqG + SIb3DQEJARYHYUBhLmNvbYIDYFMXMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEF + BQcDAjAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQELBQADggEBAKEocOmVuWlr + zegtKYMe8NhHIkFY9oVn5ym6RHNOJpPH4QF8XYC3Z5+iC5yGh4P/jVe/4I4SF6Ql + PtofU0jNq5vzapt/y+m008eXqPQFmoUOvu+JavoRVcRx2LIP5AgBA1mF56CSREsX + TkuJAA9IUQ8EjnmAoAeKINuPaKxGDuU8BGCMqr/qd564MKNf9XYL+Fb2rlkA0O2d + 2No34DQLgqSmST/LAvPM7Cbp6knYgnKmGr1nETCXasg1cueHLnWWTvps2HiPp2D/ + +Fq0uqcZLu4Mdo0CPs4e5sHRyldEnRSKh0DVLprq9zr/GMipmPLJUsT5Jed3sj0w + M7Y3vwxshpo= + -----END CERTIFICATE----- + privatekey: | + -----BEGIN PRIVATE KEY----- + MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC7+1xOHRQyOnQT + HFcrdasXZl0gzutVlA890a1wiQpdD5dOtCLo7+eqVYjqVKo9W8RUIArXWmBu/Abk + H7oVFWC1P973W1+ArF5sA70f7BZgqRKJTIisuIFIlRETgfnP2pfQmHRZtGaIJRZI + 4vQCdYgW2g0KOvvNcZJCVq1OrhKiNiY1bWCp66DGg0ic6OEkZFHTm745zUNQaf2d + NgsxKU0HPGjVLJI//yrRFAOSBUqgD4c50krnMF7fU/Fqh+UyOu8t6Y/HsySh3urB + +Zie331tAzV6QV39KKxRflNx/yuWrtIEslGTm+xHKoCYJEk/nZ3mX8Y5hG6wWAb7 + A/FuDVg3AgMBAAECggEAapt30rj9DitGTtxAt13pJMEhyYxvvD3WkvmJwguF/Bbu + eW0Ba1c668fMeRCA54FWi1sMqusPS4HUqqUvk+tmyAOsAF4qgD/A4MMSC7uJSVI5 + N/JWhJWyhCY94/FPakiO1nbPbVw41bcqtzU2qvparpME2CtxSCbDiqm7aaag3Kqe + EF0fGSUdZ+TYl9JM05+eIyiX+UY19Fg0OjTHMn8nGpxcNTfDBdQ68TKvdo/dtIKL + PLKzJUNNdM8odC4CvQtfGMqaslwZwXkiOl5VJcW21ncj/Y0ngEMKeD/i65ZoqGdR + 0FKCQYEAGtM2FvJcZQ92Wsw7yj2bK2MSegVUyLK32QKBgQDe8syVCepPzRsfjfxA + 6TZlWcGuTZLhwIx97Ktw3VcQ1f4rLoEYlv0xC2VWBORpzIsJo4I/OLmgp8a+Ga8z + FkVRnq90dV3t4NP9uJlHgcODHnOardC2UUka4olBSCG6zmK4Jxi34lOxhGRkshOo + L4IBeOIB5g+ZrEEXkzfYJHESRQKBgQDX2YhFhGIrT8BAnC5BbXbhm8h6Bhjz8DYL + d+qhVJjef7L/aJxViU0hX9Ba2O8CLK3FZeREFE3hJPiJ4TZSlN4evxs5p+bbNDcA + 0mhRI/o3X4ac6IxdRebyYnCOB/Cu94/MzppcZcotlCekKNike7eorCcX4Qavm7Pu + MUuQ+ifmSwKBgEnchoqZzlbBzMqXb4rRuIO7SL9GU/MWp3TQg7vQmJerTZlgvsQ2 + wYsOC3SECmhCq4117iCj2luvOdihCboTFsQDnn0mpQe6BIF6Ns3J38wAuqv0CcFd + DKsrge1uyD3rQilgSoAhKzkUc24o0PpXQurZ8YZPgbuXpbj5vPaOnCdBAoGACYc7 + wb3XS4wos3FxhUfcwJbM4b4VKeeHqzfu7pI6cU/3ydiHVitKcVe2bdw3qMPqI9Wc + nvi6e17Tbdq4OCsEJx1OiVwFD9YdO3cOTc6lw/3+hjypvZBRYo+/4jUthbu96E+S + dtOzehGZMmDvN0uSzupSi3ZOgkAAUFpyuIKickMCgYAId0PCRjonO2thn/R0rZ7P + //L852uyzYhXKw5/fjFGhQ6LbaLgIRFaCZ0L2809u0HFnNvJjHv4AKP6j+vFQYYY + qQ+66XnfsA9G/bu4MDS9AX83iahD9IdLXQAy8I19prAbpVumKegPbMnNYNB/TYEc + 3G15AKCXo7jjOUtHY01DCQ== + -----END PRIVATE KEY----- diff --git a/community/grafana/1.0.0/ix_values.yaml b/community/grafana/1.0.0/ix_values.yaml new file mode 100644 index 0000000000..23a8e3f776 --- /dev/null +++ b/community/grafana/1.0.0/ix_values.yaml @@ -0,0 +1,35 @@ +image: + repository: grafana/grafana + pullPolicy: IfNotPresent + tag: '9.5.3' + +resources: + limits: + cpu: 4000m + memory: 8Gi + +grafanaConfig: + plugins: [] + additionalEnvs: [] + +grafanaNetwork: + hostNetwork: false + webPort: 30037 + certificateID: 0 + rootURL: "" + +grafanaRunAs: + user: 568 + group: 568 + +grafanaStorage: + data: + type: ixVolume + datasetName: data + additionalStorages: [] + +notes: + custom: | + Default credentials: + - Username: admin + - Password: admin diff --git a/community/grafana/1.0.0/metadata.yaml b/community/grafana/1.0.0/metadata.yaml new file mode 100644 index 0000000000..89326176e2 --- /dev/null +++ b/community/grafana/1.0.0/metadata.yaml @@ -0,0 +1,8 @@ +runAsContext: + - userName: grafana + groupName: grafana + gid: 568 + uid: 568 + description: Grafana can run as any non-root user. +capabilities: [] +hostMounts: [] diff --git a/community/grafana/1.0.0/questions.yaml b/community/grafana/1.0.0/questions.yaml new file mode 100644 index 0000000000..7bb353a53e --- /dev/null +++ b/community/grafana/1.0.0/questions.yaml @@ -0,0 +1,254 @@ +groups: + - name: Grafana Configuration + description: Configure Grafana + - name: User and Group Configuration + description: Configure User and Group for Grafana + - name: Network Configuration + description: Configure Network for Grafana + - name: Storage Configuration + description: Configure Storage for Grafana + - name: Resources Configuration + description: Configure Resources for Grafana + +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" + path: "$kubernetes-resource_configmap_portal_path" + +questions: + - variable: grafanaConfig + label: "" + group: Grafana Configuration + schema: + type: dict + attrs: + - variable: plugins + label: Grafana Plugins + description: Configure Grafana plugins to install. + schema: + type: list + default: [] + items: + - variable: plugin + label: Plugin + description: | + The plugin name to install.
+ Example: grafana-piechart-panel
+ Example: grafana-clock-panel 1.0.0 + schema: + type: string + required: true + - variable: additionalEnvs + label: Additional Environment Variables + description: Configure additional environment variables for Grafana. + schema: + type: list + default: [] + items: + - variable: env + label: Environment Variable + schema: + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + + - variable: grafanaRunAs + label: "" + group: User and Group Configuration + schema: + type: dict + attrs: + - variable: user + label: User ID + description: The user id that Grafana will run as. + schema: + type: int + min: 2 + default: 568 + required: true + - variable: group + label: Group ID + description: The group id that Grafana will run as. + schema: + type: int + min: 2 + default: 568 + required: true + + - variable: grafanaNetwork + label: "" + group: Network Configuration + schema: + type: dict + attrs: + - variable: hostNetwork + label: Host Network + description: | + Bind to the host network. It's recommended to keep this disabled.
+ schema: + type: boolean + default: false + - variable: webPort + label: Web Port + description: The port for the Grafana Web UI. + schema: + type: int + default: 30037 + min: 9000 + max: 65535 + required: true + - variable: certificateID + label: Certificate + description: | + The certificate to use for Grafana + schema: + type: int + "null": true + $ref: + - "definitions/certificate" + - variable: rootURL + label: Root URL + description: | + The root URL for Grafana
+ The URL you use to access Grafana
+ Example: https://grafana.example.com:30037
+ Example: https://192.168.1.100:30037
+ schema: + type: string + show_if: [["certificateID", "!=", null]] + default: "" + + - variable: grafanaStorage + label: "" + group: Storage Configuration + schema: + type: dict + attrs: + - variable: data + label: Grafana Data Storage + description: The path to store Grafana Data. + schema: + type: dict + attrs: + - variable: type + label: Type + description: | + ixVolume: Is dataset created automatically by the system.
+ Host Path: Is a path that already exists on the system. + schema: + type: string + required: true + default: "ixVolume" + enum: + - value: "hostPath" + description: Host Path (Path that already exists on the system) + - value: "ixVolume" + description: ixVolume (Dataset created automatically by the system) + - variable: datasetName + label: Dataset Name + schema: + type: string + show_if: [["type", "=", "ixVolume"]] + required: true + hidden: true + immutable: true + default: "data" + $ref: + - "normalize/ixVolume" + - variable: hostPath + label: Host Path + schema: + type: hostpath + show_if: [["type", "=", "hostPath"]] + immutable: true + required: true + - variable: additionalStorages + label: Additional Storage + description: Additional storage for Grafana. + schema: + type: list + default: [] + items: + - variable: storageEntry + label: Storage Entry + schema: + type: dict + attrs: + - variable: type + label: Type + description: | + ixVolume: Is dataset created automatically by the system.
+ Host Path: Is a path that already exists on the system. + schema: + type: string + required: true + default: "ixVolume" + enum: + - value: "hostPath" + description: Host Path (Path that already exists on the system) + - value: "ixVolume" + description: ixVolume (Dataset created automatically by the system) + - variable: mountPath + label: Mount Path + description: The path inside the container to mount the storage. + schema: + type: path + required: true + - variable: hostPath + label: Host Path + description: The host path to use for storage. + schema: + type: hostpath + show_if: [["type", "=", "hostPath"]] + required: true + - variable: datasetName + label: Dataset Name + description: The name of the dataset to use for storage. + schema: + type: string + show_if: [["type", "=", "ixVolume"]] + required: true + immutable: true + default: "storage_entry" + $ref: + - "normalize/ixVolume" + + - variable: resources + group: Resources Configuration + label: "" + schema: + type: dict + attrs: + - variable: limits + label: Limits + schema: + type: dict + attrs: + - variable: cpu + label: CPU + description: CPU limit for Grafana. + schema: + type: string + default: "4000m" + required: true + - variable: memory + label: Memory + description: Memory limit for Grafana. + schema: + type: string + default: "8Gi" + required: true diff --git a/community/grafana/1.0.0/templates/NOTES.txt b/community/grafana/1.0.0/templates/NOTES.txt new file mode 100644 index 0000000000..ba4e01146c --- /dev/null +++ b/community/grafana/1.0.0/templates/NOTES.txt @@ -0,0 +1 @@ +{{ include "ix.v1.common.lib.chart.notes" $ }} diff --git a/community/grafana/1.0.0/templates/_configuration.tpl b/community/grafana/1.0.0/templates/_configuration.tpl new file mode 100644 index 0000000000..c5fff9316e --- /dev/null +++ b/community/grafana/1.0.0/templates/_configuration.tpl @@ -0,0 +1,20 @@ +{{- define "grafana.configuration" -}} +configmap: + grafana-config: + enabled: true + data: + GF_SERVER_HTTP_PORT: {{ .Values.grafanaNetwork.webPort | quote }} + GF_PATHS_DATA: /var/lib/grafana + GF_PATHS_PLUGINS: /var/lib/grafana/plugins + {{- with .Values.grafanaConfig.plugins }} + GF_INSTALL_PLUGINS: {{ join "," . }} + {{- end -}} + {{- if .Values.grafanaNetwork.certificateID }} + GF_SERVER_PROTOCOL: https + GF_SERVER_CERT_FILE: /grafana/certs/tls.crt + GF_SERVER_CERT_KEY: /grafana/certs/tls.key + {{- with .Values.grafanaNetwork.rootURL }} + GF_SERVER_ROOT_URL: {{ . | quote }} + {{- end -}} + {{- end }} +{{- end -}} diff --git a/community/grafana/1.0.0/templates/_grafana.tpl b/community/grafana/1.0.0/templates/_grafana.tpl new file mode 100644 index 0000000000..ca84dae1a9 --- /dev/null +++ b/community/grafana/1.0.0/templates/_grafana.tpl @@ -0,0 +1,124 @@ +{{- define "grafana.workload" -}} +workload: + grafana: + enabled: true + primary: true + type: Deployment + podSpec: + hostNetwork: {{ .Values.grafanaNetwork.hostNetwork }} + containers: + grafana: + enabled: true + primary: true + imageSelector: image + securityContext: + runAsUser: {{ .Values.grafanaRunAs.user }} + runAsGroup: {{ .Values.grafanaRunAs.group }} + envFrom: + - configMapRef: + name: grafana-config + {{ with .Values.grafanaConfig.additionalEnvs }} + envList: + {{ range $env := . }} + - name: {{ $env.name }} + value: {{ $env.value }} + {{ end }} + {{ end }} + probes: + {{ $scheme := "http" }} + {{ if .Values.grafanaNetwork.certificateID }} + {{ $scheme = "https" }} + {{ end }} + liveness: + enabled: true + type: {{ $scheme }} + port: {{ .Values.grafanaNetwork.webPort }} + path: /api/health + readiness: + enabled: true + type: {{ $scheme }} + port: {{ .Values.grafanaNetwork.webPort }} + path: /api/health + startup: + enabled: true + type: {{ $scheme }} + port: {{ .Values.grafanaNetwork.webPort }} + path: /api/health + initContainers: + {{- include "ix.v1.common.app.permissions" (dict "containerName" "01-permissions" + "UID" .Values.grafanaRunAs.user + "GID" .Values.grafanaRunAs.group + "mode" "check" + "type" "init") | nindent 8 }} + +{{/* Service */}} +service: + grafana: + enabled: true + primary: true + type: NodePort + targetSelector: grafana + ports: + webui: + enabled: true + primary: true + port: {{ .Values.grafanaNetwork.webPort }} + nodePort: {{ .Values.grafanaNetwork.webPort }} + targetSelector: grafana + +{{/* Persistence */}} +persistence: + data: + enabled: true + type: {{ .Values.grafanaStorage.data.type }} + datasetName: {{ .Values.grafanaStorage.data.datasetName | default "" }} + hostPath: {{ .Values.grafanaStorage.data.hostPath | default "" }} + targetSelector: + grafana: + grafana: + mountPath: /var/lib/grafana + 01-permissions: + mountPath: /mnt/directories/data + tmp: + enabled: true + type: emptyDir + targetSelector: + grafana: + grafana: + mountPath: /tmp + {{- range $idx, $storage := .Values.grafanaStorage.additionalStorages }} + {{ printf "grafana-%v" (int $idx) }}: + enabled: true + type: {{ $storage.type }} + datasetName: {{ $storage.datasetName | default "" }} + hostPath: {{ $storage.hostPath | default "" }} + targetSelector: + grafana: + grafana: + mountPath: {{ $storage.mountPath }} + 01-permissions: + mountPath: /mnt/directories{{ $storage.mountPath }} + {{- end }} + {{- if .Values.grafanaNetwork.certificateID }} + cert: + enabled: true + type: secret + objectName: grafana-cert + defaultMode: "0600" + items: + - key: tls.key + path: tls.key + - key: tls.crt + path: tls.crt + targetSelector: + grafana: + grafana: + mountPath: /grafana/certs + readOnly: true + +scaleCertificate: + grafana-cert: + enabled: true + id: {{ .Values.grafanaNetwork.certificateID }} + {{- end -}} +{{- end -}} diff --git a/community/grafana/1.0.0/templates/_portal.tpl b/community/grafana/1.0.0/templates/_portal.tpl new file mode 100644 index 0000000000..7aba7358dc --- /dev/null +++ b/community/grafana/1.0.0/templates/_portal.tpl @@ -0,0 +1,22 @@ +{{- define "grafana.portal" -}} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: portal +data: + {{- $host := "$node_ip" -}} + {{- $protocol := "http" -}} + {{- if .Values.grafanaNetwork.certificateID -}} + {{- $protocol = "https" -}} + {{- if .Values.grafanaNetwork.rootURL -}} + {{- $host = .Values.grafanaNetwork.rootURL -}} + {{- $host = ($host | trimPrefix "https://" | trimPrefix "http://" | trimSuffix "/") -}} + {{- $host = (mustRegexReplaceAll "(.*):[0-9]+" $host "${1}") -}} + {{- end -}} + {{- end }} + path: "/" + port: {{ .Values.grafanaNetwork.webPort | quote }} + protocol: {{ $protocol }} + host: {{ $host }} +{{- end -}} diff --git a/community/grafana/1.0.0/templates/common.yaml b/community/grafana/1.0.0/templates/common.yaml new file mode 100644 index 0000000000..706c3beaa3 --- /dev/null +++ b/community/grafana/1.0.0/templates/common.yaml @@ -0,0 +1,10 @@ +{{- include "ix.v1.common.loader.init" . -}} + +{{/* Merge the templates with Values */}} +{{- $_ := mustMergeOverwrite .Values (include "grafana.configuration" $ | fromYaml) -}} +{{- $_ := mustMergeOverwrite .Values (include "grafana.workload" $ | fromYaml) -}} + +{{/* Create the configmap for portal manually*/}} +{{- include "grafana.portal" $ -}} + +{{- include "ix.v1.common.loader.apply" . -}} diff --git a/community/grafana/item.yaml b/community/grafana/item.yaml new file mode 100644 index 0000000000..d0a4a10a52 --- /dev/null +++ b/community/grafana/item.yaml @@ -0,0 +1,11 @@ +icon_url: https://www.gravatar.com/avatar/31cea69afa424609b2d83621b4d47f1d?s=120&r=g&d=404 +categories: + - productivity +screenshots: + - https://grafana.com/static/img/grafana/showcase_visualize.jpg + - https://grafana.com/static/img/screenshots/Modal_dashboards.png +tags: + - analytics + - monitoring + - metrics + - dashboards