Skip to content

GithubTeam CRD

GithubTeam is a namespace-scoped resource that maps a desired GitHub team to a membership provider. The controller resolves the member list from the configured provider and syncs it to GitHub.

Example

yaml
apiVersion: repo-guard.cloudoperators.dev/v1
kind: GithubTeam
metadata:
  name: com--greenhouse-sandbox--eng
  namespace: default
  labels:
    repo-guard.cloudoperators.dev/addUser: "true"
    repo-guard.cloudoperators.dev/removeUser: "true"
spec:
  github: com
  organization: greenhouse-sandbox
  team: eng

Spec Fields

FieldTypeRequiredDescription
githubstringYesName of the Github resource.
organizationstringYesGitHub organization slug.
teamstringYesGitHub team slug to manage.
greenhouseTeamstringNoGreenhouse Team CRD name to use as member source. Mutually exclusive with externalMemberProvider.
externalMemberProviderobjectNoExternal member source configuration.

Member Provider Options

Exactly one of the following should be specified (either greenhouseTeam or one key under externalMemberProvider):

Option A — Namespaced LDAP

yaml
spec:
  externalMemberProvider:
    ldap:
      provider: engineering-ldap   # LDAPGroupProvider name
      group: cn=eng,ou=groups,dc=example,dc=com

Option B — Cluster-scoped LDAP

yaml
spec:
  externalMemberProvider:
    ldap:
      kind: ClusterLDAPGroupProvider
      provider: shared-ldap
      group: cn=shared,ou=groups,dc=global,dc=com

Option C — Namespaced Static

yaml
spec:
  externalMemberProvider:
    static:
      provider: static-seed
      group: any

Option D — Cluster-scoped Static

yaml
spec:
  externalMemberProvider:
    static:
      kind: ClusterStaticMemberProvider
      provider: global-static
      group: admins

Option E — Namespaced HTTP

yaml
spec:
  externalMemberProvider:
    genericHTTP:
      provider: http-eng
      group: eng-members  # provider-specific group/path identifier, not related to resultsField

Option F — Cluster-scoped HTTP

yaml
spec:
  externalMemberProvider:
    genericHTTP:
      kind: ClusterGenericExternalMemberProvider
      provider: global-http
      group: global-members  # provider-specific group/path identifier, not related to resultsField

Option G — Greenhouse

yaml
spec:
  greenhouseTeam: engineering   # Greenhouse Team CRD name

Labels

See the full Labels Reference for all supported labels.

KeyEffect
repo-guard.cloudoperators.dev/addUserAllow adding members. Defaults to allowed when unset.
repo-guard.cloudoperators.dev/removeUserAllow removing members. Defaults to allowed when unset.
repo-guard.cloudoperators.dev/dryRunPrevent mutations; write planned operations to status.
repo-guard.cloudoperators.dev/disableInternalUsernamesFilter out members where GreenhouseID matches GithubUsername.
repo-guard.cloudoperators.dev/require-verified-domain-emailOnly allow members with a verified email under the specified domain.

Released under the Apache 2.0 License.