Sign inSign up

xmlking/keycloak-openshift-stateless

By xmlking

•Updated over 8 years ago

Stateless version of KeyCloak using H2 and importing realms and users every-time. Good for Dev Env

Image
1

1.7K

xmlking/keycloak-openshift-stateless repository overview

⁠Docker Compose Deployment
version: '3'

services:
  keycloak:
    image: xmlking/keycloak-openshift-stateless
    container_name: keycloak
    volumes:
    - $PWD/.docker/keycloak/realm-config:/opt/jboss/keycloak/realm-config
    environment:
      KEYCLOAK_USER: admin
      KEYCLOAK_PASSWORD: admin
      DB_VENDOR: H2
      KEYCLOAK_USER_CACHE_ENABLED: "false"
      KEYCLOAK_REALM_CACHE_ENABLED: "false"
    ports:
    - 9080:9080
    - 9444:9443
    - 10990:10990
⁠Docker Compose Run
docker-compose up keycloak
⁠OpenShift Deployment

Deploy keycloak-openshift-stateless on to OpenShift. It will be available on port 9080

oc new-app -f  keycloak.tmpl.yml -p APPNAME=keycloak
⁠OpenShift Template
apiVersion: v1
kind: Template
metadata:
  name: ${APPNAME}
  annotations:
    "openshift.io/display-name": ${APPNAME}
    description: |
      keycloak with ms ldap
    iconClass: icon-cogs
    tags: "oidc,keycloak,ldap"

objects:

- apiVersion: v1
  kind: ConfigMap
  metadata:
    name: ${APPNAME}-config
  data:
    kubernetes-realm.json: |

    kubernetes-users-0.json: |

- apiVersion: v1
  kind: ConfigMap
  metadata:
    labels:
      app: ${APPNAME}
    name: ${APPNAME}-env
  data:
    keycloak_user: admin
    db_vendor: H2
    keycloak_user_cache_enabled: "false"
    keycloak_realm_cache_enabled: "false"

- apiVersion: v1
  kind: Secret
  metadata:
    labels:
      app: ${APPNAME}
    name: ${APPNAME}-secrets
  stringData:
    keycloak_password: admin

- apiVersion: v1
  kind: Route
  metadata:
    labels:
      app: ${APPNAME}
    name: ${APPNAME}
  spec:
    to:
      kind: Service
      name: ${APPNAME}
    tls:
      termination: edge
    port:
      targetPort: ${APPNAME}-9080-http

- apiVersion: v1
  kind: Service
  metadata:
    labels:
      app: ${APPNAME}
    annotations:
    name: ${APPNAME}
  spec:
    ports:
    - name: ${APPNAME}-9080-http
      port: 9080
      protocol: TCP
      targetPort: 9080
    selector:
      app: ${APPNAME}

- apiVersion: v1
  kind: DeploymentConfig
  metadata:
    labels:
      app: ${APPNAME}
    name: ${APPNAME}
  spec:
    replicas: 1
    strategy:
      type: Rolling
    triggers:
    - type: ConfigChange
    selector:
      app: ${APPNAME}
    template:
      metadata:
        labels:
          app: ${APPNAME}
          deploymentConfig: ${APPNAME}
        name: ${APPNAME}
      spec:
        volumes:
        - name: ${APPNAME}-volume
          configMap:
            defaultMode: 420
            name: ${APPNAME}-config
        containers:
        - name: ${APPNAME}
          image: ${DOCKERIMAGE}
          imagePullPolicy: IfNotPresent
          resources:
            limits:
              cpu: "400m"
              memory: "2048Mi"
          ports:
          - containerPort: 9080
            name: keycloak
          - containerPort: 9443
            name: keycloak-ssh
          - containerPort: 10990
            name: keycloak-other
          env:
          - name: PROXY_ADDRESS_FORWARDING
            value: "true"
          - name: KEYCLOAK_USER_CACHE_ENABLED
            valueFrom:
              configMapKeyRef:
                name: ${APPNAME}-env
                key: keycloak_user_cache_enabled
          - name: KEYCLOAK_REALM_CACHE_ENABLED
            valueFrom:
              configMapKeyRef:
                name: ${APPNAME}-env
                key: keycloak_realm_cache_enabled
          - name: KEYCLOAK_USER
            valueFrom:
              configMapKeyRef:
                name: ${APPNAME}-env
                key: keycloak_user
          - name: KEYCLOAK_PASSWORD
            valueFrom:
              secretKeyRef:
                name: ${APPNAME}-secrets
                key: keycloak_password
          - name: DB_VENDOR
            valueFrom:
              configMapKeyRef:
                name: ${APPNAME}-env
                key: db_vendor
          securityContext:
            privileged: false
          volumeMounts:
          - name: ${APPNAME}-volume
            mountPath: /opt/jboss/keycloak/realm-config


parameters:
- name: APPNAME
  value: keycloak
- name: DOCKERIMAGE
  value: xmlking/keycloak-openshift-stateless:4.0.0.Final

Tag summary

Content type

Image

Digest

Size

480.2 MB

Last updated

over 8 years ago

docker pull xmlking/keycloak-openshift-stateless