76 lines
2.7 KiB
Jsonnet
76 lines
2.7 KiB
Jsonnet
local cluster_values = import '../cluster_values.jsonnet';
|
|
|
|
local defaults = {
|
|
idle_timeout_seconds: 60,
|
|
access_logs_enable: true,
|
|
ssl_policy: 'ELBSecurityPolicy-TLS-1-2-2017-01',
|
|
team_name: 'Shared',
|
|
labels: {
|
|
product: 'shared',
|
|
owner: 'shared',
|
|
heritage: 'NaviDeploymentManifest',
|
|
},
|
|
};
|
|
|
|
{
|
|
namespace_values(cluster, namespace)::
|
|
local cluster_value = cluster_values[cluster];
|
|
if namespace in cluster_value
|
|
then cluster_value[namespace]
|
|
else cluster_value.default,
|
|
|
|
annotations(cluster, namespace, group_name, environment, product)::
|
|
local namespace_values = $.namespace_values(cluster, namespace);
|
|
local cluster_annotations = namespace_values.loadBalancer.annotations;
|
|
local security_groups = cluster_annotations.securityGroups;
|
|
local ingress_sg = std.join(',', [security_groups.officeIp, security_groups.internal]);
|
|
local loadbalancer_attributes = std.join(',', [
|
|
'idle_timeout.timeout_seconds=%s' % defaults.idle_timeout_seconds,
|
|
'access_logs.s3.enabled=%s' % defaults.access_logs_enable,
|
|
'access_logs.s3.bucket=%s' % cluster_annotations.accessLogBucket,
|
|
'access_logs.s3.prefix=%s' % group_name,
|
|
]);
|
|
|
|
{
|
|
'alb.ingress.kubernetes.io/ssl-policy': defaults.ssl_policy,
|
|
'alb.ingress.kubernetes.io/scheme': 'internal',
|
|
'alb.ingress.kubernetes.io/security-groups': ingress_sg,
|
|
'alb.ingress.kubernetes.io/load-balancer-attributes': loadbalancer_attributes,
|
|
[if cluster != 'spike.np.navi-tech.in' then 'alb.ingress.kubernetes.io/subnets']: cluster_annotations.subnets.internal,
|
|
'alb.ingress.kubernetes.io/group.name': group_name,
|
|
'alb.ingress.kubernetes.io/tags': 'Name=shared-alb-%(name)s,Ingress=shared-alb-%(name)s,Owner=shared,Team=Shared,Product=%(product)s,Environment=%(environment)s' % { name: group_name, product: product, environment: environment },
|
|
'kubernetes.io/ingress.class': 'alb',
|
|
},
|
|
|
|
labels(name, environment, product)::
|
|
{
|
|
app: name,
|
|
chart: name,
|
|
heritage: defaults.labels.heritage,
|
|
release: name,
|
|
Team: defaults.team_name,
|
|
Environment: environment,
|
|
Name: name,
|
|
Product: product,
|
|
Owner: defaults.labels.owner,
|
|
},
|
|
|
|
name(group_name):: '%s-shared-alb-config' % [group_name],
|
|
|
|
create(cluster, namespace, group_name, environment, product=defaults.labels.product)::
|
|
local name = $.name(group_name);
|
|
{
|
|
apiVersion: 'networking.k8s.io/v1',
|
|
kind: 'Ingress',
|
|
metadata: {
|
|
name: name,
|
|
labels: $.labels(name, environment, product),
|
|
namespace: namespace,
|
|
annotations: $.annotations(cluster, namespace, group_name, environment, product),
|
|
},
|
|
spec: {
|
|
rules: [{}],
|
|
},
|
|
},
|
|
}
|