kube-lego
kube-lego copied to clipboard
LEGO_SERVICE_SELECTOR does not seems to work
Below is the yaml deployment file which I used to deploy a staging version of kube lego in addition to prod version, but it was failed to work. The reason was service selector was not picked up correctly and it ended up having selector as app: kube-lego
rather than app: kube-lego-staging
as specified in the yaml below.
apiVersion: v1
metadata:
name: kube-lego-staging-nginx
namespace: kube-system
data:
lego.email: "[email protected]"
lego.url: "https://acme-staging.api.letsencrypt.org/directory"
lego.secret: "kube-lego-staging-account"
lego.service: "kube-lego-staging"
lego.service_name: "kube-lego-staging-nginx"
lego.ingress_name: "kube-lego-staging-nginx"
lego.kube_annotation: "kubernetes.io/tls-acme-staging"
kind: ConfigMap
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: kube-lego-staging-nginx
namespace: kube-system
spec:
replicas: 1
template:
metadata:
labels:
app: kube-lego-staging
spec:
serviceAccount: kube-lego
containers:
- name: kube-lego-staging-nginx
image: jetstack/kube-lego:0.1.4
imagePullPolicy: Always
resources:
limits:
memory: 200Mi
cpu: 200m
requests:
cpu: 100m
memory: 100Mi
ports:
- containerPort: 8080
env:
- name: LEGO_EMAIL
valueFrom:
configMapKeyRef:
name: kube-lego-staging-nginx
key: lego.email
- name: LEGO_URL
valueFrom:
configMapKeyRef:
name: kube-lego-staging-nginx
key: lego.url
- name: LEGO_SECRET_NAME
valueFrom:
configMapKeyRef:
name: kube-lego-staging-nginx
key: lego.secret
- name: LEGO_SERVICE_SELECTOR
valueFrom:
configMapKeyRef:
name: kube-lego-staging-nginx
key: lego.service
- name: LEGO_SERVICE_NAME_NGINX
valueFrom:
configMapKeyRef:
name: kube-lego-staging-nginx
key: lego.service_name
- name: LEGO_INGRESS_NAME_NGINX
valueFrom:
configMapKeyRef:
name: kube-lego-staging-nginx
key: lego.ingress_name
- name: LEGO_KUBE_ANNOTATION
valueFrom:
configMapKeyRef:
name: kube-lego-staging-nginx
key: lego.kube_annotation
- name: LEGO_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: LEGO_POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
readinessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 5
timeoutSeconds: 1
Once I edited the service manually and set the correct selector, things start to work as expected.