Project Provider Kinds

Look up the fields, identifiers, and caveats of every Kind in the JFrog Crossplane Project provider.

This page lists every Kind of the provider-project package releases-authenticated-docker.jfrog.io/jfrog/crossplane-provider-project:v0.0.1. The package requires registry credentials. For more information, see Install the JFrog Crossplane Providers. The provider configuration API group is project.m.crossplane.io. The provider has 8 Kinds, all version v1alpha1.

The apiVersion of each Kind is <group>/v1alpha1. The legacy cluster-scoped variant drops .m from the group. For more information about how to read an entry, see JFrog Crossplane Kinds Reference.

Projects and Environments

JFrog Projects and their environments. API group project.project.m.crossplane.io, 2 Kinds.

Environment

Creates a new environment for the specified project.

  • kubectl: environments.project.project.m.crossplane.io.
  • Identifier: metadata.name is the name.
  • Upstream: project_environment.
  • Fields: required projectKey.
  • Immutable: projectKey.
  • References: projectKeyRef to Project.
  • The API stores the environment as <projectKey>-<name>. The combined length must be at most 32 characters.
  • Delete environments before their project. After the project is gone, the environment refresh fails with Could not find project and the finalizer never clears.
  • projectKey is immutable.

Project

Provides an Artifactory project resource.

  • kubectl: projects.project.project.m.crossplane.io.
  • Identifier: metadata.name is the key.
  • Upstream: project_project.
  • Fields: required displayName. Optional: adminPrivileges, blockDeploymentsOnLimit, description, emailNotification, group, maxStorageInGibibytes, member, repos, role, useProjectGroupResource, useProjectRepositoryResource, useProjectRoleResource, useProjectUserResource.
  • metadata.name is the project key: 2-32 lowercase alphanumeric or hyphen characters, starting with a letter. displayName is the human-readable name.
  • Requires an access token with the Administer the Platform permission (or Project Admin with adminPrivileges.manageResources).
  • Deletion removes the project and everything assigned to it. Deletion is slow and can take several minutes. Delete the project last, after environments, roles, member assignments, and repository assignments.
  • Choose keys that you own exclusively. If you adopt a generic key such as myproject on a shared JFrog Platform, deleting the managed resource deletes the project of someone else.

Project Roles and Membership

Custom project roles, and assignment of existing users and groups to a project. API group access.project.m.crossplane.io, 3 Kinds.

Group

Add a group as a project member.

  • kubectl: groups.access.project.m.crossplane.io.
  • Identifier: metadata.name is the name.
  • Upstream: project_group.
  • Fields: required projectKey, roles.
  • Immutable: projectKey.
  • References: projectKeyRef to Project.
  • Assignment only: metadata.name must be the name of an existing Artifactory or Platform group. This Kind adds the group to the project with roles. It doesn't create the group.
  • For some fields, updates have no effect. name and projectKey are immutable.

Role

Create a project role.

  • kubectl: roles.access.project.m.crossplane.io.
  • Identifier: metadata.name is the name.
  • Upstream: project_role.
  • Fields: required actions, environments, projectKey, type.
  • Immutable: projectKey.
  • References: projectKeyRef to Project.
  • Creates a custom project role. environments must name environments that exist in the project (for example, DEV, PROD, or a custom <projectKey>-<env>).
  • name and projectKey are immutable.

User

Add a user as a project member.

  • kubectl: users.access.project.m.crossplane.io.
  • Identifier: metadata.name is the name.
  • Upstream: project_user.
  • Fields: required projectKey, roles. Optional: ignoreMissingUser.
  • Immutable: projectKey.
  • References: projectKeyRef to Project.
  • Assignment only: metadata.name must be an existing user. This Kind adds the user to the project with roles.
  • name and projectKey are immutable.

Repository Assignment and Sharing

Assign repositories to a project and share them with other projects. These Kinds can't be updated: delete and recreate them. API group repository.project.m.crossplane.io, 3 Kinds.

Repository

Assign a repository to a project.

  • kubectl: repositories.repository.project.m.crossplane.io.
  • Identifier: metadata.name is the key.
  • Upstream: project_repository.
  • Fields: required projectKey.
  • Immutable: projectKey.
  • References: projectKeyRef to Project.
  • Assignment only: metadata.name is the key of an existing Artifactory repository. You can assign a repository to only one project at a time.
  • Updates aren't supported (upstream returns an Update not supported warning), and every field is immutable. To move a repository, delete and recreate the managed resource.

ShareRepository

Share a local or remote repository with a list of projects.

  • kubectl: sharerepositories.repository.project.m.crossplane.io.
  • Identifier: composite <repoKey>:<targetProjectKey>.
  • Upstream: project_share_repository.
  • Fields: required repoKey, targetProjectKey. Optional: readOnly.
  • Immutable: repoKey, targetProjectKey, readOnly.
  • References: targetProjectKeyRef to Project.
  • Requires Artifactory 7.90.1 or later. readOnly requires Artifactory 7.94.0 or later.
  • Every field is immutable, because updates have no effect. The external name is <repoKey>:<targetProjectKey>.

ShareRepositoryWithAll

Share a local or remote repository with all projects.

  • kubectl: sharerepositorywithalls.repository.project.m.crossplane.io.
  • Identifier: spec field repoKey. metadata.name is free.
  • Upstream: project_share_repository_with_all.
  • Fields: required repoKey. Optional: readOnly.
  • Immutable: repoKey, readOnly.
  • Requires Artifactory 7.90.1 or later. Shares the repository with every project.
  • Every field is immutable. The external name is the repository key.

Next Steps


Did this page help you?