Dokku ships with default charts and customizes their helm values. In certain cases, it may be useful to further customize those values to better support specific installations. With this change, it is now possible to set custom values by providing the key in the format `chart.$CHART_NAME.$PROPERTY`. For instance, to increase timeouts for the keda http addon: ```shell dokku scheduler-k3s:set --global chart.keda-add-ons-http.interceptor.tcpConnectTimeout 120s dokku scheduler-k3s:set --global chart.keda-add-ons-http.interceptor.keepAlive 120s dokku scheduler-k3s:set --global chart.keda-add-ons-http.interceptor.responseHeaderTimeout 120s dokku scheduler-k3s:set --global chart.keda-add-ons-http.interceptor.idleConnTimeout 120s dokku scheduler-k3s:set --global chart.keda-add-ons-http.interceptor.tlsHandshakeTimeout 120s dokku scheduler-k3s:set --global chart.keda-add-ons-http.interceptor.expectContinueTimeout 120s ``` To reset a value to its default, simply set the value to an empty string. ```shell dokku scheduler-k3s:set --global chart.keda-add-ons-http.interceptor.tcpConnectTimeout ``` Once the values are set, users will need to then run `scheduler-k3s:ensure-charts` with either the `--force` flag or specify the `--chart` flag with a list of charts to force apply. ```shell dokku scheduler-k3s:ensure-charts --force dokku scheduler-k3s:ensure-charts --chart keda-add-ons-http ``` Note that the existing dokku-provided values cannot be removed, but can be overridden.
175 lines
5.7 KiB
Go
175 lines
5.7 KiB
Go
package scheduler_k3s
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
|
|
"github.com/dokku/dokku/plugins/common"
|
|
)
|
|
|
|
// ReportSingleApp is an internal function that displays the scheduler-k3s report for one or more apps
|
|
func ReportSingleApp(appName string, format string, infoFlag string) error {
|
|
if err := common.VerifyAppName(appName); err != nil {
|
|
return err
|
|
}
|
|
|
|
flags := map[string]common.ReportFunc{
|
|
"--scheduler-k3s-computed-deploy-timeout": reportComputedDeployTimeout,
|
|
"--scheduler-k3s-deploy-timeout": reportDeployTimeout,
|
|
"--scheduler-k3s-global-deploy-timeout": reportGlobalDeployTimeout,
|
|
"--scheduler-k3s-computed-image-pull-secrets": reportComputedImagePullSecrets,
|
|
"--scheduler-k3s-image-pull-secrets": reportImagePullSecrets,
|
|
"--scheduler-k3s-global-image-pull-secrets": reportGlobalImagePullSecrets,
|
|
"--scheduler-k3s-global-kubeconfig-path": reportGlobalKubeconfigPath,
|
|
"--scheduler-k3s-global-kube-context": reportGlobalKubeContext,
|
|
"--scheduler-k3s-computed-letsencrypt-server": reportComputedLetsencryptServer,
|
|
"--scheduler-k3s-letsencrypt-server": reportLetsencryptServer,
|
|
"--scheduler-k3s-global-letsencrypt-server": reportGlobalLetsencryptServer,
|
|
"--scheduler-k3s-global-ingress-class": reportGlobalIngressClass,
|
|
"--scheduler-k3s-global-letsencrypt-email-prod": reportGlobalLetsencryptEmailProd,
|
|
"--scheduler-k3s-global-letsencrypt-email-stag": reportGlobalLetsencryptEmailStag,
|
|
"--scheduler-k3s-computed-namespace": reportComputedNamespace,
|
|
"--scheduler-k3s-namespace": reportNamespace,
|
|
"--scheduler-k3s-global-namespace": reportGlobalNamespace,
|
|
"--scheduler-k3s-global-network-interface": reportGlobalNetworkInterface,
|
|
"--scheduler-k3s-computed-rollback-on-failure": reportComputedRollbackOnFailure,
|
|
"--scheduler-k3s-rollback-on-failure": reportRollbackOnFailure,
|
|
"--scheduler-k3s-global-rollback-on-failure": reportGlobalRollbackOnFailure,
|
|
}
|
|
|
|
chartProperties, err := common.PropertyGetAllByPrefix("scheduler-k3s", "--global", "chart.")
|
|
if err != nil {
|
|
return fmt.Errorf("Unable to get property list: %w", err)
|
|
}
|
|
for name, value := range chartProperties {
|
|
flagName := "--scheduler-k3s-global-" + name
|
|
flags[flagName] = func(appName string) string {
|
|
return value
|
|
}
|
|
}
|
|
|
|
flagKeys := []string{}
|
|
for flagKey := range flags {
|
|
flagKeys = append(flagKeys, flagKey)
|
|
}
|
|
|
|
trimPrefix := false
|
|
uppercaseFirstCharacter := true
|
|
infoFlags := common.CollectReport(appName, infoFlag, flags)
|
|
return common.ReportSingleApp("scheduler-k3s", appName, infoFlag, infoFlags, flagKeys, format, trimPrefix, uppercaseFirstCharacter)
|
|
}
|
|
|
|
// ReportAutoscalingAuthSingleApp is an internal function that displays the scheduler-k3s autoscaling-auth report for one app
|
|
func ReportAutoscalingAuthSingleApp(appName string, format string, includeMetadata bool) error {
|
|
properties, err := common.PropertyGetAllByPrefix("scheduler-k3s", appName, TriggerAuthPropertyPrefix)
|
|
if err != nil {
|
|
return fmt.Errorf("Unable to get property list: %w", err)
|
|
}
|
|
|
|
infoFlags := map[string]string{}
|
|
for key, value := range properties {
|
|
metadataKey := strings.TrimPrefix(key, TriggerAuthPropertyPrefix)
|
|
authType := strings.SplitN(metadataKey, ".", 2)[0]
|
|
if authType == "" {
|
|
continue
|
|
}
|
|
|
|
infoFlags[authType] = "configured"
|
|
if includeMetadata {
|
|
infoFlags[strings.ReplaceAll(metadataKey, ".", "-")] = value
|
|
}
|
|
}
|
|
|
|
flagKeys := []string{}
|
|
for flagKey := range infoFlags {
|
|
flagKeys = append(flagKeys, flagKey)
|
|
}
|
|
|
|
trimPrefix := false
|
|
uppercaseFirstCharacter := true
|
|
return common.ReportSingleApp("scheduler-k3s", appName, "", infoFlags, flagKeys, format, trimPrefix, uppercaseFirstCharacter)
|
|
}
|
|
|
|
func reportComputedDeployTimeout(appName string) string {
|
|
return getComputedDeployTimeout(appName)
|
|
}
|
|
|
|
func reportDeployTimeout(appName string) string {
|
|
return getDeployTimeout(appName)
|
|
}
|
|
|
|
func reportGlobalDeployTimeout(appName string) string {
|
|
return getGlobalDeployTimeout()
|
|
}
|
|
|
|
func reportComputedImagePullSecrets(appName string) string {
|
|
return getComputedImagePullSecrets(appName)
|
|
}
|
|
|
|
func reportImagePullSecrets(appName string) string {
|
|
return getImagePullSecrets(appName)
|
|
}
|
|
|
|
func reportGlobalImagePullSecrets(appName string) string {
|
|
return getGlobalImagePullSecrets()
|
|
}
|
|
|
|
func reportGlobalIngressClass(appName string) string {
|
|
return getGlobalIngressClass()
|
|
}
|
|
|
|
func reportGlobalKubeconfigPath(appName string) string {
|
|
return getKubeconfigPath()
|
|
}
|
|
|
|
func reportGlobalKubeContext(appName string) string {
|
|
return getKubeContext()
|
|
}
|
|
func reportComputedLetsencryptServer(appName string) string {
|
|
return getComputedLetsencryptServer(appName)
|
|
}
|
|
|
|
func reportLetsencryptServer(appName string) string {
|
|
return getLetsencryptServer(appName)
|
|
}
|
|
|
|
func reportGlobalLetsencryptServer(appName string) string {
|
|
return getGlobalLetsencryptServer()
|
|
}
|
|
|
|
func reportGlobalLetsencryptEmailProd(appName string) string {
|
|
return getGlobalLetsencryptEmailProd()
|
|
}
|
|
|
|
func reportGlobalLetsencryptEmailStag(appName string) string {
|
|
return getGlobalLetsencryptEmailStag()
|
|
}
|
|
|
|
func reportComputedNamespace(appName string) string {
|
|
return getComputedNamespace(appName)
|
|
}
|
|
|
|
func reportNamespace(appName string) string {
|
|
return getNamespace(appName)
|
|
}
|
|
|
|
func reportGlobalNamespace(appName string) string {
|
|
return getGlobalNamespace()
|
|
}
|
|
|
|
func reportGlobalNetworkInterface(appName string) string {
|
|
return getGlobalNetworkInterface()
|
|
}
|
|
|
|
func reportComputedRollbackOnFailure(appName string) string {
|
|
return getComputedRollbackOnFailure(appName)
|
|
}
|
|
|
|
func reportRollbackOnFailure(appName string) string {
|
|
return getRollbackOnFailure(appName)
|
|
}
|
|
|
|
func reportGlobalRollbackOnFailure(appName string) string {
|
|
return getGlobalRollbackOnFailure()
|
|
}
|