dexidp.io contains valueable information on how to configure and run DexIdp, but even though they provide a docker container, there is scarce information on how to configure and run it.
So let’s create a DexIdp deployment in a Docker Desktop
kubectl create deployment dexidp --image dexidp/dex
We see from the Dockerfile that dex is being started by a custom entrypoint written in Go. This essentially executes gomplate. Gomplate is yet another template language written in Go. It reads /etc/dex/docker.config.yaml and produces a configuration file in /tmp which is then used to start the server.
So the best way to approach this is to get a local copy of this file with for example, edit th file as we see fit and then make it a configMap:
kubectl cp dexidp-79ff7cc5ff-p527s:/etc/dex/config.docker.yaml config.docker.yaml
:
kubectl create cm dex-config --from-file config.docker.yaml
We can now modify the deployment to mount the configMap
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: dex
name: dex
spec:
replicas: 1
selector:
matchLabels:
app: dex
strategy:
type: Recreate
template:
metadata:
labels:
app: dex
spec:
volumes:
- name: dex-config
configMap:
name: dex-config
items:
- key: "config.docker.yaml"
path: "config.docker.yaml"
containers:
- image: dexidp/dex:v2.41.1
name: dex
volumeMounts:
- name: dex-config
mountPath: /etc/dex
ports:
- containerPort: 5556
name: dex
- containerPort: 5558
name: telemetry
You can proceed from there with any specific configuration your setup requires and even make your own helm charts. I know there are already existing helm charts, but sometimes when in contact with a new technology is is best that you do not have to go over helm charts that try to cover all possible angles, as their makers rightfully try to accomodate for everybody knowledgable of their software.
So this is the DexIdp newbie’s deploy on Kubernetes guide. Do this, learn the ropes of the software, proceed with helm or other deployment styles.