Files
deployment-portal-be/templates/shared_ingress_config/shared_ingress.libsonnet

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: [{}],
},
},
}