Skip to content

Commit 09bfec6

Browse files
authored
Merge pull request #25 from eminaktas/fix/namespace
fix(namespaces): unify namespace settings and improve naming readability
2 parents 065b228 + a713f54 commit 09bfec6

File tree

13 files changed

+35
-9
lines changed

13 files changed

+35
-9
lines changed

docs/konfig.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ ServerBackend converts the user-written front-end model `Server` into a collecti
160160
|**provider**|[]|||
161161
|**sidecarContainers**|[{str:}]|||
162162
|**workloadAttributes** `required`|{str:}||{<br /> metadata = utils.MetadataBuilder(config) \| {<br /> name = workloadName<br /> }<br /> spec = {<br /> replicas = config.replicas<br /> if config.useBuiltInSelector:<br /> selector: {matchLabels: app.selector \| config.selector \| _applicationLabel}<br /> else:<br /> selector: {matchLabels: config.selector}<br /> template = {<br /> metadata = {<br /> if config.useBuiltInLabels:<br /> labels = app.labels \| _applicationLabel<br /> <br /> **config.podMetadata<br /> }<br /> spec = {<br /> containers = [mainContainer] + (sidecarContainers or [])<br /> initContainers = initContainers<br /> if config.volumes:<br /> volumes = [utils.to_kube_volume(v) for v in config.volumes if v.volumeSource]<br /> <br /> if config.serviceAccount:<br /> serviceAccountName = config.serviceAccount.name<br /> <br /> }<br /> }<br /> }<br />}|
163-
|**workloadName** `required`|str||config.name or "{}{}".format(metadata.__META_APP_NAME, metadata.__META_ENV_TYPE_NAME).lower()|
163+
|**workloadName** `required`|str||config.name or "{}-{}".format(metadata.__META_APP_NAME, metadata.__META_ENV_TYPE_NAME).lower()|
164164
### Job
165165

166166
Job is the common user interface for one-time jobs, which is defined by Kubernetes Job. Job supports reliable parallel execution of Pods.

models/kube/backend/job_backend.k

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ schema JobBackend[inputConfig: frontend.Job]:
1717
config: frontend.Job = inputConfig
1818

1919
# variables
20-
jobName: str = "{}-{}".format(metadata.__META_APP_NAME, metadata.__META_ENV_TYPE_NAME).lower()
20+
jobName: str = config.name or "{}-{}".format(metadata.__META_APP_NAME, metadata.__META_ENV_TYPE_NAME).lower()
21+
jobNamespace: str = config.namespace or "{}-{}".format(metadata.__META_APP_NAMESPACE, metadata.__META_ENV_TYPE_NAME).lower()
2122
app: utils.ApplicationBuilder = utils.ApplicationBuilder {}
2223
mainContainerDict: {str:}
2324
mainContainer: {str:}
@@ -48,6 +49,7 @@ schema JobBackend[inputConfig: frontend.Job]:
4849
jobAttrs: {str:} = {
4950
metadata = utils.MetadataBuilder(config) | {
5051
name = jobName
52+
namespace = jobNamespace
5153
}
5254
spec = {
5355
activeDeadlineSeconds = config.activeDeadlineSeconds

models/kube/backend/server_backend.k

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@ schema ServerBackend[inputConfig: server.Server]:
2424
# Store the input config parameter, ensure it can be seen in protocol and mixin.
2525
config: server.Server = inputConfig
2626
# Workload name.
27-
workloadName: str = config.name or "{}{}".format(metadata.__META_APP_NAME, metadata.__META_ENV_TYPE_NAME).lower()
27+
workloadName: str = config.name or "{}-{}".format(metadata.__META_APP_NAME, metadata.__META_ENV_TYPE_NAME).lower()
28+
# Workload namespace
29+
workloadNamespace: str = config.namespace or "{}-{}".format(metadata.__META_APP_NAMESPACE, metadata.__META_ENV_TYPE_NAME).lower()
2830
# App variable contains labels, selector and environments.
2931
app: utils.ApplicationBuilder = utils.ApplicationBuilder {}
3032
# Main containers and sidecar contrainers.
@@ -58,6 +60,7 @@ schema ServerBackend[inputConfig: server.Server]:
5860
workloadAttributes: {str:} = {
5961
metadata = utils.MetadataBuilder(config) | {
6062
name = workloadName
63+
namespace = workloadNamespace
6164
}
6265
spec = {
6366
replicas = config.replicas

models/kube/frontend/job.k

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,11 @@ schema Job:
1818
If not defined, a generated name ("{__META_APP_NAME}-{__META_ENV_TYPE_NAME}") will be used.
1919
The value of metadata.__META_APP_NAME will be extracted from the value of the "name" defined through option("app"),
2020
and the value of __META_ENV_TYPE_NAME will be extracted from the value of the "name" defined through option("env").
21+
namespace: str, default is Undefined, optional.
22+
The namespace of the workload and service.
23+
If not defined, a generated name ("{__META_APP_NAMESPACE}-{__META_ENV_TYPE_NAME}") will be used.
24+
The value of metadata.__META_APP_NAMESPACE will be extracted from the value of the "name" defined through option("appns"),
25+
and the value of __META_ENV_TYPE_NAME will be extracted from the value of the "name" defined through option("env").
2126
activeDeadlineSeconds: int, default is Undefined, optional.
2227
Specifies the duration in seconds relative to the startTime that the job may be active
2328
before the system tries to terminate it; value must be positive integer
@@ -87,6 +92,8 @@ schema Job:
8792

8893
# job name
8994
name?: str
95+
# job namespace
96+
namespace?: str
9097
# subset of batchv1.JobSpec
9198
activeDeadlineSeconds?: int
9299
backoffLimit?: int = 6

models/kube/frontend/server.k

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,11 @@ schema Server:
2020
If not defined, a generated name ("{__META_APP_NAME}-{__META_ENV_TYPE_NAME}") will be used.
2121
The value of metadata.__META_APP_NAME will be extracted from the value of the "name" defined through option("app"),
2222
and the value of __META_ENV_TYPE_NAME will be extracted from the value of the "name" defined through option("env").
23+
namespace: str, default is Undefined, optional.
24+
The namespace of the workload and service.
25+
If not defined, a generated name ("{__META_APP_NAMESPACE}-{__META_ENV_TYPE_NAME}") will be used.
26+
The value of metadata.__META_APP_NAMESPACE will be extracted from the value of the "name" defined through option("appns"),
27+
and the value of __META_ENV_TYPE_NAME will be extracted from the value of the "name" defined through option("env").
2328
workloadType: "Deployment" | "StatefulSet", default is "Deployment", required.
2429
Application workload type, default to 'Deployment'
2530
renderType: "Server" | "KubeVelaApplication", default is "Server", optional.
@@ -97,6 +102,9 @@ schema Server:
97102
# workload name
98103
name?: str
99104

105+
# workload namespace
106+
namespace?: str
107+
100108
# Application workload type, default to 'Deployment'
101109
workloadType: "Deployment" | "StatefulSet" = "Deployment"
102110

models/kube/metadata/metadata.k

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
__META_APP_NAME = option("app") or "sampleapp"
2+
__META_APP_NAMESPACE = option("appns") or "sampleappns"
23
__META_ENV_TYPE_NAME = option("env") or "prod"
34
__META_CLUSTER_NAME = option("cluster") or Undefined

models/kube/mixins/configmap_mixin.k

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ mixin ConfigMapMixin for protocol.ServerProtocol:
99
kubernetes: resource.ResourceMapping {
1010
ConfigMap = [v1.ConfigMap {
1111
metadata: utils.MetadataBuilder(_c) | {
12-
name = _c?.name or "{}{}{}".format(metadata.__META_APP_NAME, metadata.__META_ENV_TYPE_NAME, _i)
12+
name = _c?.name or "{}-{}-{}".format(metadata.__META_APP_NAME, metadata.__META_ENV_TYPE_NAME, _i)
13+
namespace = _c?.namespace or "{}-{}".format(metadata.__META_APP_NAMESPACE, metadata.__META_ENV_TYPE_NAME)
1314
}
1415
data = _c?.data
1516
binaryData = _c?.binaryData

models/kube/mixins/ingress_mixin.k

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ mixin IngressMixin for protocol.ServerProtocol:
99
kubernetes: resource.ResourceMapping {
1010
Ingress = [networking_v1.Ingress {
1111
metadata: utils.MetadataBuilder(_s) | {
12-
name = _s?.name or "{}{}{}".format(metadata.__META_APP_NAME, metadata.__META_ENV_TYPE_NAME, _i)
12+
name = _s?.name or "{}-{}-{}".format(metadata.__META_APP_NAME, metadata.__META_ENV_TYPE_NAME, _i)
13+
namespace = _s?.namespace or "{}-{}".format(metadata.__META_APP_NAMESPACE, metadata.__META_ENV_TYPE_NAME)
1314
}
1415
spec.rules = _s?.rules
1516
spec.tls = _s?.tls

models/kube/mixins/namespace_mixin.k

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ mixin NamespaceMixin for protocol.ServerProtocol:
2525
kubernetes: resource.ResourceMapping {
2626
Namespace = [
2727
v1.Namespace {
28-
metadata.name = metadata.__META_APP_NAME
28+
metadata.name = config?.namespace or "{}-{}".format(metadata.__META_APP_NAMESPACE, metadata.__META_ENV_TYPE_NAME)
2929
}
3030
]
3131
}

models/kube/mixins/secret_mixin.k

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ mixin SecretMixin for protocol.ServerProtocol:
99
kubernetes: resource.ResourceMapping {
1010
Secret = [v1.Secret {
1111
metadata: utils.MetadataBuilder(_s) | {
12-
name = _s?.name or "{}{}{}".format(metadata.__META_APP_NAME, metadata.__META_ENV_TYPE_NAME, _i)
12+
name = _s?.name or "{}-{}-{}".format(metadata.__META_APP_NAME, metadata.__META_ENV_TYPE_NAME, _i)
13+
namespace = _s?.namespace or "{}-{}".format(metadata.__META_APP_NAMESPACE, metadata.__META_ENV_TYPE_NAME)
1314
}
1415
data = _s?.data
1516
stringData = _s?.stringData

models/kube/mixins/service_mixin.k

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ mixin ServiceMixin for protocol.ServerProtocol:
1111
kubernetes: resource.ResourceMapping {
1212
Service = [v1.Service {
1313
metadata: utils.MetadataBuilder(_s) | {
14-
name = _s?.name or (workloadName if len(config.services) == 1 else "{}{}{}".format(metadata.__META_APP_NAME, metadata.__META_ENV_TYPE_NAME, _i))
14+
name = _s?.name or (workloadName if len(config.services) == 1 else "{}-{}-{}".format(metadata.__META_APP_NAME, metadata.__META_ENV_TYPE_NAME, _i))
15+
namespace = _s?.namespace or (workloadNamespace if len(config.services) == 1 else "{}-{}".format(metadata.__META_APP_NAMESPACE, metadata.__META_ENV_TYPE_NAME))
1516
}
1617
spec: {
1718
clusterIP = _s?.clusterIP if _s?.type in ["ClusterIP", "NodePort", "LoadBalancer", None, Undefined] else Undefined

models/kube/mixins/serviceaccount_mixin.k

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ mixin ServiceAccountMixin for protocol.ServerProtocol:
99
ServiceAccount = [v1.ServiceAccount {
1010
metadata: utils.MetadataBuilder(config.serviceAccount) | {
1111
name = config.serviceAccount.name
12+
namespace = config.serviceAccount.namespace
1213
}
1314
imagePullSecrets = config.serviceAccount.imagePullSecrets
1415
secrets = config.serviceAccount.secrets

models/kube/utils/metadata_builder.k

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import models.kube.metadata
33
MetadataBuilder = lambda config -> {str:} {
44
{
55
name: config?.name or metadata.__META_APP_NAME
6-
namespace: config?.name or metadata.__META_APP_NAME
6+
namespace: config?.namespace or metadata.__META_APP_NAMESPACE
77
labels: config?.labels
88
annotations: config?.annotations
99
}

0 commit comments

Comments
 (0)