mirror of https://github.com/portainer/portainer
Can't create kubernetes resources with a username longer than 63 characters (#4672)
* fix(kubernetes): truncate username when we create resource * fix(k8s): remove forbidden characters in owner labelpull/4609/head
parent
cbd7fdc62e
commit
4cd468ce21
|
@ -39,7 +39,8 @@ class KubernetesConfigMapConverter {
|
|||
const res = new KubernetesConfigMapCreatePayload();
|
||||
res.metadata.name = data.Name;
|
||||
res.metadata.namespace = data.Namespace;
|
||||
res.metadata.labels[KubernetesPortainerConfigurationOwnerLabel] = data.ConfigurationOwner;
|
||||
const configurationOwner = _.truncate(data.ConfigurationOwner, { length: 63, omission: '' });
|
||||
res.metadata.labels[KubernetesPortainerConfigurationOwnerLabel] = configurationOwner;
|
||||
res.data = data.Data;
|
||||
return res;
|
||||
}
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
import * as JsonPatch from 'fast-json-patch';
|
||||
|
||||
import { KubernetesDaemonSet } from 'Kubernetes/models/daemon-set/models';
|
||||
import { KubernetesDaemonSetCreatePayload } from 'Kubernetes/models/daemon-set/payloads';
|
||||
import {
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
import _ from 'lodash-es';
|
||||
import { KubernetesNamespace } from 'Kubernetes/models/namespace/models';
|
||||
import { KubernetesNamespaceCreatePayload } from 'Kubernetes/models/namespace/payloads';
|
||||
import { KubernetesPortainerResourcePoolNameLabel, KubernetesPortainerResourcePoolOwnerLabel } from 'Kubernetes/models/resource-pool/models';
|
||||
|
@ -20,7 +21,8 @@ class KubernetesNamespaceConverter {
|
|||
res.metadata.name = namespace.Name;
|
||||
res.metadata.labels[KubernetesPortainerResourcePoolNameLabel] = namespace.ResourcePoolName;
|
||||
if (namespace.ResourcePoolOwner) {
|
||||
res.metadata.labels[KubernetesPortainerResourcePoolOwnerLabel] = namespace.ResourcePoolOwner;
|
||||
const resourcePoolOwner = _.truncate(namespace.ResourcePoolOwner, { length: 63, omission: '' });
|
||||
res.metadata.labels[KubernetesPortainerResourcePoolOwnerLabel] = resourcePoolOwner;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
|
|
@ -9,7 +9,8 @@ class KubernetesSecretConverter {
|
|||
const res = new KubernetesSecretCreatePayload();
|
||||
res.metadata.name = secret.Name;
|
||||
res.metadata.namespace = secret.Namespace;
|
||||
res.metadata.labels[KubernetesPortainerConfigurationOwnerLabel] = secret.ConfigurationOwner;
|
||||
const configurationOwner = _.truncate(secret.configurationOwner, { length: 63, omission: '' });
|
||||
res.metadata.labels[KubernetesPortainerConfigurationOwnerLabel] = configurationOwner;
|
||||
res.stringData = secret.Data;
|
||||
return res;
|
||||
}
|
||||
|
|
|
@ -69,7 +69,7 @@ class KubernetesServiceConverter {
|
|||
payload.metadata.namespace = service.Namespace;
|
||||
payload.metadata.labels[KubernetesPortainerApplicationStackNameLabel] = service.StackName;
|
||||
payload.metadata.labels[KubernetesPortainerApplicationNameLabel] = service.ApplicationName;
|
||||
payload.metadata.labels[KubernetesPortainerApplicationOwnerLabel] = service.ApplicationOwner;
|
||||
payload.metadata.labels[KubernetesPortainerApplicationOwnerLabel] = service.Application;
|
||||
payload.spec.ports = service.Ports;
|
||||
payload.spec.selector.app = service.ApplicationName;
|
||||
if (service.Headless) {
|
||||
|
|
|
@ -10,7 +10,11 @@ class KubernetesCommonHelper {
|
|||
}
|
||||
|
||||
static ownerToLabel(owner) {
|
||||
return _.replace(owner, /[^-A-Za-z0-9_.]/g, '.');
|
||||
let label = _.replace(owner, /[^-A-Za-z0-9_.]/g, '.');
|
||||
label = _.truncate(label, { length: 63, omission: '' });
|
||||
label = _.replace(label, /^[-_.]*/g, '');
|
||||
label = _.replace(label, /[-_.]*$/g, '');
|
||||
return label;
|
||||
}
|
||||
}
|
||||
export default KubernetesCommonHelper;
|
||||
|
|
Loading…
Reference in New Issue