С точки зрения настроек клиента в keycloak все примерно тоже самое, как и для настроек под kubernetes. Отличаться будут только URLs, приведу тут свои:
Root URL: https://argocd.dev.lan
Valid Redirect URIs: https://argocd.dev.lan/auth/callback
Admin URL: https://argocd.dev.lan
Web Origins: https://argocd.dev.lan
Настройки в ArgoCD:
Сначала в сикрете argocd-secret нужно добавить поле oidc.keycloak.clientSecret со значением сикрета клиента из keycloak.
oidc.keycloak.clientSecret: c2VjcmV0X2Zyb21fa2V5Y2xvYWtfYXJnb2NkX2NsaWVudA==
Затем настроить дополнительные опции в configMap argocd-cm:
oidc.config: |
name: Keycloak
issuer: https://keycloak.dev.lan/auth/realms/kubernetes
clientID: argocd
clientSecret: $oidc.keycloak.clientSecret
requestedScopes: ["openid", "profile", "email", "groups"]
rootCA: |
-----BEGIN CERTIFICATE-----
<certificate data here>
-----END CERTIFICATE-----
url: https://argocd.dev.lan
rootCA - это CA от keycloak. Иначе будет ошибка х509, если используются само подписанные сертификаты.
Также нужно добавить "маппинг" групп из keycloak к ролям argocd в configMap argocd-rbac-cm:
data:
policy.csv: |
g, admins, role:admin
role:admin это внутренняя роль внутри argocd.
admins - группа из keycloak.
Теперь при открытии страницы логина будет доступна кнопка "Log in via keycloak". Она перебросит на авторизацию в keycloak и после ее прохождения автоматически вернет в argocd.
#keycloak
#argocd