Reference ConfigMap / Secret in Kubernetes object metadata

3/2/2018

I have a Kubernetes cluster provisioned at AWS with kops and I use route 53 mapper to configure ELB based on Service annotations and use namespaces for different environments dev, test, prod with configuration being defined in ConfigMap and Secret objects.

Environments have different hostname and TSL certificates:

kind: Service
apiVersion: v1
metadata:
  name: http-proxy-service
  labels:
    dns: route53
  annotations:
    domainName: <env>.myapp.example.io
    service.beta.kubernetes.io/aws-load-balancer-ssl-cert: |-
      arn:aws:acm:eu-central-1:44315247xxxxxxxxxxxxxxxx
    service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
    service.beta.kubernetes.io/aws-load-balancer-ssl-ports: https

spec:
  selector:
    app: http-proxy
  ports:
    - name: https 
      port: 443

Is there a Kubernetes way to reference ConfigMap/Secret objects in the metadata section of the object descriptor so I can have only one file for all environments?

I am looking for pure Kubernetes solution not using any templating before sending file to API via kubecetl.

-- ps-aux
amazon-web-services
docker
kops
kubernetes

1 Answer

3/3/2018

There is not.

FWIW, it seems nuts that that mapper was designed to pull cert data from annotations on a Service. Service objects are not otherwise secret.

The mapper should be able to consume cert data from a Secret that has well defined fields to indicate what domain should be wired with what cert data in front of what service.

-- Jonah Benton
Source: StackOverflow