Artifactory Provider Kinds
Look up the fields, identifiers, and caveats of each Kind in the JFrog Crossplane Artifactory provider.
This page lists every Kind of the provider-artifactory package releases-authenticated-docker.jfrog.io/jfrog/crossplane-provider-artifactory:v0.0.1. The package requires registry credentials. For more information, see Install the JFrog Crossplane Providers. The provider configuration API group is artifactory.m.crossplane.io. The provider has 214 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.
The Kinds are grouped by API group.
| Section | API group | Kinds |
|---|---|---|
| Repositories | repository.artifactory.m.crossplane.io | 150 |
| Users | user.artifactory.m.crossplane.io | 4 |
| Security | security.artifactory.m.crossplane.io | 11 |
| Instance Configuration | configuration.artifactory.m.crossplane.io | 16 |
| Webhooks | webhook.artifactory.m.crossplane.io | 24 |
| Replication | replication.artifactory.m.crossplane.io | 5 |
| Release Bundles | lifecycle.artifactory.m.crossplane.io | 2 |
| Artifacts and Properties | artifact.artifactory.m.crossplane.io | 2 |
Repositories
Repository Kinds are named <Class><PackageType>Repository, for example LocalDockerV2Repository. The kubectl names are the lowercase plural, for example localdockerv2repositories.repository.artifactory.m.crossplane.io. API group repository.artifactory.m.crossplane.io, 150 Kinds.
The following rules apply to every repository Kind:
metadata.nameis the repository key. Like the package type, you can't change it.- To assign a repository to a project, use
projectKeyplusprojectEnvironments, or use the project provider'sRepositoryKind. Don't use both. WithprojectKey, the repository key must start with<projectKey>-. xrayIndex: trueenables Xray scanning.
Repository Kinds share most fields, so this section documents them per class: common fields once, then only the additional fields of each package type.
Package Types
The following table lists the package types of each repository class.
| Class | Kinds | Package types (<Class><PackageType>Repository) |
|---|---|---|
| Local | 40 | Alpine, Ansible, Bower, Cargo, Chef, Cocoapods, Composer, Conan, Conda, Cran, Debian, DockerV1, DockerV2, Gems, Generic, GitLFS, Go, Gradle, HelmOCI, Helm, Hex, HuggingFaceML, Ivy, MachineLearning, Maven, NPM, Nix, Nuget, OCI, Opkg, Pub, Puppet, PyPI, RPM, SBT, Swift, TerraformModule, TerraformProvider, Terraformbackend, Vagrant |
| Remote | 40 | AIEditorExtensions, Alpine, Ansible, Bazel, Bower, Cargo, Chef, Cocoapods, Composer, Conan, Conda, Cran, Debian, Docker, Gems, Generic, GitLFS, Go, Gradle, HelmOCI, Helm, Hex, HuggingFaceML, Ivy, JetBrainsPlugins, Maven, NPM, Nix, Nuget, OCI, Opkg, P2, Pub, Puppet, PyPI, RPM, SBT, Swift, Terraform, VCS |
| Virtual | 33 | Alpine, Ansible, Bower, Chef, Cocoapods, Composer, Conan, Conda, Cran, Debian, Docker, Gems, Generic, GitLFS, Go, Gradle, HelmOCI, Helm, Hex, Ivy, Maven, NPM, Nix, Nuget, OCI, P2, Pub, Puppet, PyPI, RPM, SBT, Swift, Terraform |
| Federated | 37 | Alpine, Ansible, Bower, Cargo, Chef, Cocoapods, Composer, Conan, Conda, Cran, Debian, Docker, DockerV1, DockerV2, Gems, Generic, GitLFS, Go, Gradle, HelmOCI, Helm, HuggingFaceML, Ivy, Maven, NPM, Nuget, OCI, Opkg, Puppet, PyPI, RPM, Releasebundles, SBT, Swift, TerraformModule, TerraformProvider, Vagrant |
Local Repositories
Local repositories store artifacts you deploy: build outputs, internal packages, and images.
- Common optional fields:
archiveBrowsingEnabled,blackedOut,cdnRedirect,description,downloadDirect,excludesPattern,includesPattern,notes,priorityResolution,projectEnvironments,projectKey,propertySets,repoLayoutRef,xrayIndex. - Immutable:
packageType.
The following table lists the additional fields by package type. Package types not listed have only the common fields.
| Package type | Additional fields |
|---|---|
| Alpine | primaryKeypairRef |
| Ansible | primaryKeypairRef |
| Cargo | anonymousAccess, enableSparseIndex |
| Conan | forceConanAuthentication |
| Debian | ddebSupported, indexCompressionFormats, primaryKeypairRef, secondaryKeypairRef, trivialLayout |
| DockerV2 | blockPushingSchema1, maxUniqueTags, tagRetention |
| Gradle | checksumPolicyType, handleReleases, handleSnapshots, maxUniqueSnapshots, snapshotVersionBehavior, suppressPomConsistencyChecks |
| HelmOCI | maxUniqueTags, tagRetention |
| Helm | forceMetadataNameVersion, forceNonDuplicateChart |
| Hex | hexPrimaryKeypairRef (required) |
| Ivy | checksumPolicyType, handleReleases, handleSnapshots, maxUniqueSnapshots, snapshotVersionBehavior, suppressPomConsistencyChecks |
| Maven | checksumPolicyType, handleReleases, handleSnapshots, maxUniqueSnapshots, snapshotVersionBehavior, suppressPomConsistencyChecks |
| Nuget | forceNugetAuthentication, maxUniqueSnapshots |
| OCI | maxUniqueTags, tagRetention |
| RPM | calculateYumMetadata, enableFileListsIndexing, primaryKeypairRef, secondaryKeypairRef, yumGroupFileNames, yumRootDepth |
| SBT | checksumPolicyType, handleReleases, handleSnapshots, maxUniqueSnapshots, snapshotVersionBehavior, suppressPomConsistencyChecks |
Kind-specific notes:
LocalAlpineRepository: Index signing needs an existing RSA key pair in Artifactory (primaryKeypairRef).LocalAnsibleRepository: Signing needs an existing RSA key pair (primaryKeypairRef).LocalCargoRepository: Requires the Artifactory Custom URL Base to be configured.LocalDebianRepository: Metadata signing needs existing GNU Privacy Guard (GPG) key pairs (primaryKeypairRef, optionalsecondaryKeypairRef).LocalHexRepository: Requires an existing RSA key pair (hexPrimaryKeypairRef).LocalRPMRepository: Metadata signing needs existing GPG key pairs (primaryKeypairRef, optionalsecondaryKeypairRef).
Remote Repositories
Remote repositories proxy and cache an upstream registry (url). Many server-defaulted settings, such as timeouts, offline mode, proxy, and cache periods, are late-initialized into the spec.
- Common optional fields:
allowAnyHostAuth,archiveBrowsingEnabled,assumedOfflinePeriodSecs,blackedOut,blockMismatchingMimeTypes,cdnRedirect,clientTlsCertificate,contentSynchronisation,description,disableProxy,disableUrlNormalization,downloadDirect,enableCookieManagement,enableTokenAuthentication,excludesPattern,hardFail,includesPattern,listRemoteFolderItems,localAddress,metadataRetrievalTimeoutSecs,mismatchingMimeTypesOverrideList,missedCachePeriodSeconds,notes,offline,passwordSecretRef,passwordWoSecretRef,passwordWoVersion,priorityResolution,projectEnvironments,projectKey,propertySets,proxy,queryParams,remoteRepoLayoutRef,repoLayoutRef,retrievalCachePeriodSeconds,shareConfiguration,socketTimeoutMillis,storeArtifactsLocally,synchronizeProperties,unusedArtifactsCleanupPeriodHours,username,xrayIndex. - Immutable:
externalDependenciesPatterns,packageType. - Secrets:
customHttpHeaders[].valueSecretRef,passwordSecretRef,passwordWoSecretRef.
The following table lists the additional fields by package type. Package types not listed have only the common fields.
| Package type | Additional fields |
|---|---|
| AIEditorExtensions | curated, customHttpHeaders, externalDependenciesEnabled, externalDependenciesPatterns, passThrough, propagateQueryParams, retrieveSha256FromServer, url (required) |
| Alpine | bypassHeadRequests, url (required) |
| Ansible | bypassHeadRequests, url |
| Bazel | bypassHeadRequests, url (required) |
| Bower | bowerRegistryUrl, bypassHeadRequests, url (required), vcsGitDownloadUrl, vcsGitProvider |
| Cargo | anonymousAccess, bypassHeadRequests, enableSparseIndex, gitRegistryUrl, url (required) |
| Chef | bypassHeadRequests, url (required) |
| Cocoapods | bypassHeadRequests, podsSpecsRepoUrl, url (required), vcsGitDownloadUrl, vcsGitProvider |
| Composer | bypassHeadRequests, composerRegistryUrl, url (required), vcsGitDownloadUrl, vcsGitProvider |
| Conan | bypassHeadRequests, curated, forceConanAuthentication, passThrough, url (required) |
| Conda | bypassHeadRequests, curated, passThrough, propagateQueryParams, retrieveSha256FromServer, url (required) |
| Cran | bypassHeadRequests, url (required) |
| Debian | bypassHeadRequests, curated, passThrough, propagateQueryParams, retrieveSha256FromServer, url (required) |
| Docker | blockPushingSchema1, bypassHeadRequests, curated, externalDependenciesEnabled, externalDependenciesPatterns, passThrough, projectId, url (required) |
| Gems | bypassHeadRequests, curated, passThrough, propagateQueryParams, retrieveSha256FromServer, url (required) |
| Generic | bypassHeadRequests, customHttpHeaders, propagateQueryParams, retrieveSha256FromServer, url (required) |
| GitLFS | bypassHeadRequests, url (required) |
| Go | bypassHeadRequests, curated, passThrough, propagateQueryParams, retrieveSha256FromServer, url (required), vcsGitProvider |
| Gradle | bypassHeadRequests, curated, fetchJarsEagerly, fetchSourcesEagerly, handleReleases, handleSnapshots, maxUniqueSnapshots, passThrough, rejectInvalidJars, remoteRepoChecksumPolicyType, suppressPomConsistencyChecks, url (required) |
| HelmOCI | bypassHeadRequests, externalDependenciesEnabled, externalDependenciesPatterns, projectId, url (required) |
| Helm | bypassHeadRequests, externalDependenciesEnabled, externalDependenciesPatterns, helmChartsBaseUrl, url (required) |
| Hex | bypassHeadRequests, hexPrimaryKeypairRef (required), publicKey (required), url (required) |
| HuggingFaceML | bypassHeadRequests, curated, passThrough, url |
| Ivy | bypassHeadRequests, fetchJarsEagerly, fetchSourcesEagerly, handleReleases, handleSnapshots, maxUniqueSnapshots, rejectInvalidJars, remoteRepoChecksumPolicyType, suppressPomConsistencyChecks, url (required) |
| JetBrainsPlugins | bypassHeadRequests, url (required) |
| Maven | bypassHeadRequests, curated, fetchJarsEagerly, fetchSourcesEagerly, handleReleases, handleSnapshots, maxUniqueSnapshots, passThrough, rejectInvalidJars, remoteRepoChecksumPolicyType, suppressPomConsistencyChecks, url (required) |
| NPM | bypassHeadRequests, curated, passThrough, url |
| Nix | bypassHeadRequests, url (required) |
| Nuget | bypassHeadRequests, curated, downloadContextPath, feedContextPath, forceNugetAuthentication, passThrough, symbolServerUrl, url (required), v3FeedUrl |
| OCI | bypassHeadRequests, externalDependenciesEnabled, externalDependenciesPatterns, projectId, url (required) |
| Opkg | bypassHeadRequests, url (required) |
| P2 | bypassHeadRequests, url (required) |
| Pub | bypassHeadRequests, url (required) |
| Puppet | bypassHeadRequests, url (required) |
| PyPI | bypassHeadRequests, curated, passThrough, pypiRegistryUrl, pypiRepositorySuffix, url (required) |
| RPM | bypassHeadRequests, url (required) |
| SBT | bypassHeadRequests, fetchJarsEagerly, fetchSourcesEagerly, handleReleases, handleSnapshots, maxUniqueSnapshots, rejectInvalidJars, remoteRepoChecksumPolicyType, suppressPomConsistencyChecks, url (required) |
| Swift | bypassHeadRequests, url (required) |
| Terraform | bypassHeadRequests, terraformProvidersUrl, terraformRegistryUrl, url (required) |
| VCS | bypassHeadRequests, maxUniqueSnapshots, url (required), vcsGitDownloadUrl, vcsGitProvider |
Kind-specific notes:
RemoteAIEditorExtensionsRepository: Works only on Artifactory versions that support theaieditorextensionspackage type. Older instances reject it withThe package type aieditorextensions is not supported.RemoteCargoRepository: Requires the Artifactory Custom URL Base to be configured.RemoteHexRepository: Requires an existing RSA key pair (hexPrimaryKeypairRef) and the upstream public key (publicKey).RemoteJetBrainsPluginsRepository: Works only on Artifactory versions that support thejetbrainspluginspackage type. Older instances reject it withThe package type jetbrainsplugins is not supported.
Virtual Repositories
Virtual repositories aggregate local and remote repositories under one URL. repositories lists the members in resolution order. This list is authoritative, and every member must exist. defaultDeploymentRepo receives deployments.
- Common optional fields:
artifactoryRequestsCanRetrieveRemoteArtifacts,defaultDeploymentRepo,description,excludesPattern,hideUnauthorizedResources,includesPattern,notes,projectEnvironments,projectKey,repoLayoutRef,repositories. - Immutable:
packageType.
The following table lists the additional fields by package type. Package types not listed have only the common fields.
| Package type | Additional fields |
|---|---|
| Alpine | primaryKeypairRef, retrievalCachePeriodSeconds |
| Ansible | retrievalCachePeriodSeconds |
| Bower | externalDependenciesEnabled, externalDependenciesPatterns, externalDependenciesRemoteRepo |
| Chef | retrievalCachePeriodSeconds |
| Conan | forceConanAuthentication, retrievalCachePeriodSeconds |
| Conda | retrievalCachePeriodSeconds |
| Cran | retrievalCachePeriodSeconds |
| Debian | debianDefaultArchitectures, optionalIndexCompressionFormats, primaryKeypairRef, retrievalCachePeriodSeconds, secondaryKeypairRef |
| Docker | resolveDockerTagsByTimestamp |
| Go | externalDependenciesEnabled, externalDependenciesPatterns |
| Gradle | forceMavenAuthentication, keyPair, pomRepositoryReferencesCleanupPolicy |
| HelmOCI | resolveOciTagsByTimestamp |
| Helm | retrievalCachePeriodSeconds, useNamespaces |
| Hex | hexPrimaryKeypairRef (required) |
| Ivy | forceMavenAuthentication, keyPair, pomRepositoryReferencesCleanupPolicy |
| Maven | forceMavenAuthentication, keyPair, pomRepositoryReferencesCleanupPolicy |
| NPM | externalDependenciesEnabled, externalDependenciesPatterns, externalDependenciesRemoteRepo, retrievalCachePeriodSeconds |
| Nuget | forceNugetAuthentication |
| OCI | resolveOciTagsByTimestamp |
| RPM | primaryKeypairRef, retrievalCachePeriodSeconds, secondaryKeypairRef |
| SBT | forceMavenAuthentication, keyPair, pomRepositoryReferencesCleanupPolicy |
Kind-specific notes:
VirtualHexRepository: Requires an existing RSA key pair (hexPrimaryKeypairRef).VirtualOCIRepository: Every key inrepositoriesmust exist before you create or update the virtual repository. Otherwise, the request fails withRepository <key> does not exist.VirtualRPMRepository: Metadata signing needs existing GPG key pairs (primaryKeypairRef, optionalsecondaryKeypairRef).
Federated Repositories
Federated repositories are local repositories mirrored bi-directionally across Artifactory instances (member[]).
- Required on every Kind:
member. - Common optional fields:
archiveBrowsingEnabled,blackedOut,cdnRedirect,cleanupOnDelete,description,disableProxy,downloadDirect,excludesPattern,includesPattern,notes,priorityResolution,projectEnvironments,projectKey,propertySets,proxy,repoLayoutRef,xrayIndex. - Immutable:
packageType. - Secrets:
member[].accessTokenSecretRef.
Federated repositories need the following:
- At least two Artifactory instances that can reach each other on their external URLs.
- An Enterprise+ federation subscription.
member[]entries with the full repository URL of each member (https://<host>/artifactory/<key>). List the repository on the local instance as a member too.
The following table lists the additional fields by package type. Package types not listed have only the common fields.
| Package type | Additional fields |
|---|---|
| Alpine | indexCompressionFormats, primaryKeypairRef |
| Ansible | primaryKeypairRef |
| Cargo | anonymousAccess, enableSparseIndex, indexCompressionFormats |
| Conan | forceConanAuthentication |
| Debian | indexCompressionFormats, primaryKeypairRef, secondaryKeypairRef, trivialLayout |
| Docker | blockPushingSchema1, maxUniqueTags, tagRetention |
| DockerV1 | maxUniqueTags |
| DockerV2 | blockPushingSchema1, maxUniqueTags, tagRetention |
| Gradle | checksumPolicyType, handleReleases, handleSnapshots, maxUniqueSnapshots, snapshotVersionBehavior, suppressPomConsistencyChecks |
| HelmOCI | maxUniqueTags, tagRetention |
| Ivy | checksumPolicyType, handleReleases, handleSnapshots, maxUniqueSnapshots, snapshotVersionBehavior, suppressPomConsistencyChecks |
| Maven | checksumPolicyType, handleReleases, handleSnapshots, maxUniqueSnapshots, snapshotVersionBehavior, suppressPomConsistencyChecks |
| Nuget | forceNugetAuthentication, maxUniqueSnapshots |
| OCI | maxUniqueTags, tagRetention |
| RPM | calculateYumMetadata, enableFileListsIndexing, primaryKeypairRef, secondaryKeypairRef, yumGroupFileNames, yumRootDepth |
| SBT | checksumPolicyType, handleReleases, handleSnapshots, maxUniqueSnapshots, snapshotVersionBehavior, suppressPomConsistencyChecks |
Kind-specific notes:
FederatedReleasebundlesRepository: Requires an existing JFrog project (projectKey).
Users
Artifactory user accounts. User and ManagedUser manage users with passwords. UnmanagedUser manages users without a password, for example SSO users. AnonymousUser adopts the built-in anonymous user. API group user.artifactory.m.crossplane.io, 4 Kinds.
AnonymousUser
Provides an Artifactory anonymous user resource.
- kubectl:
anonymoususers.user.artifactory.m.crossplane.io. - Identifier: server-assigned ID (never edit the external-name annotation).
- Upstream:
artifactory_anonymous_user. - Fields: optional
name. - Represents the built-in
anonymoususer. This Kind is useful only to observe or adopt the built-in user, for example withmanagementPolicies: ["Observe"]andmetadata.name: anonymous. You can't create or delete it. forProvider.nameis a normal field here, not the identifier. If you create two managed resources with the samename, the second fails with analready exists-style error. To adopt an existing object, use the external-name annotation.
ManagedUser
Provides an Artifactory managed user resource.
- kubectl:
managedusers.user.artifactory.m.crossplane.io. - Identifier:
metadata.nameis thename. - Upstream:
artifactory_managed_user. - Fields: required
email,passwordSecretRef. Optional:admin,disableUiAccess,groups,internalPasswordDisabled,passwordPolicy,profileUpdatable. - Secrets:
passwordSecretRef. groupsworks the same way as inUser: membership is authoritative. If you manage membership elsewhere, useinitProvider.passwordSecretRefis required.
UnmanagedUser
Provides an Artifactory unmanaged user resource.
- kubectl:
unmanagedusers.user.artifactory.m.crossplane.io. - Identifier:
metadata.nameis thename. - Upstream:
artifactory_unmanaged_user. - Fields: required
email. Optional:admin,disableUiAccess,groups,internalPasswordDisabled,passwordPolicy,passwordSecretRef,profileUpdatable. - Secrets:
passwordSecretRef. groupsworks the same way as inUser. The password is optional. If you omit it, Artifactory generates one.
User
Provides an Artifactory user resource.
- kubectl:
users.user.artifactory.m.crossplane.io. - Identifier:
metadata.nameis thename. - Upstream:
artifactory_user. - Fields: required
email. Optional:admin,disableUiAccess,groups,internalPasswordDisabled,passwordPolicy,passwordSecretRef,profileUpdatable. - Secrets:
passwordSecretRef. - The password is a Secret reference (
passwordSecretRef). The Secret must be in the same namespace as the managed resource. groupsis authoritative in Artifactory. If you set it inforProvider, the provider resets the user's membership to exactly that list on every poll. Ifgroupsisn't specified, the user's group membership is set to empty.- If you manage group membership elsewhere, such as with the platform provider's
GroupMembersor the Artifactory provider'sGroup.usersNames, putgroupsunderspec.initProviderinstead. The provider then sends it only at creation. Ifgroupsis inforProviderwhile aGroupMembersobject also manages the group, membership changes back and forth every poll interval.
Security
Groups, legacy permission targets, certificates, key pairs, password expiration and user lock policies, Vault configuration, distribution public keys, global environments, scoped tokens, and API keys. API group security.artifactory.m.crossplane.io, 11 Kinds.
APIKey
Provides an Artifactory API key resource.
- kubectl:
apikeys.security.artifactory.m.crossplane.io. - Identifier: server-assigned ID (never edit the external-name annotation).
- Upstream:
artifactory_api_key. - Fields: none (
forProvider: {}). - API keys are deprecated in the JFrog Platform and are being removed. Use access tokens. The provider itself also refuses
api_keycredentials.
Certificate
Provides an Artifactory certificate resource.
- kubectl:
certificates.security.artifactory.m.crossplane.io. - Identifier:
metadata.nameis thealias. - Upstream:
artifactory_certificate. - Fields: required
contentSecretRef. - Secrets:
contentSecretRef. - The upstream
fileargument (a local path) was removed. Supply the PEM throughforProvider.contentSecretRef, a Secret key that holds the PEM. With the default management policy, a Certificate that omits it is rejected withspec.forProvider.contentSecretRef is a required parameter.
DistributionPublicKey
Provides an Artifactory Distribution public key resource.
- kubectl:
distributionpublickeys.security.artifactory.m.crossplane.io. - Identifier:
metadata.nameis thealias. - Upstream:
artifactory_distribution_public_key. - Fields: required
publicKey.
GlobalEnvironment
Provides a global environment resource.
- kubectl:
globalenvironments.security.artifactory.m.crossplane.io. - Identifier:
metadata.nameis thename. - Upstream:
artifactory_global_environment. - Fields: none (
forProvider: {}). - This is a name-only Kind:
spec.forProviderhas no fields.metadata.name, or thecrossplane.io/external-nameannotation, is the global environment name. Setspec.forProvider: {}.
Group
Provides an Artifactory group resource.
- kubectl:
groups.security.artifactory.m.crossplane.io. - Identifier:
metadata.nameis thename. - Upstream:
artifactory_group. - Fields: optional
adminPrivileges,autoJoin,description,detachAllUsers,externalId,policyManager,realm,realmAttributes,reportsManager,usersNames,usersNamesSelector,watchManager. - References:
usersNamesRefstoUser. - You can populate
usersNameswithusersNamesRefsorusersNamesSelectorthat point at ArtifactoryUserresources. IfUser.groupsor platformGroupMembersalso manage the same users, choose one owner of membership. Otherwise, the controllers overwrite each other.
KeyPair
RSA key pairs are used to sign and verify the Alpine Linux index files in JFrog Artifactory.
- kubectl:
keypairs.security.artifactory.m.crossplane.io. - Identifier:
metadata.nameis thepairName. - Upstream:
artifactory_keypair. - Fields: required
alias,pairType,privateKeySecretRef,publicKey. Optional:passphraseSecretRef. - Immutable:
pairType,alias,privateKey,passphrase,publicKey. - Secrets:
passphraseSecretRef,privateKeySecretRef. - All key material fields are immutable. A change to any of them is refused. To change them, delete and recreate the key pair.
PasswordExpirationPolicy
Provides an Artifactory password expiration policy resource.
- kubectl:
passwordexpirationpolicies.security.artifactory.m.crossplane.io. - Identifier:
metadata.nameis thename. - Upstream:
artifactory_password_expiration_policy. - Fields: required
enabled,notifyByEmail,passwordMaxAge.
PermissionTarget
Provides an Artifactory permission target resource.
- kubectl:
permissiontargets.security.artifactory.m.crossplane.io. - Identifier:
metadata.nameis thename. - Upstream:
artifactory_permission_target. - Fields: optional
build,releaseBundle,repo. - References:
build[].repositoriesRefstoLocalGenericRepository,releaseBundle[].repositoriesRefstoLocalGenericRepository, andrepo[].repositoriesRefstoLocalGenericRepository. - Deprecated in terraform-provider-artifactory v12.x. For new work, use the platform provider's
PermissionKind (access.platform.m.crossplane.io).
ScopedToken
Provides an Artifactory scoped token resource.
- kubectl:
scopedtokens.security.artifactory.m.crossplane.io. - Identifier: server-assigned ID (never edit the external-name annotation).
- Upstream:
artifactory_scoped_token. - Fields: optional
audiences,description,expiresIn,grantType,ignoreMissingTokenWarning,includeReferenceToken,projectKey,refreshable,scopes,username. - In v0.0.1, you can't manage scoped tokens declaratively. Access tokens are write-once: the token value is returned only at creation, and the upstream resource doesn't support import. The computed
idof the upstream resource is empty in the observed state. As a result, Observe fails withcannot find id in tfstatebefore Create runs. The managed resource then stops progressing. - Create tokens outside Crossplane, with the UI,
jf access-token-create, orPOST /access/api/v1/tokens, and store them in a Kubernetes Secret.
UserLockPolicy
Provides an Artifactory user lock policy resource.
- kubectl:
userlockpolicies.security.artifactory.m.crossplane.io. - Identifier:
metadata.nameis thename. - Upstream:
artifactory_user_lock_policy. - Fields: required
enabled,loginAttempts.
VaultConfiguration
Configures an external vault connector as a centralized secret management tool for the keys used to sign packages.
- kubectl:
vaultconfigurations.security.artifactory.m.crossplane.io. - Identifier:
metadata.nameis thename. - Upstream:
artifactory_vault_configuration. - Fields: required
config. - Secrets:
config.auth.certificateKeySecretRef,config.auth.roleIdSecretRef,config.auth.secretIdSecretRef.configandauthare objects.mountsis the array. - Requires a reachable, configured HashiCorp Vault. Without it, reads fail with
Unable to find Vault configuration.config.auth.certificateis a plain PEM string. The private key, role ID, and secret ID are Secret references.
Instance Configuration
Instance-wide configuration: LDAP, OAuth, and SAML settings, proxies, backups, property sets, repository layouts, package cleanup and archive policies, mail server, trash can, and general security. Singletons allow at most one managed resource per JFrog Platform. API group configuration.artifactory.m.crossplane.io, 16 Kinds.
ArchivePolicy
Provides an Artifactory archive policy resource.
- kubectl:
archivepolicies.configuration.artifactory.m.crossplane.io. - Identifier:
metadata.nameis thekey. - Upstream:
artifactory_archive_policy. - Fields: required
searchCriteria. Optional:cronExpression,description,durationInMinutes,enabled,projectKey,skipTrashcan. - Requires the Package Archive Policies feature to be enabled on the JFrog Platform. Otherwise, reads fail with
Package Archive Policies are disabled.
Backup
Manages the automatic and periodic backups of the entire Artifactory instance.
- kubectl:
backups.configuration.artifactory.m.crossplane.io. - Identifier:
metadata.nameis thekey. - Upstream:
artifactory_backup. - Fields: required
cronExp. Optional:createArchive,enabled,excludeNewRepositories,excludedRepositories,exportMissionControl,retentionPeriodHours,sendMailOnError,verifyDiskSpace. - Backups that reference repositories can make Artifactory reject later repository deletes. Delete or update the Backup before you delete the repositories it covers.
GeneralSecurity
Manages the Artifactory general security settings.
- kubectl:
generalsecurities.configuration.artifactory.m.crossplane.io. - Identifier: server-assigned ID (never edit the external-name annotation).
- Upstream:
artifactory_general_security. - Fields: optional
enableAnonymousAccess,encryptionPolicy. - Instance-wide singleton. Create at most one per JFrog Platform.
LdapGroupSetting
Manages the Artifactory LDAP group settings for user authentication.
- kubectl:
ldapgroupsettings.configuration.artifactory.m.crossplane.io. - Identifier:
metadata.nameis thename. - Upstream:
artifactory_ldap_group_setting. - Fields: required
descriptionAttribute,filter,groupMemberAttribute,groupNameAttribute,ldapSettingKey,strategy. Optional:groupBaseDn,subTree. - Requires an existing LDAP setting and LDAP server.
LdapGroupSettingV2
- kubectl:
ldapgroupsettingv2s.configuration.artifactory.m.crossplane.io. - Identifier:
metadata.nameis thename. - Upstream:
artifactory_ldap_group_setting_v2. - Fields: required
descriptionAttribute,filter,groupMemberAttribute,groupNameAttribute,strategy. Optional:enabledLdap,forceAttributeSearch,groupBaseDn,refreshOperation,subTree. - Requires an existing LDAP setting and LDAP server.
LdapSetting
Manages the Artifactory LDAP settings for user authentication.
- kubectl:
ldapsettings.configuration.artifactory.m.crossplane.io. - Identifier:
metadata.nameis thename. - Upstream:
artifactory_ldap_setting. - Fields: required
key,ldapUrl. Optional:allowUserToAccessProfile,autoCreateUser,emailAttribute,enabled,ldapPoisoningProtection,managerDn,managerPasswordSecretRef,pagingSupportEnabled,searchBase,searchFilter,searchSubTree,userDnPattern. - Secrets:
managerPasswordSecretRef. - Requires a reachable LDAP server. Supply the bind password through a Secret reference.
LdapSettingV2
Provides an Artifactory LDAP setting resource.
- kubectl:
ldapsettingv2s.configuration.artifactory.m.crossplane.io. - Identifier:
metadata.nameis thename. - Upstream:
artifactory_ldap_setting_v2. - Fields: required
key,ldapUrl. Optional:allowUserToAccessProfile,autoCreateUser,emailAttribute,enabled,ldapPoisoningProtection,managerDn,managerPasswordSecretRef,pagingSupportEnabled,searchBase,searchFilter,searchSubTree,userDnPattern. - Secrets:
managerPasswordSecretRef. - Requires a reachable LDAP server. Supply the bind password through a Secret reference.
MailServer
Provides an Artifactory mail server resource.
- kubectl:
mailservers.configuration.artifactory.m.crossplane.io. - Identifier: singleton (
mailserver). - Upstream:
artifactory_mail_server. - Fields: required
enabled,host,port. Optional:artifactoryUrl,from,passwordSecretRef,subjectPrefix,useSsl,useTls,username. - Immutable:
host. - Secrets:
passwordSecretRef. - Instance-wide singleton. The external name is always
mailserver. Create at most one per JFrog Platform.passwordis a Secret reference (passwordSecretRef).hostis immutable.
OauthSettings
Manages the Artifactory OAuth SSO settings.
- kubectl:
oauthsettings.configuration.artifactory.m.crossplane.io. - Identifier: server-assigned ID (never edit the external-name annotation).
- Upstream:
artifactory_oauth_settings. - Fields: required
oauthProvider. Optional:allowUserToAccessProfile,enable,persistUsers. - Secrets:
oauthProvider[].clientSecretSecretRef.
PackageCleanupPolicy
Provides an Artifactory package cleanup policy resource.
- kubectl:
packagecleanuppolicies.configuration.artifactory.m.crossplane.io. - Identifier:
metadata.nameis thekey. - Upstream:
artifactory_package_cleanup_policy. - Fields: required
searchCriteria. Optional:cronExpression,description,durationInMinutes,enabled,projectKey,skipTrashcan.
PropertySet
Provides an Artifactory property set resource.
- kubectl:
propertysets.configuration.artifactory.m.crossplane.io. - Identifier:
metadata.nameis thename. - Upstream:
artifactory_property_set. - Fields: optional
property,visible.
Proxy
Provides an Artifactory proxy resource.
- kubectl:
proxies.configuration.artifactory.m.crossplane.io. - Identifier:
metadata.nameis thekey. - Upstream:
artifactory_proxy. - Fields: required
host,port. Optional:ntDomain,ntHost,passwordSecretRef,platformDefault,redirectToHosts,services,username. - Immutable:
host. - Secrets:
passwordSecretRef. - Artifactory attaches proxies to remote repositories. Remote repositories late-initialize their
proxyfield from the server, so a proxy can end up recorded in many remote repository specs. If you later delete the Proxy, those repositories stay in permanent drift. If you manage proxies with Crossplane, setproxyexplicitly on remote repositories, or omitLateInitializefrom theirmanagementPolicies. keyandhostare immutable.
ReleaseBundleV2CleanupPolicy
- kubectl:
releasebundlev2cleanuppolicies.configuration.artifactory.m.crossplane.io. - Identifier:
metadata.nameis thekey. - Upstream:
artifactory_release_bundle_v2_cleanup_policy. - Fields: required
searchCriteria. Optional:cronExpression,description,durationInMinutes,enabled,itemType. - Only meaningful once Release Bundles v2 exist on the JFrog Platform.
RepositoryLayout
Manages the Artifactory repository layout settings.
- kubectl:
repositorylayouts.configuration.artifactory.m.crossplane.io. - Identifier:
metadata.nameis thename. - Upstream:
artifactory_repository_layout. - Fields: required
artifactPathPattern,fileIntegrationRevisionRegexp,folderIntegrationRevisionRegexp. Optional:descriptorPathPattern,distinctiveDescriptorPathPattern.
SamlSettings
Manages the Artifactory SAML SSO settings.
- kubectl:
samlsettings.configuration.artifactory.m.crossplane.io. - Identifier: server-assigned ID (never edit the external-name annotation).
- Upstream:
artifactory_saml_settings. - Fields: required
loginUrl,logoutUrl,serviceProviderName. Optional:allowUserToAccessProfile,autoRedirect,certificate,emailAttribute,enable,groupAttribute,noAutoUserCreation,syncGroups,useEncryptedAssertion,verifyAudienceRestriction. - Deprecated upstream. Create fails with
artifactory_saml_settings deprecated. Use platform_saml_settings instead. Use the platform provider'sSAMLSettingsKind (authentication.platform.m.crossplane.io) instead.
TrashcanConfig
Provides an Artifactory trash can configuration resource.
- kubectl:
trashcanconfigs.configuration.artifactory.m.crossplane.io. - Identifier: singleton (
trashcan). - Upstream:
artifactory_trashcan_config. - Fields: optional
enabled,retentionPeriodDays. - Instance-wide singleton. The external name is always
trashcan. Create at most one per JFrog Platform. Deleting it resets the trash can settings to defaults.
Webhooks
<Domain>Webhook Kinds post the standard JFrog payload to a URL. <Domain>CustomWebhook Kinds send a custom payload with custom headers and secrets. API group webhook.artifactory.m.crossplane.io, 24 Kinds.
Follow these rules for every webhook Kind:
- List
eventTypesin alphabetical order. The API stores them sorted, so any other order produces a permanent diff: the resource stays Ready but never settles. - Avoid
anyLocal,anyRemote,anyFederated,anyBuild, oranyReleaseBundleset totruetogether with empty sibling lists (selectedBuilds,registeredReleaseBundleNames). The server echoes the empty list while the spec omits it, which causes perpetual updates. Name concrete entities instead. handler[].secretsSecretRef(custom webhooks) is a whole-Secret reference (nameonly) and is optional.- The Distribution and Release Bundle (v1, v2, promotion) webhook domains need the Distribution service or the release-bundle webhook domain on the JFrog Platform. Otherwise, create fails with
domain with id 'artifactory_release_bundle' was not foundor HTTP 404. - You can fill
criteria.repoKeyswithrepoKeysRefsorrepoKeysSelectorthat point atLocalGenericRepositoryobjects only. Reference other repository Kinds by literal key.
All 24 webhook Kinds share this shape:
- API group:
webhook.artifactory.m.crossplane.io. - Identifier:
metadata.nameis the webhookkey. - Upstream:
artifactory_<domain>_webhookandartifactory_<domain>_custom_webhook. - Fields: required
eventTypes. Optional:criteria,description,enabled,handler. - handler (standard Kinds):
customHttpHeaders,proxy,secretSecretRef,url,useSecretForSigning. The payload is the standard JFrog event payload. - handler (custom Kinds):
httpHeaders,method,payload,proxy,secretsSecretRef,url. You define the payload and the HTTP method. - Secrets: standard Kinds use
handler[].secretSecretRef. Custom Kinds usehandler[].secretsSecretRef. - Valid
eventTypesvalues depend on the domain, for exampledeployed,deleted,moved,copied, andcachedfor artifacts. For the full list, see the JFrog webhook documentation.
The following table lists the webhook domains with their standard Kind, custom Kind, and criteria fields.
| Domain | Standard Kind | Custom Kind | criteria fields |
|---|---|---|---|
| ArtifactLifecycle | ArtifactLifecycleWebhook | ArtifactLifecycleCustomWebhook | none |
| ArtifactProperty | ArtifactPropertyWebhook | ArtifactPropertyCustomWebhook | anyFederated, anyLocal, anyRemote, excludePatterns, includePatterns, repoKeys, repoKeysSelector |
| Artifact | ArtifactWebhook | ArtifactCustomWebhook | anyFederated, anyLocal, anyRemote, excludePatterns, includePatterns, repoKeys, repoKeysSelector |
| ArtifactoryReleaseBundle | ArtifactoryReleaseBundleWebhook | ArtifactoryReleaseBundleCustomWebhook | anyReleaseBundle, excludePatterns, includePatterns, registeredReleaseBundleNames |
| Build | BuildWebhook | BuildCustomWebhook | anyBuild, excludePatterns, includePatterns, selectedBuilds |
| Destination | DestinationWebhook | DestinationCustomWebhook | anyReleaseBundle, excludePatterns, includePatterns, registeredReleaseBundleNames |
| Distribution | DistributionWebhook | DistributionCustomWebhook | anyReleaseBundle, excludePatterns, includePatterns, registeredReleaseBundleNames |
| Docker | DockerWebhook | DockerCustomWebhook | anyFederated, anyLocal, anyRemote, excludePatterns, includePatterns, repoKeys, repoKeysSelector |
| ReleaseBundleV2Promotion | ReleaseBundleV2PromotionWebhook | ReleaseBundleV2PromotionCustomWebhook | excludePatterns, includePatterns, selectedEnvironments |
| ReleaseBundleV2 | ReleaseBundleV2Webhook | ReleaseBundleV2CustomWebhook | anyReleaseBundle, excludePatterns, includePatterns, selectedReleaseBundles |
| ReleaseBundle | ReleaseBundleWebhook | ReleaseBundleCustomWebhook | anyReleaseBundle, excludePatterns, includePatterns, registeredReleaseBundleNames |
| User | UserWebhook | UserCustomWebhook | none |
Replication
Push and pull replication of repositories between Artifactory instances. API group replication.artifactory.m.crossplane.io, 5 Kinds.
LocalRepositoryMultiReplication
Provides a local repository replication resource, also called Artifactory push replication.
- kubectl:
localrepositorymultireplications.replication.artifactory.m.crossplane.io. - Identifier: server-assigned ID (never edit the external-name annotation).
- Upstream:
artifactory_local_repository_multi_replication. - Fields: required
cronExp,repoKey. Optional:enableEventReplication,replication. - Immutable:
url. - References:
repoKeyReftoLocalGenericRepository. - Secrets:
replication[].passwordSecretRef. - Requires the source local repository, a reachable target Artifactory URL, a username, and a password Secret.
url(per replication) is immutable.
LocalRepositorySingleReplication
Provides a local repository replication resource, also called Artifactory push replication.
- kubectl:
localrepositorysinglereplications.replication.artifactory.m.crossplane.io. - Identifier: server-assigned ID (never edit the external-name annotation).
- Upstream:
artifactory_local_repository_single_replication. - Fields: required
cronExp,repoKey,url,username. Optional:checkBinaryExistenceInFilestore,disableProxy,enableEventReplication,enabled,excludePathPrefixPattern,includePathPrefixPattern,passwordSecretRef,proxy,socketTimeoutMillis,syncDeletes,syncProperties,syncStatistics. - Immutable:
url. - References:
repoKeyReftoLocalGenericRepository. - Secrets:
passwordSecretRef. - Requires the source local repository, a reachable target Artifactory URL, a username, and a password Secret.
urlis immutable.
PullReplication
Note
This Kind is deprecated and replaced by
RemoteRepositoryReplicationfor clarity.
- kubectl:
pullreplications.replication.artifactory.m.crossplane.io. - Identifier: server-assigned ID (never edit the external-name annotation).
- Upstream:
artifactory_pull_replication. - Fields: required
repoKey. Optional:checkBinaryExistenceInFilestore,cronExp,enableEventReplication,enabled,passwordSecretRef,pathPrefix,proxy,socketTimeoutMillis,syncDeletes,syncProperties,syncStatistics,url,username. - Immutable:
url. - References:
repoKeyReftoLocalGenericRepository. - Secrets:
passwordSecretRef. - Requires an existing remote repository (
repoKey, orrepoKeyRefto a Crossplane-managedLocalGenericRepository).urlis immutable.
PushReplication
Note
This Kind is deprecated and replaced by
LocalRepositoryMultiReplicationfor clarity.
- kubectl:
pushreplications.replication.artifactory.m.crossplane.io. - Identifier: server-assigned ID (never edit the external-name annotation).
- Upstream:
artifactory_push_replication. - Fields: required
cronExp,repoKey. Optional:enableEventReplication,replications. - Immutable:
url. - References:
repoKeyReftoLocalGenericRepository. - Secrets:
replications[].passwordSecretRef. - Requires the source repository, a target URL, a username, and a password Secret.
urlis immutable.
RemoteRepositoryReplication
Provides a remote repository replication resource, also called Artifactory pull replication.
- kubectl:
remoterepositoryreplications.replication.artifactory.m.crossplane.io. - Identifier: server-assigned ID (never edit the external-name annotation).
- Upstream:
artifactory_remote_repository_replication. - Fields: required
repoKey. Optional:checkBinaryExistenceInFilestore,cronExp,enableEventReplication,enabled,excludePathPrefixPattern,includePathPrefixPattern,replicationKey,syncDeletes,syncProperties. - References:
repoKeyReftoLocalGenericRepository. - Requires an existing remote repository (
repoKey).
Release Bundles
Release Lifecycle Management: Release Bundles v2 and their promotion between environments. API group lifecycle.artifactory.m.crossplane.io, 2 Kinds.
ReleaseBundleV2
Creates a Release Bundle v2, uniquely identified by a combination of repository key, name, and version.
- kubectl:
releasebundlev2s.lifecycle.artifactory.m.crossplane.io. - Identifier: composite
<name>:<version>. - Upstream:
artifactory_release_bundle_v2. - Fields: required
keypairName,source,sourceType,version. Optional:projectKey,skipDockerManifestResolution. - Immutable:
projectKey,sourceType. - The source artifacts, builds, or Release Bundles must already exist. Otherwise, the Lifecycle API returns 404
Source artifacts not found. - Requires a signing key (
keypairName) configured on the JFrog Platform. The external name is<name>:<version>. projectKeyandsourceTypeare immutable. A Release Bundle version is effectively write-once.
ReleaseBundleV2Promotion
Promotes a Release Bundle v2 version.
- kubectl:
releasebundlev2promotions.lifecycle.artifactory.m.crossplane.io. - Identifier: composite
<name>:<version>:<environment>. - Upstream:
artifactory_release_bundle_v2_promotion. - Fields: required
environment,keypairName,version. Optional:excludedRepositoryKeys,includedRepositoryKeys,projectKey. - Immutable:
projectKey,environment. - Requires an existing signed Release Bundle v2 with the same name and version, and an existing lifecycle environment (
environment). The external name is<name>:<version>:<environment>.projectKeyandenvironmentare immutable.
Artifacts and Properties
Single-artifact uploads and item properties. Both are affected by known issues in v0.0.1. API group artifact.artifactory.m.crossplane.io, 2 Kinds.
Artifact
Provides a resource to deploy an artifact to an Artifactory repository.
- kubectl:
artifacts.artifact.artifactory.m.crossplane.io. - Identifier: server-assigned ID (never edit the external-name annotation).
- Upstream:
artifactory_artifact. - Fields: required
contentBase64,path,repository. - Immutable:
repository,path. - In v0.0.1, you can't use this Kind. The local
file_pathargument was removed, because a provider pod can't read files on your machine.contentBase64is required instead. After the upload succeeds, Observe fails withcannot find id in tfstate. The failure occurs because the upstreamArtifactresource never writes anidattribute while the provider uses the IdentifierFromProvider strategy. The managed resource staysSynced=Falseforever. - To recover an existing Artifact managed resource:
-
Delete the file through the Artifactory UI or the REST API (
DELETE /artifactory/<repo>/<path>). -
(Optional) Empty it from the trash can (
DELETE /artifactory/api/trash/clean/<repo>/<path>). -
Remove the finalizer:
kubectl patch artifact.artifact.artifactory.m.crossplane.io/<name> -n <ns> --type merge -p '{"metadata":{"finalizers":[]}}'
-
- Upload binaries with the JFrog CLI (
jf rt upload), a build tool, or the REST API instead.
ItemProperties
Provides a resource to manage the properties of an item: a file, a folder, or a repository.
- kubectl:
itemproperties.artifact.artifactory.m.crossplane.io. - Identifier: composite
<repoKey>[:<itemPath>]. - Upstream:
artifactory_item_properties. - Fields: required
properties,repoKey. Optional:isRecursive,itemPath. - Immutable:
repoKey,itemPath. - In v0.0.1, you can't use this Kind. When the target item has no properties yet, JFrog returns HTTP 404
No properties could be found. The provider reports this response as an error instead of as a missing object. As a result, the provider never creates the properties (Synced=False, ReconcileError). - Set properties with
jf rt set-propsorPUT /artifactory/api/storage/<repo>/<path>?properties=k=vinstead.
Next Steps
- To look up Kinds of the other providers, see JFrog Crossplane Kinds Reference.
- To create repositories, permissions, and Xray policies step by step, see Create Repositories and Xray Policies with Crossplane.
- To create, update, adopt, and delete JFrog objects, see Manage JFrog Objects with Crossplane.
- If a managed resource doesn't become Ready, see Troubleshoot the JFrog Crossplane Providers.
Updated about 1 hour ago
