Keycloak на Azure. Питання

Усі статті, обговорення, новини про DevOps — в одному місці. Підписуйтеся на DOU | DevOps!

Привіт! Чи є у когось досвід розгортання продакшн версії Keycloak версії 20+ з базою данних MS SQL Server на Azure? Потребую деякої допомоги, оскільки не вдається повноцінно запустити сервіс.

Якщо коротко, то збираю Docker-контейнер з кастомним налаштування БД на MS SQL Server. При старті App Service з цьго контейнеру вже навіть створюються таблиці в потрібній мені БД, але сервіс не стартує. Якщо в когось є відповідний досвід, то з радістю послухаю Ваші рекомендації)))

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Можливо для azure вам більше підійде azure ad b2c, там досить велика халявна квота на 50к активних юзерів.
Keycloak мабуть краще десь на hetzner cloud.

Найкращу пораду яку я можу дати з keycloak це не використовувати keycloak :) я знаю декілька команд які намагались його юзати і все закінчивалося переходом на okta чи auth0

2023-06-19T12:33:01 Welcome, you are now connected to log-streaming service.
Starting Log Tail -n 10 of existing logs ----
Ending Log Tail of existing logs ---
Starting Live Log Stream ---
2023-06-19T12:33:11.935802263Z: [INFO] 2023-06-19 12:33:05,543 INFO [org.keycloak.quarkus.runtime.hostname.DefaultHostnameProvider] (main) Hostname settings: Base URL: , Hostname: https://{site_name}.azurewebsites.net, Strict HTTPS: true, Path: , Strict BackChannel: false, Admin URL: , Admin: , Port: −1, Proxied: false
2023-06-19T12:33:12.071122603Z: [INFO] 2023-06-19 12:33:11,322 WARN [io.quarkus.agroal.runtime.DataSources] (main) Datasource enables XA but transaction recovery is not enabled. Please enable transaction recovery by setting quarkus.transaction-manager.enable-recovery=true, otherwise data may be lost if the application is terminated abruptly

2023-06-19T12:33:14.988440212Z: [INFO] 2023-06-19 12:33:14,979 INFO [org.infinispan.SERVER] (keycloak-cache-init) ISPN005054: Native IOUring transport not available, using NIO instead: io.netty.incubator.channel.uring.IOUring
2023-06-19T12:33:15.793006476Z: [INFO] 2023-06-19 12:33:15,792 WARN [org.infinispan.CONFIG] (keycloak-cache-init) ISPN000569: Unable to persist Infinispan internal caches as no global state enabled
2023-06-19T12:33:15.907619058Z: [INFO] 2023-06-19 12:33:15,898 WARN [org.infinispan.PERSISTENCE] (keycloak-cache-init) ISPN000554: jboss-marshalling is deprecated and planned for removal
2023-06-19T12:33:15.960435657Z: [INFO] 2023-06-19 12:33:15,960 INFO [org.infinispan.CONTAINER] (keycloak-cache-init) ISPN000556: Starting user marshaller ’org.infinispan.jboss.marshalling.core.JBossUserMarshaller’

2023-06-19T12:33:18.503881951Z: [INFO] 2023-06-19 12:33:18,497 INFO [org.infinispan.CLUSTER] (keycloak-cache-init) ISPN000088: Unable to use any JGroups configuration mechanisms provided in properties {}. Using default JGroups configuration!
2023-06-19T12:33:19.212419139Z: [INFO] 2023-06-19 12:33:19,202 INFO [org.infinispan.CLUSTER] (keycloak-cache-init) ISPN000078: Starting JGroups channel `ISPN`

2023-06-19T12:33:19.261524644Z: [INFO] 2023-06-19 12:33:19,242 INFO [org.jgroups.JChannel] (keycloak-cache-init) local_addr: 5cafa572-1447-4a61-a443-3a765e6561b2, name: 0fd0b4402523-30709
2023-06-19T12:33:19.329462475Z: [INFO] 2023-06-19 12:33:19,327 WARN [org.jgroups.protocols.UDP] (keycloak-cache-init) JGRP000015: the send buffer of socket MulticastSocket was set to 1MB, but the OS only allocated 212.99KB
2023-06-19T12:33:19.329531574Z: [INFO] 2023-06-19 12:33:19,328 WARN [org.jgroups.protocols.UDP] (keycloak-cache-init) JGRP000015: the receive buffer of socket MulticastSocket was set to 20MB, but the OS only allocated 212.99KB
2023-06-19T12:33:19.329537774Z: [INFO] 2023-06-19 12:33:19,328 WARN [org.jgroups.protocols.UDP] (keycloak-cache-init) JGRP000015: the send buffer of socket MulticastSocket was set to 1MB, but the OS only allocated 212.99KB
2023-06-19T12:33:19.329542274Z: [INFO] 2023-06-19 12:33:19,329 WARN [org.jgroups.protocols.UDP] (keycloak-cache-init) JGRP000015: the receive buffer of socket MulticastSocket was set to 25MB, but the OS only allocated 212.99KB
2023-06-19T12:33:19.407865264Z: [INFO] 2023-06-19 12:33:19,403 INFO [org.jgroups.protocols.FD_SOCK2] (keycloak-cache-init) server listening on *.25529
2023-06-19T12:33:21.434033136Z: [INFO] 2023-06-19 12:33:21,430 INFO [org.jgroups.protocols.pbcast.GMS] (keycloak-cache-init) 0fd0b4402523-30709: no members discovered after 2003 ms: creating cluster as coordinator
2023-06-19T12:33:21.457032844Z: [INFO] 2023-06-19 12:33:21,455 INFO [org.infinispan.CLUSTER] (keycloak-cache-init) ISPN000094: Received new cluster view for channel ISPN: [0fd0b4402523-30709|0] (1) [0fd0b4402523-30709]
2023-06-19T12:33:21.475174273Z: [INFO] 2023-06-19 12:33:21,474 INFO [org.infinispan.CLUSTER] (keycloak-cache-init) ISPN000079: Channel `ISPN` local address is `0fd0b4402523-30709`, physical addresses are `[169.254.131.2:41065]`

2023-06-19T12:33:23.223658358Z: [INFO] 2023-06-19 12:33:23,223 INFO [org.infinispan.CLUSTER] (main) ISPN000080: Disconnecting JGroups channel `ISPN`
2023-06-19T12:33:23.369277783Z: [INFO] 2023-06-19 12:33:23,365 ERROR [org.keycloak.quarkus.runtime.cli.ExecutionExceptionHandler] (main) ERROR: Failed to start server in (production) mode
2023-06-19T12:33:23.369336883Z: [INFO] 2023-06-19 12:33:23,365 ERROR [org.keycloak.quarkus.runtime.cli.ExecutionExceptionHandler] (main) ERROR: Key material not provided to setup HTTPS. Please configure your keys/certificates or start the server in development mode.
2023-06-19T12:33:23.369344083Z: [INFO] 2023-06-19 12:33:23,365 ERROR [org.keycloak.quarkus.runtime.cli.ExecutionExceptionHandler] (main) For more details run the same command passing the ’—verbose’ option. Also you can use ’—help’ to see the details about the usage of the particular command.

2023-06-19T12:33:42.019322311Z: [INFO] 2023-06-19 12:33:36,218 INFO [org.keycloak.quarkus.runtime.hostname.DefaultHostnameProvider] (main) Hostname settings: Base URL: , Hostname: https://{site_name}.azurewebsites.net, Strict HTTPS: true, Path: , Strict BackChannel: false, Admin URL: , Admin: , Port: −1, Proxied: false
2023-06-19T12:33:42.109963471Z: [INFO] 2023-06-19 12:33:41,524 WARN [io.quarkus.agroal.runtime.DataSources] (main) Datasource enables XA but transaction recovery is not enabled. Please enable transaction recovery by setting quarkus.transaction-manager.enable-recovery=true, otherwise data may be lost if the application is terminated abruptly

ERROR: Key material not provided to setup HTTPS. Please configure your keys/certificates or start the server in development mode.

Prod mode вимагає mtls між нодами у кластері і https на ендпойнтах якщо без реверс проксі

Заведи його в дев мод зразу, потім будеш продмод колупати

The development mode is started by invoking the following command:

bin/kc.[sh|bat] start-dev

Але для цього теж є якась варіабля наскільки я пам’ятаю

Вобще я не розумію який такий продакшен кластер ти піднімаєш на azure webapps, і чи там є міжнодова комунікація для infinispan

Якщо заведеш HA prod mode — дай знати, що воно таки можливо :)

www.keycloak.org/...​/configuration-production
Тобі як мінімум треба вліпити jks з сертифікатом на ендпойнт

У дев режимі стартує, але є інша проблема. Коли намагаюся зайти в консоль, то весь час висить на етапі «Loading the Admin UI». А Log stream, при цьому, ніякої додаткової інформації не видає(((((

Ну можеш глянути в браузері що реквести роблять

Заведи дев мод короче зразу

Як мінімум однонодовий інстанс у дев мод має запрацювати я думаю

Взагалі якщо ти на ажурі то краще б вже Azure AD, не бачу смисла в kc на azure

Але вже таке, кому треба то треба

це не кластер kubernetes чи чогось подібного, це просто кілька Azure App Services, які працюють через авторизацію в Keycloak. На більш старій версії від JBoss, воно у мене працює, але хочу оновити до останньої.

Ну я зрозумів що не к8с я просто не в курсі як там в аппсервісез з комунікацією на прод мод між нодами щоб був HA. Однонодовий продмод думаю домучиш

Ну вово авторизація цілком покривається Azure AD, я тому й спитав. Наворочувати KC в Azure це треба знати чотко нащо воно ) ну але раз пан із тим їбеться то мабуть вже знає нащо

Ось так віглядає сам докер файл

FROM quay.io/keycloak/keycloak:21.1.1 as builder

# Enable health and metrics support
ENV KC_HEALTH_ENABLED=true
ENV KC_METRICS_ENABLED=true

ENV KC_DB=mssql

WORKDIR /opt/keycloak
RUN /opt/keycloak/bin/kc.sh build

FROM quay.io/keycloak/keycloak:21.1.1
COPY —from=builder /opt/keycloak/ /opt/keycloak/

ENV KC_DB=mssql
ENV KC_DB_URL=jdbc:sqlserver://{ms_sql_db_server}.database.windows.net:1433;database=keycloak
ENV KC_DB_USERNAME={my_db_user}
ENV KC_DB_PASSWORD={my_db_password}
ENV KC_HOSTNAME=https://{my_keycloak_service_name}.azurewebsites.net
ENTRYPOINT [“/opt/keycloak/bin/kc.sh”, “start”, “—optimized”]

Сорян хлопці))) Зараз все буде

Чого б ото не постгре. Вибираєш проблеми — отримуєш проблеми

логи хоч би скинув :)

Пробував і постгре, але результат той самий, нажаль. Тому думаю не в ms sql проблема, а в чомусь іншому. Бо на старті в дев режимі він ствоює в пустій БД потрібні йому таблиці, та потім, чтомусь не хоче далі працювати

Телепатів усіх нажаль мобілізували у ГУР.
Так що прийдеться дивитись логи.

Підписатись на коментарі