ನಾವು Keycloak ಅನ್ನು ಬಳಸಿಕೊಂಡು Kubernetes ಗೆ ActiveDirectory ದೃಢೀಕರಣವನ್ನು ಜೋಡಿಸುತ್ತೇವೆ

ಈ ಲೇಖನವನ್ನು ಈಗಾಗಲೇ ವಿಸ್ತರಿಸುವ ಉದ್ದೇಶದಿಂದ ಬರೆಯಲಾಗಿದೆ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ, ಆದರೆ ಮೈಕ್ರೋಸಾಫ್ಟ್ ಆಕ್ಟಿವ್ ಡೈರೆಕ್ಟರಿಯೊಂದಿಗೆ ನಿರ್ದಿಷ್ಟವಾಗಿ ಸಂಪರ್ಕದ ವೈಶಿಷ್ಟ್ಯಗಳ ಬಗ್ಗೆ ಮಾತನಾಡುತ್ತದೆ ಮತ್ತು ಅದನ್ನು ಪೂರಕಗೊಳಿಸುತ್ತದೆ.

ಈ ಲೇಖನದಲ್ಲಿ ನಾನು ಹೇಗೆ ಸ್ಥಾಪಿಸಬೇಕು ಮತ್ತು ಕಾನ್ಫಿಗರ್ ಮಾಡುವುದು ಎಂದು ಹೇಳುತ್ತೇನೆ:

  • ಕೀಕ್ಲಾಕ್ ಮುಕ್ತ ಮೂಲ ಯೋಜನೆಯಾಗಿದೆ. ಇದು ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಗೆ ಒಂದೇ ಪ್ರವೇಶ ಬಿಂದುವನ್ನು ಒದಗಿಸುತ್ತದೆ. ನಮಗೆ ಆಸಕ್ತಿಯಿರುವ LDAP ಮತ್ತು OpenID ಸೇರಿದಂತೆ ಹಲವು ಪ್ರೋಟೋಕಾಲ್‌ಗಳೊಂದಿಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ.
  • ಕೀಕ್ಲೋಕ್ ಗೇಟ್ ಕೀಪರ್ - ಕೀಕ್ಲೋಕ್ ಮೂಲಕ ಅಧಿಕಾರವನ್ನು ಸಂಯೋಜಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುವ ರಿವರ್ಸ್ ಪ್ರಾಕ್ಸಿ ಅಪ್ಲಿಕೇಶನ್.
  • ಗ್ಯಾಂಗ್ವೇ - kubectl ಗಾಗಿ ಸಂರಚನೆಯನ್ನು ರಚಿಸುವ ಅಪ್ಲಿಕೇಶನ್, ಅದರೊಂದಿಗೆ ನೀವು OpenID ಮೂಲಕ ಲಾಗ್ ಇನ್ ಮಾಡಬಹುದು ಮತ್ತು Kubernetes API ಗೆ ಸಂಪರ್ಕಿಸಬಹುದು.

ಕುಬರ್ನೆಟ್ಸ್‌ನಲ್ಲಿ ಅನುಮತಿಗಳು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ.

RBAC ಅನ್ನು ಬಳಸಿಕೊಂಡು ನಾವು ಬಳಕೆದಾರ/ಗುಂಪು ಹಕ್ಕುಗಳನ್ನು ನಿರ್ವಹಿಸಬಹುದು, ಇದರ ಬಗ್ಗೆ ಈಗಾಗಲೇ ಲೇಖನಗಳ ಗುಂಪನ್ನು ರಚಿಸಲಾಗಿದೆ, ನಾನು ಇದರ ಬಗ್ಗೆ ವಿವರವಾಗಿ ವಾಸಿಸುವುದಿಲ್ಲ. ಸಮಸ್ಯೆಯೆಂದರೆ ನೀವು ಬಳಕೆದಾರರ ಹಕ್ಕುಗಳನ್ನು ನಿರ್ಬಂಧಿಸಲು RBAC ಅನ್ನು ಬಳಸಬಹುದು, ಆದರೆ Kubernetes ಗೆ ಬಳಕೆದಾರರ ಬಗ್ಗೆ ಏನೂ ತಿಳಿದಿಲ್ಲ. ಕುಬರ್ನೆಟ್ಸ್‌ನಲ್ಲಿ ನಮಗೆ ಬಳಕೆದಾರ ವಿತರಣಾ ಕಾರ್ಯವಿಧಾನದ ಅಗತ್ಯವಿದೆ ಎಂದು ಅದು ತಿರುಗುತ್ತದೆ. ಇದನ್ನು ಮಾಡಲು, ನಾವು ಕುಬರ್ಂಟೆಸ್ ಓಪನ್ ಐಡಿಗೆ ಒದಗಿಸುವವರನ್ನು ಸೇರಿಸುತ್ತೇವೆ, ಇದು ಅಂತಹ ಬಳಕೆದಾರರು ನಿಜವಾಗಿಯೂ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ ಎಂದು ಸೂಚಿಸುತ್ತದೆ ಮತ್ತು ಕುಬರ್ನೆಟ್ಸ್ ಸ್ವತಃ ಅವರಿಗೆ ಹಕ್ಕುಗಳನ್ನು ನೀಡುತ್ತದೆ.

ತರಬೇತಿ

  • ನಿಮಗೆ ಕುಬರ್ನೆಟ್ಸ್ ಕ್ಲಸ್ಟರ್ ಅಥವಾ ಮಿನಿಕ್ಯೂಬ್ ಅಗತ್ಯವಿದೆ
  • ಸಕ್ರಿಯ ಡೈರೆಕ್ಟರಿ
  • ಡೊಮೇನ್‌ಗಳು:
    keycloak.example.org
    kubernetes-dashboard.example.org
    gangway.example.org
  • ಡೊಮೇನ್‌ಗಳಿಗೆ ಪ್ರಮಾಣಪತ್ರ ಅಥವಾ ಸ್ವಯಂ-ಸಹಿ ಪ್ರಮಾಣಪತ್ರ

ಸ್ವಯಂ-ಸಹಿ ಪ್ರಮಾಣಪತ್ರವನ್ನು ಹೇಗೆ ರಚಿಸುವುದು ಎಂಬುದರ ಕುರಿತು ನಾನು ವಿವರವಾಗಿ ಹೋಗುವುದಿಲ್ಲ; ನೀವು 2 ಪ್ರಮಾಣಪತ್ರಗಳನ್ನು ರಚಿಸಬೇಕಾಗಿದೆ, ಇದು ರೂಟ್ (ಪ್ರಮಾಣೀಕರಣ ಪ್ರಾಧಿಕಾರ) ಮತ್ತು *.example.org ಡೊಮೇನ್‌ಗಾಗಿ ಕ್ಲೈಂಟ್ ವೈಲ್ಡ್‌ಕಾರ್ಡ್ ಆಗಿದೆ

ನೀವು ಪ್ರಮಾಣಪತ್ರಗಳನ್ನು ಸ್ವೀಕರಿಸಿದ/ಬರೆದ ನಂತರ, ನೀವು ಕ್ಲೈಂಟ್ ಪ್ರಮಾಣಪತ್ರವನ್ನು ಕುಬರ್ನೆಟ್ಸ್‌ಗೆ ಸೇರಿಸುವ ಅಗತ್ಯವಿದೆ; ಇದನ್ನು ಮಾಡಲು, ಅದಕ್ಕಾಗಿ ರಹಸ್ಯವನ್ನು ರಚಿಸಿ:

kubectl create secret tls tls-keycloak --cert=example.org.crt --key=example.org.pem

ಮುಂದೆ ನಾವು ಅದನ್ನು ನಮ್ಮ ಪ್ರವೇಶ ನಿಯಂತ್ರಕಕ್ಕಾಗಿ ಬಳಸುತ್ತೇವೆ

ಕೀಕ್ಲೋಕ್ ಸ್ಥಾಪನೆ

ಇದಕ್ಕಾಗಿ ರೆಡಿಮೇಡ್ ಪರಿಹಾರಗಳನ್ನು ಬಳಸುವುದು ಸುಲಭವಾದ ಮಾರ್ಗವಾಗಿದೆ ಎಂದು ನಾನು ನಿರ್ಧರಿಸಿದೆ, ಅವುಗಳೆಂದರೆ ಹೆಲ್ಮ್ ಚಾರ್ಟ್‌ಗಳು.

ರೆಪೊಸಿಟರಿಯನ್ನು ಸ್ಥಾಪಿಸಿ ಮತ್ತು ಅದನ್ನು ನವೀಕರಿಸಿ:

helm repo add codecentric https://codecentric.github.io/helm-charts
helm repo update

ಕೆಳಗಿನ ವಿಷಯದೊಂದಿಗೆ keycloak.yml ಫೈಲ್ ಅನ್ನು ರಚಿಸಿ:

keycloak.yml

keycloak:
  # Имя администратора
  username: "test_admin"
  # Пароль администратор  
  password: "admin"
  # Эти флаги нужны что бы позволить загружать в Keycloak скрипты прямо через web морду. Это нам 
  понадобиться что бы починить один баг, о котором ниже.
  extraArgs: "-Dkeycloak.profile.feature.script=enabled -Dkeycloak.profile.feature.upload_scripts=enabled" 
  # Включаем ingress, указываем имя хоста и сертификат который мы предварительно сохранили в secrets
  ingress:
    enabled: true 
    path: /
    annotations:
      kubernetes.io/ingress.class: nginx
      ingress.kubernetes.io/affinity: cookie
    hosts:
      - keycloak.example.org
    tls:
    - hosts:
        - keycloak.example.org
      secretName: tls-keycloak
  # Keycloak для своей работы требует базу данных, в тестовых целях я разворачиваю Postgresql прямо в Kuberntes, в продакшене так лучше не делать!
  persistence:
    deployPostgres: true
    dbVendor: postgres

postgresql:
  postgresUser: keycloak
  postgresPassword: ""
  postgresDatabase: keycloak
  persistence:
    enabled: true

ಒಕ್ಕೂಟದ ಸ್ಥಾಪನೆ

ಮುಂದೆ, ವೆಬ್ ಇಂಟರ್ಫೇಸ್ಗೆ ಹೋಗಿ keycloak.example.org

ಎಡ ಮೂಲೆಯಲ್ಲಿ ಕ್ಲಿಕ್ ಮಾಡಿ ಕ್ಷೇತ್ರವನ್ನು ಸೇರಿಸಿ

ಕೀ
ಮೌಲ್ಯ

ಹೆಸರು
ಕುಬರ್ನೆಟ್

ಪ್ರದರ್ಶನ ಹೆಸರು
ಕುಬರ್ನೆಟ್ಸ್

ಬಳಕೆದಾರರ ಇಮೇಲ್ ದೃಢೀಕರಣ ಪರಿಶೀಲನೆಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ:
ಕ್ಲೈಂಟ್ ಸ್ಕೋಪ್‌ಗಳು —> ಇಮೇಲ್ —> ಮ್ಯಾಪರ್‌ಗಳು —> ಇಮೇಲ್ ಪರಿಶೀಲಿಸಲಾಗಿದೆ (ಅಳಿಸಿ)

ಆಕ್ಟಿವ್ ಡೈರೆಕ್ಟರಿಯಿಂದ ಬಳಕೆದಾರರನ್ನು ಆಮದು ಮಾಡಿಕೊಳ್ಳಲು ನಾವು ಫೆಡರೇಶನ್ ಅನ್ನು ಸ್ಥಾಪಿಸುತ್ತಿದ್ದೇವೆ, ನಾನು ಸ್ಕ್ರೀನ್‌ಶಾಟ್‌ಗಳನ್ನು ಕೆಳಗೆ ಬಿಡುತ್ತೇನೆ, ಅದು ಸ್ಪಷ್ಟವಾಗುತ್ತದೆ ಎಂದು ನಾನು ಭಾವಿಸುತ್ತೇನೆ.

ಬಳಕೆದಾರ ಒಕ್ಕೂಟ -> ಒದಗಿಸುವವರನ್ನು ಸೇರಿಸಿ... -> ldap

ಒಕ್ಕೂಟದ ಸ್ಥಾಪನೆನಾವು Keycloak ಅನ್ನು ಬಳಸಿಕೊಂಡು Kubernetes ಗೆ ActiveDirectory ದೃಢೀಕರಣವನ್ನು ಜೋಡಿಸುತ್ತೇವೆ
ನಾವು Keycloak ಅನ್ನು ಬಳಸಿಕೊಂಡು Kubernetes ಗೆ ActiveDirectory ದೃಢೀಕರಣವನ್ನು ಜೋಡಿಸುತ್ತೇವೆ

ಎಲ್ಲವೂ ಉತ್ತಮವಾಗಿದ್ದರೆ, ಗುಂಡಿಯನ್ನು ಒತ್ತಿದ ನಂತರ ಎಲ್ಲಾ ಬಳಕೆದಾರರನ್ನು ಸಿಂಕ್ರೊನೈಸ್ ಮಾಡಿ ಬಳಕೆದಾರರ ಯಶಸ್ವಿ ಆಮದು ಸೂಚಿಸುವ ಸಂದೇಶವನ್ನು ನೀವು ನೋಡುತ್ತೀರಿ.

ಮುಂದೆ ನಾವು ನಮ್ಮ ಗುಂಪುಗಳನ್ನು ನಕ್ಷೆ ಮಾಡಬೇಕಾಗಿದೆ

ಬಳಕೆದಾರ ಒಕ್ಕೂಟ -> ldap_localhost -> ಮ್ಯಾಪರ್ಸ್ -> ರಚಿಸಿ

ಮ್ಯಾಪರ್ ರಚಿಸಲಾಗುತ್ತಿದೆನಾವು Keycloak ಅನ್ನು ಬಳಸಿಕೊಂಡು Kubernetes ಗೆ ActiveDirectory ದೃಢೀಕರಣವನ್ನು ಜೋಡಿಸುತ್ತೇವೆ

ಕ್ಲೈಂಟ್ ಸೆಟಪ್

ನೀವು ಕ್ಲೈಂಟ್ ಅನ್ನು ರಚಿಸಬೇಕಾಗಿದೆ, ಕೀಕ್ಲೋಕ್‌ನ ಪರಿಭಾಷೆಯಲ್ಲಿ ಇದು ಅಧಿಕೃತಗೊಳಿಸಲಾದ ಅಪ್ಲಿಕೇಶನ್ ಆಗಿದೆ. ಸ್ಕ್ರೀನ್‌ಶಾಟ್‌ನಲ್ಲಿ ನಾನು ಪ್ರಮುಖ ಅಂಶಗಳನ್ನು ಕೆಂಪು ಬಣ್ಣದಲ್ಲಿ ಹೈಲೈಟ್ ಮಾಡುತ್ತೇನೆ.

ಗ್ರಾಹಕರು -> ರಚಿಸಿ

ಕ್ಲೈಂಟ್ ಸೆಟಪ್ನಾವು Keycloak ಅನ್ನು ಬಳಸಿಕೊಂಡು Kubernetes ಗೆ ActiveDirectory ದೃಢೀಕರಣವನ್ನು ಜೋಡಿಸುತ್ತೇವೆ

ಗುಂಪುಗಳಿಗಾಗಿ ಸ್ಕೂಪ್ ಅನ್ನು ರಚಿಸೋಣ:

ಗ್ರಾಹಕ ವ್ಯಾಪ್ತಿಗಳು -> ರಚಿಸಿ

ವ್ಯಾಪ್ತಿಯನ್ನು ರಚಿಸುವುದುನಾವು Keycloak ಅನ್ನು ಬಳಸಿಕೊಂಡು Kubernetes ಗೆ ActiveDirectory ದೃಢೀಕರಣವನ್ನು ಜೋಡಿಸುತ್ತೇವೆ

ಮತ್ತು ಅವರಿಗೆ ಮ್ಯಾಪರ್ ಅನ್ನು ಹೊಂದಿಸಿ:

ಕ್ಲೈಂಟ್ ಸ್ಕೋಪ್‌ಗಳು -> ಗುಂಪುಗಳು -> ಮ್ಯಾಪರ್‌ಗಳು -> ರಚಿಸಿ

ಮ್ಯಾಪರ್ನಾವು Keycloak ಅನ್ನು ಬಳಸಿಕೊಂಡು Kubernetes ಗೆ ActiveDirectory ದೃಢೀಕರಣವನ್ನು ಜೋಡಿಸುತ್ತೇವೆ

ನಾವು ನಮ್ಮ ಗುಂಪುಗಳ ಮ್ಯಾಪಿಂಗ್ ಅನ್ನು ಡಿಫಾಲ್ಟ್ ಕ್ಲೈಂಟ್ ಸ್ಕೋಪ್‌ಗಳಿಗೆ ಸೇರಿಸುತ್ತೇವೆ:

ಕ್ಲೈಂಟ್‌ಗಳು -> ಕುಬರ್ನೆಟ್ಸ್ -> ಕ್ಲೈಂಟ್ ಸ್ಕೋಪ್‌ಗಳು -> ಡೀಫಾಲ್ಟ್ ಕ್ಲೈಂಟ್ ಸ್ಕೋಪ್‌ಗಳು
ಆಯ್ಕೆಮಾಡಿ ಗುಂಪುಗಳು в ಲಭ್ಯವಿರುವ ಕ್ಲೈಂಟ್ ವ್ಯಾಪ್ತಿಗಳು, ಒತ್ತಿ ಆಯ್ಕೆಮಾಡಿದ ಸೇರಿಸಿ

ನಾವು ರಹಸ್ಯವನ್ನು ಪಡೆಯುತ್ತೇವೆ (ಮತ್ತು ಅದನ್ನು ಎಲ್ಲೋ ಬರೆಯಿರಿ) ಅದನ್ನು ನಾವು ಕೀಕ್ಲೋಕ್‌ನಲ್ಲಿ ದೃಢೀಕರಣಕ್ಕಾಗಿ ಬಳಸುತ್ತೇವೆ:

ಗ್ರಾಹಕರು -> ಕುಬರ್ನೆಟ್ಸ್ -> ರುಜುವಾತುಗಳು -> ರಹಸ್ಯ
ಇದು ಸೆಟಪ್ ಅನ್ನು ಪೂರ್ಣಗೊಳಿಸುತ್ತದೆ, ಆದರೆ ಯಶಸ್ವಿ ದೃಢೀಕರಣದ ನಂತರ ನಾನು 403 ದೋಷವನ್ನು ಸ್ವೀಕರಿಸಿದಾಗ ನಾನು ದೋಷವನ್ನು ಹೊಂದಿದ್ದೇನೆ. ಬಗ್ ವರದಿ.

ಸರಿಪಡಿಸಿ:

ಕ್ಲೈಂಟ್ ಸ್ಕೋಪ್‌ಗಳು -> ಪಾತ್ರಗಳು -> ಮ್ಯಾಪರ್‌ಗಳು -> ರಚಿಸಿ

ಮ್ಯಾಪರ್ನಾವು Keycloak ಅನ್ನು ಬಳಸಿಕೊಂಡು Kubernetes ಗೆ ActiveDirectory ದೃಢೀಕರಣವನ್ನು ಜೋಡಿಸುತ್ತೇವೆ

ಸ್ಕ್ರಿಪ್ಟ್ ಕೋಡ್

// add current client-id to token audience
token.addAudience(token.getIssuedFor());

// return token issuer as dummy result assigned to iss again
token.getIssuer();

ಕುಬರ್ನೆಟ್ಸ್ ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾಗುತ್ತಿದೆ

ಸೈಟ್‌ನಿಂದ ನಮ್ಮ ಮೂಲ ಪ್ರಮಾಣಪತ್ರ ಎಲ್ಲಿದೆ ಮತ್ತು OIDC ಪೂರೈಕೆದಾರರು ಎಲ್ಲಿದ್ದಾರೆ ಎಂಬುದನ್ನು ನಾವು ಸೂಚಿಸಬೇಕಾಗಿದೆ.
ಇದನ್ನು ಮಾಡಲು, /etc/kubernetes/manifests/kube-apiserver.yaml ಫೈಲ್ ಅನ್ನು ಎಡಿಟ್ ಮಾಡಿ

kube-apserver.yaml


...
spec:
  containers:
  - command:
    - kube-apiserver
...
    - --oidc-ca-file=/var/lib/minikube/certs/My_Root.crt
    - --oidc-client-id=kubernetes
    - --oidc-groups-claim=groups
    - --oidc-issuer-url=https://keycloak.example.org/auth/realms/kubernetes
    - --oidc-username-claim=email
...

ಕ್ಲಸ್ಟರ್‌ನಲ್ಲಿ kubeadm ಸಂರಚನೆಯನ್ನು ನವೀಕರಿಸಿ:

kubeadm ಸಂರಚನೆ

kubectl edit -n kube-system configmaps kubeadm-config


...
data:
  ClusterConfiguration: |
    apiServer:
      extraArgs:
        oidc-ca-file: /var/lib/minikube/certs/My_Root.crt
        oidc-client-id: kubernetes
        oidc-groups-claim: groups
        oidc-issuer-url: https://keycloak.example.org/auth/realms/kubernetes
        oidc-username-claim: email
...

ದೃಢೀಕರಣ-ಪ್ರಾಕ್ಸಿಯನ್ನು ಹೊಂದಿಸಲಾಗುತ್ತಿದೆ

ನಿಮ್ಮ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ರಕ್ಷಿಸಲು, ನೀವು ಕೀಕ್ಲೋಕ್ ಗೇಟ್‌ಕೀಪರ್ ಅನ್ನು ಬಳಸಬಹುದು. ಈ ರಿವರ್ಸ್ ಪ್ರಾಕ್ಸಿಯು ಪುಟವನ್ನು ತೋರಿಸುವ ಮೊದಲು ಬಳಕೆದಾರರನ್ನು ದೃಢೀಕರಿಸುತ್ತದೆ ಎಂಬ ಅಂಶದ ಜೊತೆಗೆ, ಇದು ಹೆಡರ್‌ಗಳಲ್ಲಿ ನಿಮ್ಮ ಬಗ್ಗೆ ಮಾಹಿತಿಯನ್ನು ಅಂತಿಮ ಅಪ್ಲಿಕೇಶನ್‌ಗೆ ರವಾನಿಸುತ್ತದೆ. ಹೀಗಾಗಿ, ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ OpenID ಅನ್ನು ಬೆಂಬಲಿಸಿದರೆ, ಬಳಕೆದಾರನು ತಕ್ಷಣವೇ ಅಧಿಕಾರವನ್ನು ಪಡೆಯುತ್ತಾನೆ. ಕುಬರ್ನೆಟ್ಸ್ ಡ್ಯಾಶ್‌ಬೋರ್ಡ್‌ನ ಉದಾಹರಣೆಯನ್ನು ನೋಡೋಣ

ಕುಬರ್ನೆಟ್ಸ್ ಡ್ಯಾಶ್‌ಬೋರ್ಡ್ ಅನ್ನು ಸ್ಥಾಪಿಸಲಾಗುತ್ತಿದೆ


helm install stable/kubernetes-dashboard --name dashboard -f values_dashboard.yaml

values_dashboard.yaml

enableInsecureLogin: true
service:
  externalPort: 80
rbac:
  clusterAdminRole: true
  create: true
serviceAccount:
  create: true
  name: 'dashboard-test'

ಪ್ರವೇಶ ಹಕ್ಕುಗಳನ್ನು ಹೊಂದಿಸುವುದು:

DataOPS ಗುಂಪಿನಲ್ಲಿರುವ ಬಳಕೆದಾರರಿಗೆ ಕ್ಲಸ್ಟರ್ ನಿರ್ವಾಹಕ ಹಕ್ಕುಗಳನ್ನು (ಸ್ಟ್ಯಾಂಡರ್ಡ್ ClusterRole ಕ್ಲಸ್ಟರ್-ನಿರ್ವಾಹಕ) ನೀಡುವ ClusterRoleBinding ಅನ್ನು ರಚಿಸೋಣ.


kubectl apply -f rbac.yaml

rbac.yaml


apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: dataops_group
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: Group
  name: DataOPS

ಕೀಕ್ಲೋಕ್ ಗೇಟ್‌ಕೀಪರ್ ಅನ್ನು ಸ್ಥಾಪಿಸುವುದು:


helm repo add gabibbo97 https://gabibbo97.github.io/charts/
helm repo update
helm install gabibbo97/keycloak-gatekeeper --version 2.1.0 --name keycloak-gatekeeper -f values_proxy.yaml

values_proxy.yaml



# Включаем ingress
ingress:
  enabled: true
  annotations:
    kubernetes.io/ingress.class: nginx
  path: /
  hosts:
    - kubernetes-dashboard.example.org
  tls:
   - secretName: tls-keycloak
     hosts:
       - kubernetes-dashboard.example.org

# Говорим где мы будем авторизовываться у OIDC провайдера
discoveryURL: "https://keycloak.example.org/auth/realms/kubernetes"
# Имя клиента которого мы создали в Keycloak
ClientID: "kubernetes"
# Secret который я просил записать
ClientSecret: "c6ec03b8-d0b8-4cb6-97a0-03becba1d727"
# Куда перенаправить в случае успешной авторизации. Формат <SCHEMA>://<SERVICE_NAME>.><NAMESAPCE>.<CLUSTER_NAME>
upstreamURL: "http://dashboard-kubernetes-dashboard.default.svc.cluster.local"
# Пропускаем проверку сертификата, если у нас самоподписанный
skipOpenidProviderTlsVerify: true
# Настройка прав доступа, пускаем на все path если мы в группе DataOPS
rules:
  - "uri=/*|groups=DataOPS"

ಅದರ ನಂತರ, ನೀವು ಲಾಗ್ ಇನ್ ಮಾಡಲು ಪ್ರಯತ್ನಿಸಿದಾಗ kubernetes-dashboard.example.org, ಕೀಕ್ಲೋಕ್‌ಗೆ ಮರುನಿರ್ದೇಶನ ಸಂಭವಿಸುತ್ತದೆ ಮತ್ತು ದೃಢೀಕರಣವು ಯಶಸ್ವಿಯಾದರೆ, ಈಗಾಗಲೇ ಲಾಗ್ ಇನ್ ಆಗಿರುವ ಡ್ಯಾಶ್‌ಬೋರ್ಡ್‌ಗೆ ನಮ್ಮನ್ನು ಕರೆದೊಯ್ಯಲಾಗುತ್ತದೆ.

ಗ್ಯಾಂಗ್ವೇ ಸ್ಥಾಪನೆ

ಅನುಕೂಲಕ್ಕಾಗಿ, ನೀವು kubectl ಗಾಗಿ ಕಾನ್ಫಿಗರ್ ಫೈಲ್ ಅನ್ನು ರಚಿಸುವ ಗ್ಯಾಂಗ್‌ವೇ ಅನ್ನು ಸೇರಿಸಬಹುದು, ಅದರ ಸಹಾಯದಿಂದ ನಾವು ನಮ್ಮ ಬಳಕೆದಾರರ ಅಡಿಯಲ್ಲಿ ಕುಬರ್ನೆಟ್ಸ್‌ಗೆ ಹೋಗುತ್ತೇವೆ.


helm install --name gangway stable/gangway -f values_gangway.yaml

values_gangway.yaml


gangway:
  # Произвольное имя кластера
  clusterName: "my-k8s"
  # Где у нас OIDC провайдер
  authorizeURL: "https://keycloak.example.org/auth/realms/kubernetes/protocol/openid-connect/auth"
  tokenURL: "https://keycloak.example.org/auth/realms/kubernetes/protocol/openid-connect/token"
  audience: "https://keycloak.example.org/auth/realms/kubernetes/protocol/openid-connect/userinfo"
  # Теоритически сюда можно добавить groups которые мы замапили
  scopes: ["openid", "profile", "email", "offline_access"]
  redirectURL: "https://gangway.example.org/callback"
  # Имя клиента
  clientID: "kubernetes"
  # Секрет
  clientSecret: "c6ec03b8-d0b8-4cb6-97a0-03becba1d727"
  # Если оставить дефолтное значние, то за имя пользователя будет братья <b>Frist name</b> <b>Second name</b>, а при "sub" его логин
  usernameClaim: "sub"
  # Доменное имя или IP адресс API сервера
  apiServerURL: "https://192.168.99.111:8443"

# Включаем Ingress
ingress:
  enabled: true
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/proxy-buffer-size: "64k"
  path: /
  hosts:
  - gangway.example.org
  tls:
  - secretName: tls-keycloak
    hosts:
      - gangway.example.org

# Если используем самоподписанный сертификат, то его(открытый корневой сертификат) надо указать.
trustedCACert: |-
 -----BEGIN CERTIFICATE-----
 MIIDVzCCAj+gAwIBAgIBATANBgkqhkiG9w0BAQsFADA1MQswCQYDVQQGEwJVUzEQMA4GA1UEChMHRGF0YU9QUzEUMBIGA1UEAxMLbXkgcm9vdCBrZXkwHhcNMjAwMjE0MDkxODAwWhcNMzAwMjE0MDkxODAwWjA1MQswCQYDVQQGEwJVUzEQMA4GA1UEChMHRGF0YU9QUzEUMBIGA1UEAxMLbXkgcm9vdCBrZXkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDyP749PqqIRwNSqaK6qr0Zsi03G4PTCUlgaYTPZuMrwUVPK8xX2dWWs9MPRMOdXpgr8aSTZnVfmelIlVz4D7o2vK5rfmAe9GPcK0WbwKwXyhFU0flS9sU/g46ogHFrk03SZxQAeJhMLfEmAJm8LF5HghtGDs3t4uwGsB95o+lqPLiBvxRB8ZS3jSpYpvPgXAuZWKdZUQ3UUZf0X3hGLp7uIcIwJ7i4MduOGaQEO4cePeEJy9aDAO6qV78YmHbyh9kaW+1DL/Sgq8NmTgHGV6UOnAPKHTnMKXl6KkyUz8uLBGIdVhPxrlzG1EzXresJbJenSZ+FZqm3oLqZbw54Yp5hAgMBAAGjcjBwMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFHISTOU/6BQqqnOZj+1xJfxpjiG0MAsGA1UdDwQEAwIBBjARBglghkgBhvhCAQEEBAMCAAcwHgYJYIZIAYb4QgENBBEWD3hjYSBjZXJ0aWZpY2F0ZTANBgkqhkiG9w0BAQsFAAOCAQEAj7HC8ObibwOLT4ZYmISJZwub9lcE0AZ5cWkPW39j/syhdbbqjK/6jy2D3WUEbR+s1Vson5Ov7JhN5In2yfZ/ByDvBnoj7CP8Q/ZMjTJgwN7j0rgmEb3CTZvnDPAz8Ijw3FP0cjxfoZ1Z0V2F44Ry7gtLJWr06+MztXVyto3aIz1/XbMQnXYlzc3c3B5yUQIy44Ce5aLRVsAjmXNqVRmDJ2QPNLicvrhnUJsO0zFWI+zZ2hc4Ge1RotCrjfOc9hQY63jZJ17myCZ6QCD7yzMzAob4vrgmkD4q7tpGrhPY/gDcE+lUNhC7DO3l0oPy2wsnT2TEn87eyWmDiTFG9zWDew==
 -----END CERTIFICATE-----

ಇದು ಈ ರೀತಿ ಕಾಣುತ್ತದೆ. ಸಂರಚನಾ ಫೈಲ್ ಅನ್ನು ತಕ್ಷಣವೇ ಡೌನ್‌ಲೋಡ್ ಮಾಡಲು ಮತ್ತು ಆಜ್ಞೆಗಳ ಗುಂಪನ್ನು ಬಳಸಿಕೊಂಡು ಅದನ್ನು ರಚಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ:

ನಾವು Keycloak ಅನ್ನು ಬಳಸಿಕೊಂಡು Kubernetes ಗೆ ActiveDirectory ದೃಢೀಕರಣವನ್ನು ಜೋಡಿಸುತ್ತೇವೆ

ಮೂಲ: www.habr.com

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ