From cfdffdb3be9a612bdb633da020d65b0262750667 Mon Sep 17 00:00:00 2001 From: Kjeld Schouten-Lebbing Date: Wed, 29 Sep 2021 15:10:26 +0200 Subject: [PATCH] (feat) add CodeServer addon and addon improvements (#1059) * simplify addons to not require manually entered volumemounts, just mount them all. * simplify addons * cleanup promtail and codeserver * fix mistake in codeserver * try to add codeserver runtest * add netshoot runtest * fix codeserver ports * different codeserver port for integrationt est * bump common --- .../common-test/ci/codeserver-values.yaml | 89 +++++++++ .../common-test/ci/netshoot-values.yaml | 84 +++++++++ charts/library/common/Chart.yaml | 2 +- .../addons/code-server/_container.tpl | 14 +- .../templates/addons/netshoot/_container.tpl | 9 +- .../templates/addons/promtail/_container.tpl | 13 +- .../addons/vpn/openvpn/_container.tpl | 3 - .../addons/vpn/wireguard/_container.tpl | 3 - charts/library/common/values.yaml | 30 +-- docs/manual/default-ports.md | 2 + templates/questions/addons.yaml | 176 +++++++++++++----- tests/library/common/addon_codeserver_spec.rb | 41 +--- tests/library/common/addon_promtail_spec.rb | 9 +- 13 files changed, 326 insertions(+), 149 deletions(-) create mode 100644 charts/library/common-test/ci/codeserver-values.yaml create mode 100644 charts/library/common-test/ci/netshoot-values.yaml diff --git a/charts/library/common-test/ci/codeserver-values.yaml b/charts/library/common-test/ci/codeserver-values.yaml new file mode 100644 index 00000000000..a33c592794a --- /dev/null +++ b/charts/library/common-test/ci/codeserver-values.yaml @@ -0,0 +1,89 @@ +image: + repository: traefik/whoami + pullPolicy: IfNotPresent + tag: v1.6.1@sha256:2c52bb2c848038a33e40415c300b655d7976bafaf033ecf4a6679cb9e1715917 + +service: + main: + ports: + main: + port: 8080 + +args: + - --port + - '8080' + +ingress: + main: + enabled: true + +probes: + liveness: + enabled: true + readiness: + enabled: true + startup: + enabled: true + +addons: + codeserver: + enabled: true + service: + type: NodePort + ports: + codeserver: + nodePort: 30067 + +"ixCertificateAuthorities": {} +"ixCertificates": + "1": + "CA_type_existing": false + "CA_type_intermediate": false + "CA_type_internal": false + "CSR": "" + "DN": "/C=US/O=iXsystems/CN=localhost/emailAddress=info@ixsystems.com/ST=Tennessee/L=Maryville/subjectAltName=DNS:localhost" + "cert_type": "CERTIFICATE" + "cert_type_CSR": false + "cert_type_existing": true + "cert_type_internal": false + "certificate": "-----BEGIN CERTIFICATE-----\nMIIDqjCCApKgAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgDELMAkGA1UEBhMCVVMx\nEjAQBgNVBAoMCWlYc3lzdGVtczESMBAGA1UEAwwJbG9jYWxob3N0MSEwHwYJKoZI\nhvcNAQkBFhJpbmZvQGl4c3lzdGVtcy5jb20xEjAQBgNVBAgMCVRlbm5lc3NlZTES\nMBAGA1UEBwwJTWFyeXZpbGxlMB4XDTIwMDkyNTE0MDUzOFoXDTIyMTIyOTE0MDUz\nOFowgYAxCzAJBgNVBAYTAlVTMRIwEAYDVQQKDAlpWHN5c3RlbXMxEjAQBgNVBAMM\nCWxvY2FsaG9zdDEhMB8GCSqGSIb3DQEJARYSaW5mb0BpeHN5c3RlbXMuY29tMRIw\nEAYDVQQIDAlUZW5uZXNzZWUxEjAQBgNVBAcMCU1hcnl2aWxsZTCCASIwDQYJKoZI\nhvcNAQEBBQADggEPADCCAQoCggEBALpoGliii6X8DeoFdLcR7jjsfJIn3nC8f1pT\nLQ3RURHUOEyhPT3Z6TkhaHeHoj8D6kiXROhyJJq3kw5OeqGZisfpGQhkxjpxkfh9\nfAhlvhuLwCWHaMvSh1TaT+h9+eHfcx3un5CIaH8b1KYRBMH+jmKFpr7jkPNkBXLS\nMA7jKIIa8pD9R6lF4gAsbqJafCbT3R7bqkd9xp3n3j2YhqQzETU2lmu4fra3BPio\nofK47kSkguUC6mtk6VrDf2+QtCKlY0dtbF3e2ZBNWo1aj86sjCtoEmqOCMsPRLc/\nXwQcfEqHY4XfafXwqk0G0UxV2ce18xKoR/pN3MpLBZ65NzPnpn0CAwEAAaMtMCsw\nFAYDVR0RBA0wC4IJbG9jYWxob3N0MBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqG\nSIb3DQEBCwUAA4IBAQBFW1R037y7wllg/gRk9p2T1stiG8iIXosblmL4Ak1YToTQ\n/0to5GY2ZYW29+rbA4SDTS5eeu2YqZ0A/fF3wey7ggzMS7KyNBOvx5QBJRw3PJGn\n+THfhXvdfkOyeUC6KWRGLgl+/zBFvgh6vFDq3jmv0NI4ehVBTBMCJn7r6577S16T\nwtgKMCooizII0Odu5HIF10gTieFIH3PQYm9JBji9iyemb9Ht3wn7fXQptfGadz/l\nWz/Dv9+a6IOr7JVJMHnqAIvPzpkav4efuVPOX1zbhjg4K5g+nRYfjr5F5upOd0Y3\nznWTUBUyI7CXRkpHtSDXfEqKgnk/8uv7GWw+hyKr\n-----END CERTIFICATE-----\n" + "certificate_path": "/etc/certificates/freenas_default.crt" + "chain": false + "chain_list": [ + "-----BEGIN CERTIFICATE-----\nMIIDqjCCApKgAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgDELMAkGA1UEBhMCVVMx\nEjAQBgNVBAoMCWlYc3lzdGVtczESMBAGA1UEAwwJbG9jYWxob3N0MSEwHwYJKoZI\nhvcNAQkBFhJpbmZvQGl4c3lzdGVtcy5jb20xEjAQBgNVBAgMCVRlbm5lc3NlZTES\nMBAGA1UEBwwJTWFyeXZpbGxlMB4XDTIwMDkyNTE0MDUzOFoXDTIyMTIyOTE0MDUz\nOFowgYAxCzAJBgNVBAYTAlVTMRIwEAYDVQQKDAlpWHN5c3RlbXMxEjAQBgNVBAMM\nCWxvY2FsaG9zdDEhMB8GCSqGSIb3DQEJARYSaW5mb0BpeHN5c3RlbXMuY29tMRIw\nEAYDVQQIDAlUZW5uZXNzZWUxEjAQBgNVBAcMCU1hcnl2aWxsZTCCASIwDQYJKoZI\nhvcNAQEBBQADggEPADCCAQoCggEBALpoGliii6X8DeoFdLcR7jjsfJIn3nC8f1pT\nLQ3RURHUOEyhPT3Z6TkhaHeHoj8D6kiXROhyJJq3kw5OeqGZisfpGQhkxjpxkfh9\nfAhlvhuLwCWHaMvSh1TaT+h9+eHfcx3un5CIaH8b1KYRBMH+jmKFpr7jkPNkBXLS\nMA7jKIIa8pD9R6lF4gAsbqJafCbT3R7bqkd9xp3n3j2YhqQzETU2lmu4fra3BPio\nofK47kSkguUC6mtk6VrDf2+QtCKlY0dtbF3e2ZBNWo1aj86sjCtoEmqOCMsPRLc/\nXwQcfEqHY4XfafXwqk0G0UxV2ce18xKoR/pN3MpLBZ65NzPnpn0CAwEAAaMtMCsw\nFAYDVR0RBA0wC4IJbG9jYWxob3N0MBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqG\nSIb3DQEBCwUAA4IBAQBFW1R037y7wllg/gRk9p2T1stiG8iIXosblmL4Ak1YToTQ\n/0to5GY2ZYW29+rbA4SDTS5eeu2YqZ0A/fF3wey7ggzMS7KyNBOvx5QBJRw3PJGn\n+THfhXvdfkOyeUC6KWRGLgl+/zBFvgh6vFDq3jmv0NI4ehVBTBMCJn7r6577S16T\nwtgKMCooizII0Odu5HIF10gTieFIH3PQYm9JBji9iyemb9Ht3wn7fXQptfGadz/l\nWz/Dv9+a6IOr7JVJMHnqAIvPzpkav4efuVPOX1zbhjg4K5g+nRYfjr5F5upOd0Y3\nznWTUBUyI7CXRkpHtSDXfEqKgnk/8uv7GWw+hyKr\n-----END CERTIFICATE-----\n" + ] + "city": "Maryville" + "common": "localhost" + "country": "US" + "csr_path": "/etc/certificates/freenas_default.csr" + "digest_algorithm": "SHA256" + "email": "info@ixsystems.com" + "extensions": + "ExtendedKeyUsage": "TLS Web Server Authentication" + "SubjectAltName": "DNS:localhost" + "fingerprint": "9C:5A:1D:1B:E7:9E:0B:89:2B:37:F4:19:83:ED:3C:6B:D8:14:0D:9B" + "from": "Fri Sep 25 16:05:38 2020" + "id": 1 + "internal": "NO" + "issuer": "external" + "key_length": 2048 + "key_type": "RSA" + "lifetime": 825 + "name": "freenas_default" + "organization": "iXsystems" + "organizational_unit": "" + "parsed": true + "privatekey": "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC6aBpYooul/A3q\nBXS3Ee447HySJ95wvH9aUy0N0VER1DhMoT092ek5IWh3h6I/A+pIl0TociSat5MO\nTnqhmYrH6RkIZMY6cZH4fXwIZb4bi8Alh2jL0odU2k/offnh33Md7p+QiGh/G9Sm\nEQTB/o5ihaa+45DzZAVy0jAO4yiCGvKQ/UepReIALG6iWnwm090e26pHfcad5949\nmIakMxE1NpZruH62twT4qKHyuO5EpILlAuprZOlaw39vkLQipWNHbWxd3tmQTVqN\nWo/OrIwraBJqjgjLD0S3P18EHHxKh2OF32n18KpNBtFMVdnHtfMSqEf6TdzKSwWe\nuTcz56Z9AgMBAAECggEARwcb4uIs7BZbBu0FSCyg5TfXT6m5bKOmszg2VqmHho+i\n1DAsMcEyyP4d3E3mWLSZNQfOzfOQVxPUCQOGXsUuyHXdgAFGN0bHJDRMara59a0O\njj5GhEO4JXD6OdCmwpZuOt2OF3iiuKxWHuElOvZQMuJSYzI7LULTgKjufv23lbsf\nxMO/v9yi57c5EGgnQ8siLKOy/FQZapn4Z9qKn+lVyk5gfaKP0pDsvV4d7nGYMDD2\nYijfkSyNecApFdtWiLE5zLUlvF6oNj8o66z3YrVNKrCPzhA/5Rkkwwk32SNxvKU3\nVZFSNPeOZ60BicxYcWO+b2aAa0WF+uazJAZ4q52gUQKBgQDu88R+0wm76secYkzE\nQglteLNZKFcvth0kI5xH42Hmk9IXkGimFoDJCIrLAuopyGnfNmqmh2is3QUMUPdR\n/wDLnKc4MCezEidNoD2RBC+bzM1hB9oye/b5sOZUDFXSa0k4XSLu1UEuy1yWhkuS\n6JjY1KQfc4FN0K0Fjqqo7UCTCwKBgQDHtKQh/NvMJ2ok4YW+/QAsus4mEK9eCyUy\nOuyDszQYrGvjkS7STKJVNxGLhWb0XKSIAxMZ66b1MwOt+71h7xNn6pcancfVdK7F\n1Xl5J+76SwbXSgQwTZuoMDxPIvZn7v/2ep5Ni/BcOhMcPIcobWb/OmXrFN1brBvo\nlFNQyWWhlwKBgFDAyPMjVvLO0U6kWdUpjA4W8GV9IJnbLdX8wt/4lClcY2/bOcKH\ncFaAMIeTIJemR0FMHpbQxCtHNmGHK03mo9orwsdWXtRBmk69jJDpnT1F5VKZWMAe\n7MRNaEmXMZm+8CvALgIQx8qMp2mnUPsA6Ea+9gg6/MPTdeWe5UXZiC0pAoGAGtSt\nPJfBXBNrklruYjORo3DRo5GYThVHQRFjl2orNKltsVxfIwgCw1ortEgPBgOwY0mu\ndkwP2V+qPeTVk+PQAqUk+gF6yLXtiUzeDiYMWHpeB+y81VSH9jfM0oELA/m7T/03\naYnEmE+BI8kKC6dvMBlDeisKdneQJFZRP0hfrC8CgYEAgYIyCGwcydKpe2Nkj0Fz\nKTtCMC/k4DvJfd5Kb9AbmrPUfKgA9Xj4GT6yPG6uBMi8r5etvLCKJ2x2NtN024a8\nQJLATYPrSsaZkE+9zM0j5nYAgbKpxBhlDzDAzn//3ByVzfgJ25S80XhTI2lfbLH/\nU07ssxdZaQCo+WuD82OvNcg=\n-----END PRIVATE KEY-----\n" + "privatekey_path": "/etc/certificates/freenas_default.key" + "revoked": false + "revoked_date": "" + "root_path": "/etc/certificates" + "san": [ + "DNS:localhost" + ] + "serial": 1 + "signedby": "" + "state": "Tennessee" + "subject_name_hash": 3193428416 + "type": 8 + "until": "Thu Dec 29 15:05:38 2022" diff --git a/charts/library/common-test/ci/netshoot-values.yaml b/charts/library/common-test/ci/netshoot-values.yaml new file mode 100644 index 00000000000..7a32cc235b1 --- /dev/null +++ b/charts/library/common-test/ci/netshoot-values.yaml @@ -0,0 +1,84 @@ +image: + repository: traefik/whoami + pullPolicy: IfNotPresent + tag: v1.6.1@sha256:2c52bb2c848038a33e40415c300b655d7976bafaf033ecf4a6679cb9e1715917 + +service: + main: + ports: + main: + port: 8080 + +args: + - --port + - '8080' + +ingress: + main: + enabled: true + +probes: + liveness: + enabled: true + readiness: + enabled: true + startup: + enabled: true + +addons: + netshoot: + enabled: true + +"ixCertificateAuthorities": {} +"ixCertificates": + "1": + "CA_type_existing": false + "CA_type_intermediate": false + "CA_type_internal": false + "CSR": "" + "DN": "/C=US/O=iXsystems/CN=localhost/emailAddress=info@ixsystems.com/ST=Tennessee/L=Maryville/subjectAltName=DNS:localhost" + "cert_type": "CERTIFICATE" + "cert_type_CSR": false + "cert_type_existing": true + "cert_type_internal": false + "certificate": "-----BEGIN CERTIFICATE-----\nMIIDqjCCApKgAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgDELMAkGA1UEBhMCVVMx\nEjAQBgNVBAoMCWlYc3lzdGVtczESMBAGA1UEAwwJbG9jYWxob3N0MSEwHwYJKoZI\nhvcNAQkBFhJpbmZvQGl4c3lzdGVtcy5jb20xEjAQBgNVBAgMCVRlbm5lc3NlZTES\nMBAGA1UEBwwJTWFyeXZpbGxlMB4XDTIwMDkyNTE0MDUzOFoXDTIyMTIyOTE0MDUz\nOFowgYAxCzAJBgNVBAYTAlVTMRIwEAYDVQQKDAlpWHN5c3RlbXMxEjAQBgNVBAMM\nCWxvY2FsaG9zdDEhMB8GCSqGSIb3DQEJARYSaW5mb0BpeHN5c3RlbXMuY29tMRIw\nEAYDVQQIDAlUZW5uZXNzZWUxEjAQBgNVBAcMCU1hcnl2aWxsZTCCASIwDQYJKoZI\nhvcNAQEBBQADggEPADCCAQoCggEBALpoGliii6X8DeoFdLcR7jjsfJIn3nC8f1pT\nLQ3RURHUOEyhPT3Z6TkhaHeHoj8D6kiXROhyJJq3kw5OeqGZisfpGQhkxjpxkfh9\nfAhlvhuLwCWHaMvSh1TaT+h9+eHfcx3un5CIaH8b1KYRBMH+jmKFpr7jkPNkBXLS\nMA7jKIIa8pD9R6lF4gAsbqJafCbT3R7bqkd9xp3n3j2YhqQzETU2lmu4fra3BPio\nofK47kSkguUC6mtk6VrDf2+QtCKlY0dtbF3e2ZBNWo1aj86sjCtoEmqOCMsPRLc/\nXwQcfEqHY4XfafXwqk0G0UxV2ce18xKoR/pN3MpLBZ65NzPnpn0CAwEAAaMtMCsw\nFAYDVR0RBA0wC4IJbG9jYWxob3N0MBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqG\nSIb3DQEBCwUAA4IBAQBFW1R037y7wllg/gRk9p2T1stiG8iIXosblmL4Ak1YToTQ\n/0to5GY2ZYW29+rbA4SDTS5eeu2YqZ0A/fF3wey7ggzMS7KyNBOvx5QBJRw3PJGn\n+THfhXvdfkOyeUC6KWRGLgl+/zBFvgh6vFDq3jmv0NI4ehVBTBMCJn7r6577S16T\nwtgKMCooizII0Odu5HIF10gTieFIH3PQYm9JBji9iyemb9Ht3wn7fXQptfGadz/l\nWz/Dv9+a6IOr7JVJMHnqAIvPzpkav4efuVPOX1zbhjg4K5g+nRYfjr5F5upOd0Y3\nznWTUBUyI7CXRkpHtSDXfEqKgnk/8uv7GWw+hyKr\n-----END CERTIFICATE-----\n" + "certificate_path": "/etc/certificates/freenas_default.crt" + "chain": false + "chain_list": [ + "-----BEGIN CERTIFICATE-----\nMIIDqjCCApKgAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgDELMAkGA1UEBhMCVVMx\nEjAQBgNVBAoMCWlYc3lzdGVtczESMBAGA1UEAwwJbG9jYWxob3N0MSEwHwYJKoZI\nhvcNAQkBFhJpbmZvQGl4c3lzdGVtcy5jb20xEjAQBgNVBAgMCVRlbm5lc3NlZTES\nMBAGA1UEBwwJTWFyeXZpbGxlMB4XDTIwMDkyNTE0MDUzOFoXDTIyMTIyOTE0MDUz\nOFowgYAxCzAJBgNVBAYTAlVTMRIwEAYDVQQKDAlpWHN5c3RlbXMxEjAQBgNVBAMM\nCWxvY2FsaG9zdDEhMB8GCSqGSIb3DQEJARYSaW5mb0BpeHN5c3RlbXMuY29tMRIw\nEAYDVQQIDAlUZW5uZXNzZWUxEjAQBgNVBAcMCU1hcnl2aWxsZTCCASIwDQYJKoZI\nhvcNAQEBBQADggEPADCCAQoCggEBALpoGliii6X8DeoFdLcR7jjsfJIn3nC8f1pT\nLQ3RURHUOEyhPT3Z6TkhaHeHoj8D6kiXROhyJJq3kw5OeqGZisfpGQhkxjpxkfh9\nfAhlvhuLwCWHaMvSh1TaT+h9+eHfcx3un5CIaH8b1KYRBMH+jmKFpr7jkPNkBXLS\nMA7jKIIa8pD9R6lF4gAsbqJafCbT3R7bqkd9xp3n3j2YhqQzETU2lmu4fra3BPio\nofK47kSkguUC6mtk6VrDf2+QtCKlY0dtbF3e2ZBNWo1aj86sjCtoEmqOCMsPRLc/\nXwQcfEqHY4XfafXwqk0G0UxV2ce18xKoR/pN3MpLBZ65NzPnpn0CAwEAAaMtMCsw\nFAYDVR0RBA0wC4IJbG9jYWxob3N0MBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqG\nSIb3DQEBCwUAA4IBAQBFW1R037y7wllg/gRk9p2T1stiG8iIXosblmL4Ak1YToTQ\n/0to5GY2ZYW29+rbA4SDTS5eeu2YqZ0A/fF3wey7ggzMS7KyNBOvx5QBJRw3PJGn\n+THfhXvdfkOyeUC6KWRGLgl+/zBFvgh6vFDq3jmv0NI4ehVBTBMCJn7r6577S16T\nwtgKMCooizII0Odu5HIF10gTieFIH3PQYm9JBji9iyemb9Ht3wn7fXQptfGadz/l\nWz/Dv9+a6IOr7JVJMHnqAIvPzpkav4efuVPOX1zbhjg4K5g+nRYfjr5F5upOd0Y3\nznWTUBUyI7CXRkpHtSDXfEqKgnk/8uv7GWw+hyKr\n-----END CERTIFICATE-----\n" + ] + "city": "Maryville" + "common": "localhost" + "country": "US" + "csr_path": "/etc/certificates/freenas_default.csr" + "digest_algorithm": "SHA256" + "email": "info@ixsystems.com" + "extensions": + "ExtendedKeyUsage": "TLS Web Server Authentication" + "SubjectAltName": "DNS:localhost" + "fingerprint": "9C:5A:1D:1B:E7:9E:0B:89:2B:37:F4:19:83:ED:3C:6B:D8:14:0D:9B" + "from": "Fri Sep 25 16:05:38 2020" + "id": 1 + "internal": "NO" + "issuer": "external" + "key_length": 2048 + "key_type": "RSA" + "lifetime": 825 + "name": "freenas_default" + "organization": "iXsystems" + "organizational_unit": "" + "parsed": true + "privatekey": "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC6aBpYooul/A3q\nBXS3Ee447HySJ95wvH9aUy0N0VER1DhMoT092ek5IWh3h6I/A+pIl0TociSat5MO\nTnqhmYrH6RkIZMY6cZH4fXwIZb4bi8Alh2jL0odU2k/offnh33Md7p+QiGh/G9Sm\nEQTB/o5ihaa+45DzZAVy0jAO4yiCGvKQ/UepReIALG6iWnwm090e26pHfcad5949\nmIakMxE1NpZruH62twT4qKHyuO5EpILlAuprZOlaw39vkLQipWNHbWxd3tmQTVqN\nWo/OrIwraBJqjgjLD0S3P18EHHxKh2OF32n18KpNBtFMVdnHtfMSqEf6TdzKSwWe\nuTcz56Z9AgMBAAECggEARwcb4uIs7BZbBu0FSCyg5TfXT6m5bKOmszg2VqmHho+i\n1DAsMcEyyP4d3E3mWLSZNQfOzfOQVxPUCQOGXsUuyHXdgAFGN0bHJDRMara59a0O\njj5GhEO4JXD6OdCmwpZuOt2OF3iiuKxWHuElOvZQMuJSYzI7LULTgKjufv23lbsf\nxMO/v9yi57c5EGgnQ8siLKOy/FQZapn4Z9qKn+lVyk5gfaKP0pDsvV4d7nGYMDD2\nYijfkSyNecApFdtWiLE5zLUlvF6oNj8o66z3YrVNKrCPzhA/5Rkkwwk32SNxvKU3\nVZFSNPeOZ60BicxYcWO+b2aAa0WF+uazJAZ4q52gUQKBgQDu88R+0wm76secYkzE\nQglteLNZKFcvth0kI5xH42Hmk9IXkGimFoDJCIrLAuopyGnfNmqmh2is3QUMUPdR\n/wDLnKc4MCezEidNoD2RBC+bzM1hB9oye/b5sOZUDFXSa0k4XSLu1UEuy1yWhkuS\n6JjY1KQfc4FN0K0Fjqqo7UCTCwKBgQDHtKQh/NvMJ2ok4YW+/QAsus4mEK9eCyUy\nOuyDszQYrGvjkS7STKJVNxGLhWb0XKSIAxMZ66b1MwOt+71h7xNn6pcancfVdK7F\n1Xl5J+76SwbXSgQwTZuoMDxPIvZn7v/2ep5Ni/BcOhMcPIcobWb/OmXrFN1brBvo\nlFNQyWWhlwKBgFDAyPMjVvLO0U6kWdUpjA4W8GV9IJnbLdX8wt/4lClcY2/bOcKH\ncFaAMIeTIJemR0FMHpbQxCtHNmGHK03mo9orwsdWXtRBmk69jJDpnT1F5VKZWMAe\n7MRNaEmXMZm+8CvALgIQx8qMp2mnUPsA6Ea+9gg6/MPTdeWe5UXZiC0pAoGAGtSt\nPJfBXBNrklruYjORo3DRo5GYThVHQRFjl2orNKltsVxfIwgCw1ortEgPBgOwY0mu\ndkwP2V+qPeTVk+PQAqUk+gF6yLXtiUzeDiYMWHpeB+y81VSH9jfM0oELA/m7T/03\naYnEmE+BI8kKC6dvMBlDeisKdneQJFZRP0hfrC8CgYEAgYIyCGwcydKpe2Nkj0Fz\nKTtCMC/k4DvJfd5Kb9AbmrPUfKgA9Xj4GT6yPG6uBMi8r5etvLCKJ2x2NtN024a8\nQJLATYPrSsaZkE+9zM0j5nYAgbKpxBhlDzDAzn//3ByVzfgJ25S80XhTI2lfbLH/\nU07ssxdZaQCo+WuD82OvNcg=\n-----END PRIVATE KEY-----\n" + "privatekey_path": "/etc/certificates/freenas_default.key" + "revoked": false + "revoked_date": "" + "root_path": "/etc/certificates" + "san": [ + "DNS:localhost" + ] + "serial": 1 + "signedby": "" + "state": "Tennessee" + "subject_name_hash": 3193428416 + "type": 8 + "until": "Thu Dec 29 15:05:38 2022" diff --git a/charts/library/common/Chart.yaml b/charts/library/common/Chart.yaml index a0d3c5b5f2d..df3182896b9 100644 --- a/charts/library/common/Chart.yaml +++ b/charts/library/common/Chart.yaml @@ -15,4 +15,4 @@ maintainers: name: common sources: null type: library -version: 8.0.11 +version: 8.0.12 diff --git a/charts/library/common/templates/addons/code-server/_container.tpl b/charts/library/common/templates/addons/code-server/_container.tpl index 652cb5906ad..473b7d2387c 100644 --- a/charts/library/common/templates/addons/code-server/_container.tpl +++ b/charts/library/common/templates/addons/code-server/_container.tpl @@ -2,16 +2,12 @@ The code-server sidecar container to be inserted. */}} {{- define "common.addon.codeserver.container" -}} -{{- if lt (len .Values.addons.codeserver.volumeMounts) 1 }} -{{- fail "At least 1 volumeMount is required for codeserver container" }} -{{- end -}} name: codeserver image: "{{ .Values.codeserverImage.repository }}:{{ .Values.codeserverImage.tag }}" imagePullPolicy: {{ .Values.codeserverImage.pullPolicy }} -{{- with .Values.addons.codeserver.securityContext }} securityContext: - {{- toYaml . | nindent 2 }} -{{- end }} + runAsUser: 0 + runAsGroup: 0 env: {{- range $envList := .Values.addons.codeserver.envList }} {{- if and $envList.name $envList.value }} @@ -37,10 +33,10 @@ args: {{- end }} - "--port" - "{{ .Values.addons.codeserver.service.ports.codeserver.port }}" -- {{ .Values.addons.codeserver.workingDir | default (first .Values.addons.codeserver.volumeMounts).mountPath }} +- {{ .Values.addons.codeserver.workingDir | default "/" }} +{{- with (include "common.controller.volumeMounts" . | trim) }} volumeMounts: -{{- with .Values.addons.codeserver.volumeMounts }} - {{- toYaml . | nindent 2 }} + {{ nindent 2 . }} {{- end }} {{- if or .Values.addons.codeserver.git.deployKey .Values.addons.codeserver.git.deployKeyBase64 .Values.addons.codeserver.git.deployKeySecret }} - name: deploykey diff --git a/charts/library/common/templates/addons/netshoot/_container.tpl b/charts/library/common/templates/addons/netshoot/_container.tpl index 2d3d46f5525..33eae63f967 100644 --- a/charts/library/common/templates/addons/netshoot/_container.tpl +++ b/charts/library/common/templates/addons/netshoot/_container.tpl @@ -5,10 +5,13 @@ The netshoot sidecar container to be inserted. name: netshoot image: "{{ .Values.netshootImage.repository }}:{{ .Values.netshootImage.tag }}" imagePullPolicy: {{ .Values.netshootImage.pullPolicy }} -{{- with .Values.addons.netshoot.securityContext }} + securityContext: - {{- toYaml . | nindent 2 }} -{{- end }} + runAsUser: 0 + runAsGroup: 0 + capabilities: + add: + - NET_ADMIN env: {{- range $envList := .Values.addons.netshoot.envList }} diff --git a/charts/library/common/templates/addons/promtail/_container.tpl b/charts/library/common/templates/addons/promtail/_container.tpl index fefb3b28909..dda74a07b15 100644 --- a/charts/library/common/templates/addons/promtail/_container.tpl +++ b/charts/library/common/templates/addons/promtail/_container.tpl @@ -2,16 +2,13 @@ The promtail sidecar container to be inserted. */}} {{- define "common.addon.promtail.container" -}} -{{- if lt (len .Values.addons.promtail.volumeMounts) 1 }} -{{- fail "At least 1 volumeMount is required for the promtail container" }} -{{- end -}} name: promtail image: "{{ .Values.promtailImage.repository }}:{{ .Values.promtailImage.tag }}" imagePullPolicy: {{ .Values.promtailImage.pullPolicy }} -{{- with .Values.addons.promtail.securityContext }} + securityContext: - {{- toYaml . | nindent 2 }} -{{- end }} + runAsUser: 0 + runAsGroup: 0 env: {{- range $envList := .Values.addons.promtail.envList }} @@ -38,8 +35,8 @@ volumeMounts: mountPath: /etc/promtail/promtail.yaml subPath: promtail.yaml readOnly: true -{{- with .Values.addons.promtail.volumeMounts }} - {{- toYaml . | nindent 2 }} +{{- with (include "common.controller.volumeMounts" . | trim) }} + {{ nindent 2 . }} {{- end }} {{- with .Values.addons.promtail.resources }} resources: diff --git a/charts/library/common/templates/addons/vpn/openvpn/_container.tpl b/charts/library/common/templates/addons/vpn/openvpn/_container.tpl index 07cf5ff9c13..1470e0625f1 100644 --- a/charts/library/common/templates/addons/vpn/openvpn/_container.tpl +++ b/charts/library/common/templates/addons/vpn/openvpn/_container.tpl @@ -12,9 +12,6 @@ securityContext: add: - NET_ADMIN - SYS_MODULE -{{- with .Values.addons.vpn.securityContext }} - {{- toYaml . | nindent 2 }} -{{- end }} env: {{- range $envList := .Values.addons.vpn.envList }} {{- if and $envList.name $envList.value }} diff --git a/charts/library/common/templates/addons/vpn/wireguard/_container.tpl b/charts/library/common/templates/addons/vpn/wireguard/_container.tpl index 1aa589fa3c7..6689f70ba9e 100644 --- a/charts/library/common/templates/addons/vpn/wireguard/_container.tpl +++ b/charts/library/common/templates/addons/vpn/wireguard/_container.tpl @@ -12,9 +12,6 @@ securityContext: add: - NET_ADMIN - SYS_MODULE -{{- with .Values.addons.vpn.securityContext }} - {{- toYaml . | nindent 2 }} -{{- end }} env: - name: SEPARATOR value: ";" diff --git a/charts/library/common/values.yaml b/charts/library/common/values.yaml index e520318e05d..1ced4497732 100644 --- a/charts/library/common/values.yaml +++ b/charts/library/common/values.yaml @@ -764,15 +764,9 @@ addons: # - --user-data-dir # - "/config/.vscode" - # -- Specify a list of volumes that get mounted in the code-server container. - # At least 1 volumeMount is required! - volumeMounts: [] - # - name: config - # mountPath: /data/config - # -- Specify the working dir that will be opened when code-server starts # If not given, the app will default to the mountpah of the first specified volumeMount - workingDir: "" + workingDir: "/" # -- Optionally allow access a Git repository by passing in a private SSH key # @default -- See below @@ -799,16 +793,13 @@ addons: ## Specify the nodePort value for the LoadBalancer and NodePort service types. ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport ## - # nodePort: - annotations: {} - labels: {} + # nodePort: 36107 ingress: # -- Enable an ingress for the code-server add-on. enabled: false annotations: {} # kubernetes.io/ingress.class: nginx - # kubernetes.io/tls-acme: "true" labels: {} hosts: - host: code.chart-example.local @@ -817,12 +808,7 @@ addons: # Ignored if not kubeVersion >= 1.14-0 pathType: Prefix tls: [] - # - secretName: chart-example-tls - # hosts: - # - code.chart-example.local - securityContext: - runAsUser: 0 # -- The common library supports adding a promtail add-on to to access logs and ship them to loki. It can be configured under this key. # @default -- See values.yaml @@ -845,13 +831,6 @@ addons: # - name: log # path: /config/logs/*.log - # -- Specify a list of volumes that get mounted in the promtail container. - # At least 1 volumeMount is required! - volumeMounts: [] - # - name: config - # mountPath: /config - # readOnly: true - securityContext: runAsUser: 0 @@ -868,8 +847,3 @@ addons: envList: [] #- name: someenv # value: somevalue - - securityContext: - capabilities: - add: - - NET_ADMIN diff --git a/docs/manual/default-ports.md b/docs/manual/default-ports.md index 5a3f3770a07..e2c6fc66e5f 100644 --- a/docs/manual/default-ports.md +++ b/docs/manual/default-ports.md @@ -126,5 +126,7 @@ These defaults can ofcoarse be changed, but as we guarantee "sane, working defau | teamspeak3 | main | 36104 | | | | teamspeak3 | query | 36105 | | | | teamspeak3 | files | 36106 | | | +| CodeServer | ADDON | 36107 | | | + #### Note: TCP and UPD ports that are the same in each App, are not by mistake. diff --git a/templates/questions/addons.yaml b/templates/questions/addons.yaml index 7ccd6bb4fa5..f45c7cf3e6c 100644 --- a/templates/questions/addons.yaml +++ b/templates/questions/addons.yaml @@ -134,8 +134,8 @@ type: string required: true - - variable: promtail - label: "Promtail" + - variable: codeserver + label: "Codeserver" schema: type: dict attrs: @@ -146,18 +146,81 @@ default: false show_subquestions_if: true subquestions: + - variable: git + label: "Git Settings" + schema: + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + type: dict + attrs: + - variable: codeserver + label: "" + schema: + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 - variable: envList - label: "Promtail environment Variables" + label: "Codeserver environment Variables" schema: type: list show_if: [["type", "!=", "disabled"]] default: [] items: - - variable: loki - label: "Loki URL" - schema: - type: string - required: true - variable: envItem label: "Environment Variable" schema: @@ -173,20 +236,61 @@ schema: type: string required: true - - variable: args - label: "Promtail ecommand line arguments" + + + - variable: promtail + label: "Promtail" + schema: + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + type: dict + attrs: + - variable: name + label: "Name" schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: arg - label: "Arg" - schema: - type: string - required: true - - variable: logs - label: "Log Paths" + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" schema: type: dict attrs: @@ -195,34 +299,14 @@ schema: type: string required: true - - variable: path - label: "Path" + - variable: value + label: "Value" schema: type: string required: true - - variable: volumeMounts - label: "volumeMounts" - description: "At least 1 volumeMount is required!" - schema: - type: dict - attrs: - - variable: name - label: "Name" - schema: - type: string - required: true - - variable: mountPath - label: "mountPath" - schema: - type: string - required: true - - variable: readOnly - label: "readOnly" - schema: - type: boolean - required: true - default: true - hidden: true + + + - variable: netshoot label: "Netshoot" diff --git a/tests/library/common/addon_codeserver_spec.rb b/tests/library/common/addon_codeserver_spec.rb index dde34209530..04362dc8668 100644 --- a/tests/library/common/addon_codeserver_spec.rb +++ b/tests/library/common/addon_codeserver_spec.rb @@ -9,13 +9,7 @@ class Test < ChartTest baseValues = { addons: { codeserver: { - enabled: true, - volumeMounts: [ - { - name: "config", - mountPath: "/data/config" - } - ] + enabled: true } } } @@ -110,39 +104,6 @@ class Test < ChartTest refute_nil(deploykeyVolume) assert_equal("common-test-deploykey", deploykeyVolume["secret"]["secretName"]) end - - it 'an existing secret can be passed as a git deployKey' do - values = baseValues.deep_merge_override({ - addons: { - codeserver: { - git: { - deployKeySecret: "existingSecret" - } - } - } - }) - - chart.value values - deployment = chart.resources(kind: "Deployment").first - secret = chart.resources(kind: "Secret").first - containers = deployment["spec"]["template"]["spec"]["containers"] - volumes = deployment["spec"]["template"]["spec"]["volumes"] - codeserverContainer = containers.find{ |c| c["name"] == "codeserver" } - - # Check that the secret has not been created - assert_nil(secret) - - # Make sure the deployKey volumeMount is present in the sidecar container - deploykeyVolumeMount = codeserverContainer["volumeMounts"].find { |v| v["name"] == "deploykey"} - refute_nil(deploykeyVolumeMount) - assert_equal("/root/.ssh/id_rsa", deploykeyVolumeMount["mountPath"]) - assert_equal("id_rsa", deploykeyVolumeMount["subPath"]) - - # Make sure the deployKey volume is present in the Deployment - deploykeyVolume = volumes.find{ |v| v["name"] == "deploykey" } - refute_nil(deploykeyVolume) - assert_equal(values[:addons][:codeserver][:git][:deployKeySecret], deploykeyVolume["secret"]["secretName"]) - end end end end diff --git a/tests/library/common/addon_promtail_spec.rb b/tests/library/common/addon_promtail_spec.rb index 06e44f89cfe..2018c17567d 100644 --- a/tests/library/common/addon_promtail_spec.rb +++ b/tests/library/common/addon_promtail_spec.rb @@ -18,14 +18,7 @@ class Test < ChartTest values = { addons: { promtail: { - enabled: true, - volumeMounts: [ - { - name: "config", - mountPath: "/tmp", - readOnly: true - } - ] + enabled: true } } }