provider-gitlab is the Crossplane infrastructure provider for
Gitlab. The provider that is built from the source code
in this repository can be installed into a Crossplane control plane and adds the
following new functionality:
- Custom Resource Definitions (CRDs) that model Gitlab resources
- Controllers to provision these resources in Gitlab based on the users desired state captured in CRDs they create
- Implementations of Crossplane's portable resource abstractions, enabling Gitlab resources to fulfill a user's general need for Gitlab configurations
Create a Personal Access Token on your GitLab instance with the scope set to api and fill in the corresponding Kubernetes secret:
kubectl create secret generic gitlab-credentials -n crossplane-system --from-literal=token="<PERSONAL_ACCESS_TOKEN>"Configure a ProviderConfig with a baseURL pointing to your GitLab instance:
apiVersion: gitlab.crossplane.io/v1beta1
kind: ProviderConfig
metadata:
name: gitlab-provider
spec:
baseURL: https://gitlab.com/
credentials:
source: Secret
method: PersonalAccessToken
secretRef:
namespace: crossplane-system
name: gitlab-credentials
key: tokenkubectl apply -f examples/providerconfig/provider.yamlThe namespaced groups.gitlab.m.crossplane.io/v1alpha1 ServiceAccountAccessToken
resource can keep a short-lived token alive by rotating it before it expires.
It supports two modes, selected automatically:
- Owner mode (default): the
ProviderConfigis a group owner. The token is created, observed, rotated and revoked through the group service-account endpoints. - Self-managed mode: the
ProviderConfigauthenticates with the very token this resource manages — i.e. theProviderConfig.credentials.secretRefpoints at the same secret (namespace, name andtokenkey) that the resource writes viawriteConnectionSecretToRef. The provider then acts as the service account itself and uses the self endpoints (GET/POST /personal_access_tokens/self). This lets a short-lived token reconcile a whole group and keep itself alive by self-rotating. ASelfManagedstatus condition reports the active mode.
Bootstrap secret type. In self-managed mode the rotated token is written back into the secret the
ProviderConfigreads. Crossplane only writes connection secrets it controls, so a hand-created bootstrap secret must use the connection secret typeconnection.crossplane.io/v1alpha1— a defaultOpaquesecret (e.g. fromkubectl create secret generic, which has no--typeflag) is rejected withrefusing to modify uncontrolled secret of type "Opaque". Create it from a manifest:apiVersion: v1 kind: Secret metadata: name: gitlab-self-rotating-token namespace: default type: connection.crossplane.io/v1alpha1 stringData: # a service account PAT with at least the `api` and `self_rotate` scopes token: "<PERSONAL_ACCESS_TOKEN>"Alternatively, bootstrap in owner mode first (Crossplane then creates and owns a correctly typed connection secret), and switch
providerConfigRefto the selfProviderConfigafterwards.
See examples/groups/serviceaccountaccesstoken.yaml
for full examples of both modes.
provider-gitlab is a community driven project and we welcome contributions. See the Crossplane Contributing guidelines to get started.
For filing bugs, suggesting improvements, or requesting new features, please open an issue.
Please use the following to reach members of the community:
- Slack: Join our slack channel
- Forums: crossplane-dev
- Twitter: @crossplane_io
- Email: info@crossplane.io
provider-gitlab is run according to the same Governance and Ownership structure as the core Crossplane project.
provider-gitlab adheres to the same Code of Conduct as the core Crossplane project.
provider-gitlab is under the Apache 2.0 license.