18.4. LDAP 그룹 자동 동기화
cron 작업을 구성하여 정기적으로 LDAP 그룹을 동기화할 수 있습니다.
사전 요구 사항
-
cluster-admin
역할의 사용자로 클러스터에 액세스할 수 있어야 합니다. LDAP ID 공급자(IDP)를 구성했습니다.
이 절차에서는
ldap-secret
이라는 LDAP 시크릿과ca-config-map
이라는 구성 맵을 생성했다고 가정합니다.
프로세스
cron 작업이 실행될 프로젝트를 생성합니다.
$ oc new-project ldap-sync 1
- 1
- 이 절차에서는
ldap-sync
라는 프로젝트를 사용합니다.
LDAP ID 공급자를 구성할 때 생성한 시크릿 및 구성 맵을 찾아 이 새 프로젝트에 복사합니다.
시크릿 및 구성 맵은
openshift-config
프로젝트에 있으며 새ldap-sync
프로젝트에 복사해야 합니다.서비스 계정을 정의합니다.
예:
ldap-sync-service-account.yaml
kind: ServiceAccount apiVersion: v1 metadata: name: ldap-group-syncer namespace: ldap-sync
서비스 계정을 생성합니다.
$ oc create -f ldap-sync-service-account.yaml
클러스터 역할을 정의합니다.
예:
ldap-sync-cluster-role.yaml
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: ldap-group-syncer rules: - apiGroups: - '' - user.openshift.io resources: - groups verbs: - get - list - create - update
클러스터 역할을 생성합니다.
$ oc create -f ldap-sync-cluster-role.yaml
클러스터 역할을 서비스 계정에 바인딩할 클러스터 역할 바인딩을 정의합니다.
예:
ldap-sync-cluster-role-binding.yaml
kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: ldap-group-syncer subjects: - kind: ServiceAccount name: ldap-group-syncer 1 namespace: ldap-sync roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: ldap-group-syncer 2
클러스터 역할 바인딩을 생성합니다.
$ oc create -f ldap-sync-cluster-role-binding.yaml
동기화 구성 파일을 지정하는 구성 맵을 정의합니다.
예:
ldap-sync-config-map.yaml
kind: ConfigMap apiVersion: v1 metadata: name: ldap-group-syncer namespace: ldap-sync data: sync.yaml: | 1 kind: LDAPSyncConfig apiVersion: v1 url: ldaps://10.0.0.0:389 2 insecure: false bindDN: cn=admin,dc=example,dc=com 3 bindPassword: file: "/etc/secrets/bindPassword" ca: /etc/ldap-ca/ca.crt rfc2307: 4 groupsQuery: baseDN: "ou=groups,dc=example,dc=com" 5 scope: sub filter: "(objectClass=groupOfMembers)" derefAliases: never pageSize: 0 groupUIDAttribute: dn groupNameAttributes: [ cn ] groupMembershipAttributes: [ member ] usersQuery: baseDN: "ou=users,dc=example,dc=com" 6 scope: sub derefAliases: never pageSize: 0 userUIDAttribute: dn userNameAttributes: [ uid ] tolerateMemberNotFoundErrors: false tolerateMemberOutOfScopeErrors: false
config map을 생성합니다.
$ oc create -f ldap-sync-config-map.yaml
cron 작업을 정의합니다.
예:
ldap-sync-cron-job.yaml
kind: CronJob apiVersion: batch/v1 metadata: name: ldap-group-syncer namespace: ldap-sync spec: 1 schedule: "*/30 * * * *" 2 concurrencyPolicy: Forbid jobTemplate: spec: backoffLimit: 0 ttlSecondsAfterFinished: 1800 3 template: spec: containers: - name: ldap-group-sync image: "registry.redhat.io/openshift4/ose-cli:latest" command: - "/bin/bash" - "-c" - "oc adm groups sync --sync-config=/etc/config/sync.yaml --confirm" 4 volumeMounts: - mountPath: "/etc/config" name: "ldap-sync-volume" - mountPath: "/etc/secrets" name: "ldap-bind-password" - mountPath: "/etc/ldap-ca" name: "ldap-ca" volumes: - name: "ldap-sync-volume" configMap: name: "ldap-group-syncer" - name: "ldap-bind-password" secret: secretName: "ldap-secret" 5 - name: "ldap-ca" configMap: name: "ca-config-map" 6 restartPolicy: "Never" terminationGracePeriodSeconds: 30 activeDeadlineSeconds: 500 dnsPolicy: "ClusterFirst" serviceAccountName: "ldap-group-syncer"
- 1
- cron 작업의 설정을 구성합니다. cron 작업 설정에 대한 자세한 내용은 "Cron 작업 생성"에서 참조하십시오.
- 2
- cron 형식으로 지정된 작업의 스케줄입니다. 이 예제 cron 작업은 30분마다 실행됩니다. 필요에 따라 빈도를 조정하여 동기화를 실행하는 데 걸리는 시간을 고려합니다.
- 3
- 작업을 계속 완료하는 데 걸리는 시간(초)입니다. 오래된 실패한 작업을 정리하고 불필요한 경고를 방지하기 위해 작업 일정 기간과 일치해야 합니다. 자세한 내용은 Kubernetes 문서의 TTL-after-finished Controller 를 참조하십시오.
- 4
- 실행할 cron 작업의 LDAP 동기화 명령입니다. 구성 맵에 정의된 동기화 구성 파일에서 전달합니다.
- 5
- 이 시크릿은 LDAP IDP를 구성할 때 생성되었습니다.
- 6
- 이 구성 맵은 LDAP IDP 구성 시 생성되었습니다.
cron 작업을 생성합니다.
$ oc create -f ldap-sync-cron-job.yaml
추가 리소스