Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | |||
linux_faq:keycloak_on_kubernetes_import_root_ca_ldaps [2020/02/27 06:41] – [Проблема] admin | linux_faq:keycloak_on_kubernetes_import_root_ca_ldaps [2020/02/27 06:55] (current) – [Хорошее решение] admin | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Проблема ====== | ||
+ | Мне нужно сконфигурировать **keycloak** (версии 7.0.1), [[devops: | ||
+ | Проверка подключения к контроллеру домена (**Test Connection**) по протоколу **ldaps** (порт 636) проходит нормально, | ||
+ | 14: | ||
+ | Проблема в том, что сертификат контроллера домена выдан корпоративным **certification authority**. \\ | ||
+ | Мануалы, | ||
+ | ====== Хорошее решение ====== | ||
+ | Создаем **ConfigMap** с корпоративными корневыми сертификатами. Они должны быть в формате **pem** и оформлены стандартными разделителями - **-----BEGIN CERTIFICATE-----** и **-----END CERTIFICATE-----**. | ||
+ | curl -k https:// | ||
+ | kubectl -n keycloak create configmap ca-bundle --from-file=./ | ||
+ | |||
+ | А **keycloak_values.yaml** приводим к такому виду: | ||
+ | < | ||
+ | replicas: 1 | ||
+ | image: | ||
+ | tag: 8.0.2 | ||
+ | existingSecret: | ||
+ | |||
+ | extraVolumes: | ||
+ | - name: ca-bundle | ||
+ | configMap: | ||
+ | name: ca-bundle | ||
+ | extraVolumeMounts: | ||
+ | - name: ca-bundle | ||
+ | mountPath: / | ||
+ | |||
+ | extraEnv: | | ||
+ | - name: X509_CA_BUNDLE | ||
+ | value: "/ | ||
+ | - name: PROXY_ADDRESS_FORWARDING | ||
+ | value: " | ||
+ | - name: JAVA_OPTS | ||
+ | value: | | ||
+ | -server -Xms64m -Xmx512m -XX: | ||
+ | |||
+ | ingress: | ||
+ | enabled: true | ||
+ | path: / | ||
+ | annotations: | ||
+ | kubernetes.io/ | ||
+ | hosts: | ||
+ | - sso.domain.local | ||
+ | tls: | ||
+ | - hosts: | ||
+ | - sso.domain.local | ||
+ | secretName: sso-domain-local | ||
+ | |||
+ | persistence: | ||
+ | deployPostgres: | ||
+ | dbVendor: " | ||
+ | existingSecret: | ||
+ | dbName: keycloak | ||
+ | dbHost: 10.10.10.10 | ||
+ | dbPort: 5432 | ||
+ | |||
+ | test: | ||
+ | enabled: false</ | ||
+ | Некоторые пояснения.\\ | ||
+ | Созданный **ConfigMap** с корпоративными корневыми сертификатами монтируется в директорию | ||
+ | Переменная **X509_CA_BUNDLE** указывает на путь к файлу с сертификатами и при старте контейнера используется скриптом **/ | ||
+ | |||
+ | ====== Нехорошее решение ====== | ||
+ | * Добавить в состав **JAVA_OPTS** pod'а опции **javax.net.ssl.trustStore** и **javax.net.ssl.trustStorePassword** | ||
+ | * При старте **pod**' | ||
+ | |||
+ | Для этого редактируем **StatefulSet** **keycloak**: | ||
+ | |||
+ | В раздел **env** добавляем такое: | ||
+ | < | ||
+ | template: | ||
+ | spec: | ||
+ | containers: | ||
+ | env: | ||
+ | - name: JAVA_OPTS | ||
+ | value: -server -Xms64m -Xmx512m -XX: | ||
+ | -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman | ||
+ | -Djava.awt.headless=true | ||
+ | -Djavax.net.ssl.trustStorePassword=changeit | ||
+ | --add-exports=java.base/ | ||
+ | А **command** приводим к такому виду: | ||
+ | < | ||
+ | template: | ||
+ | spec: | ||
+ | containers: | ||
+ | ... | ||
+ | command: | ||
+ | - /bin/bash | ||
+ | - -c | ||
+ | args: | ||
+ | - mkdir -p / | ||
+ | && curl -k https:// | ||
+ | && keytool -import -noprompt -keystore / | ||
+ | && / | ||
+ | В результате - до старта сервера **Keycloak** корневой сертификат забирается с http-сервера и помещается в **ssl.trustStore**, |