diff --git a/.github/workflows/vale.yml b/.github/workflows/vale.yml index d64ea0c2..807f76e2 100644 --- a/.github/workflows/vale.yml +++ b/.github/workflows/vale.yml @@ -23,7 +23,7 @@ jobs: - name: Install Vale env: - VALE_VERSION: "2.22.0" + VALE_VERSION: "2.28.2" run: wget https://github.com/errata-ai/vale/releases/download/v${{env.VALE_VERSION}}/vale_${{env.VALE_VERSION}}_Linux_64-bit.tar.gz && tar -xvzf vale_${{env.VALE_VERSION}}_Linux_64-bit.tar.gz - name: Run Vale diff --git a/content/master/_index.md b/content/master/_index.md index da1ff2f8..3a810af2 100644 --- a/content/master/_index.md +++ b/content/master/_index.md @@ -18,7 +18,7 @@ APIs. Crossplane can even let you directly from Kubernetes. If it has an API, Crossplane can connect to it. With Crossplane, platform teams can create new abstractions and custom -APIs with the full power of Kubernetes policies, namespaces, role-based access +APIs with the full power of Kubernetes policies, namespaces, role based access controls and more. Crossplane brings all your non-Kubernetes resources under one roof. @@ -29,16 +29,18 @@ and use Kubernetes as the control plane for everything. {{< hint "tip" >}} **What's a control plane?** + Control planes create and manage the lifecycle of resources. Control planes constantly _check_ that the intended resources exist, _report_ when the intended state doesn't match reality and _act_ to make things right. Crossplane extends the Kubernetes control plane to be a **universal control plane** to check, report and act on any resource, anywhere. + {{< /hint >}} -# Get Started +# Get started * [Install Crossplane]({{}}) in your Kubernetes cluster * Learn more about how Crossplane works in the [Crossplane introduction]({{}}) diff --git a/content/master/concepts/claims.md b/content/master/concepts/claims.md index e5f8f729..bfda614b 100644 --- a/content/master/concepts/claims.md +++ b/content/master/concepts/claims.md @@ -204,5 +204,4 @@ spec: name: my-claim-secret ``` -For more information on connection secrets read the [Connection Secrets -knowledge base article]({{}}). \ No newline at end of file +For more information on connection secrets read the [Connection Secrets knowledge base article]({{}}). \ No newline at end of file diff --git a/content/master/concepts/composite-resource-definitions.md b/content/master/concepts/composite-resource-definitions.md index 496db4d0..6e464132 100644 --- a/content/master/concepts/composite-resource-definitions.md +++ b/content/master/concepts/composite-resource-definitions.md @@ -258,8 +258,7 @@ on what your OpenAPIv3 custom API can use. {{}} -Changing or expanding the XRD schema requires restarting the [Crossplane -pod]({{}}) to take effect. +Changing or expanding the XRD schema requires restarting the [Crossplane pod]({{}}) to take effect. {{< /hint >}} ##### Required fields @@ -351,8 +350,7 @@ object, - location ``` -The Swagger "[Describing -Parameters](https://swagger.io/docs/specification/describing-parameters/)" +The Swagger "[Describing Parameters](https://swagger.io/docs/specification/describing-parameters/)" documentation has more examples. ##### Crossplane reserved fields @@ -415,8 +413,7 @@ field indicates which version of the schema Compositions use. Only one version can be `referenceable`. {{< hint "note" >}} -Changing which version is `referenceable:true` requires [updating the -`compositeTypeRef.apiVersion`]({{}}) +Changing which version is `referenceable:true` requires [updating the `compositeTypeRef.apiVersion`]({{}}) of any Compositions referencing that XRD. {{< /hint >}} @@ -427,8 +424,7 @@ of any Compositions referencing that XRD. Crossplane supports defining multiple `versions`, but the schema of each version can't change any existing fields, also called "making a breaking change." -Breaking schema changes between versions requires the use of [conversion -webhooks](https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definition-versioning/#webhook-conversion). +Breaking schema changes between versions requires the use of [conversion webhooks](https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definition-versioning/#webhook-conversion). New versions may define new optional parameters, but new required fields are a "breaking change." @@ -496,8 +492,7 @@ spec: {{}} -Changing or expanding the XRD schema requires restarting the [Crossplane -pod]({{}}) to take effect. +Changing or expanding the XRD schema requires restarting the [Crossplane pod]({{}}) to take effect. {{< /hint >}} ### Enable Claims @@ -622,8 +617,8 @@ You can't change the `connectionSecretKeys` of an XRD. You must delete and recreate the XRD to change the `connectionSecretKeys`. {{}} -For more information on connection secrets read the [Connection Secrets -knowledge base article]({{}}). +For more information on connection secrets read the +[Connection Secrets knowledge base article]({{}}). ### Set composite resource defaults XRDs can set default parameters for composite resources and Claims. diff --git a/content/master/concepts/composite-resources.md b/content/master/concepts/composite-resources.md index 41c89a6c..27834144 100644 --- a/content/master/concepts/composite-resources.md +++ b/content/master/concepts/composite-resources.md @@ -142,8 +142,7 @@ spec: toFieldPath: metadata.annotations ``` -For more information on patching resources refer to the [Patch and -Transform]({{}}) documentation. +For more information on patching resources refer to the [Patch and Transform]({{}}) documentation. ### Composition selection @@ -282,8 +281,7 @@ to the composite resource. A resource may only access connection secrets allowed by the XRD. By default XRDs provide access to all connection secrets generated by managed resources. -Read more about [managing connection -secrets]({{}}) +Read more about [managing connection secrets]({{}}) in the XRD documentation. {{< /hint >}} @@ -335,8 +333,7 @@ spec: Read the [External Secrets Store]({{}}) documentation for more information on using external secret stores. -For more information on connection secrets read the [Connection Secrets -knowledge base article]({{}}). +For more information on connection secrets read the [Connection Secrets knowledge base article]({{}}). ### Pausing composite resources diff --git a/content/master/concepts/compositions.md b/content/master/concepts/compositions.md index ac92acca..ce22845c 100644 --- a/content/master/concepts/compositions.md +++ b/content/master/concepts/compositions.md @@ -135,7 +135,7 @@ the external resource name. #### Template a ProviderConfig Compositions can define a ProviderConfig like it defines managed resources. -Generating a ProviderConfig may be useful in providing unique credentials to +Generating a ProviderConfig can provide unique credentials to each deployment. @@ -240,8 +240,7 @@ Composition, the resources defined by the the EKS {{}}cluster{{}}. {{}} -This abbreviated example is from the Upbound [AWS Reference -Platform](https://github.com/upbound/platform-ref-aws). +This abbreviated example is from the Upbound [AWS Reference Platform](https://github.com/upbound/platform-ref-aws). View the complete Compositions in the reference platform's [package directory](https://github.com/upbound/platform-ref-aws/blob/main/package/cluster/composition.yaml). @@ -446,8 +445,7 @@ Most Compositions require customizing the fields of the resources. This can include applying unique passwords, modifying where to deploy resources, or applying labels or annotations. -The primary method to change resources is using a resource [patch and -transform]({{}}). Patch and transforms allow +The primary method to change resources is using a resource [patch and transform]({{}}). Patch and transforms allow matching specific input fields, modifying them and applying them to the managed resource. @@ -892,8 +890,7 @@ Read the for more information on restricting secret keys. {{< /hint >}} -For more information on connection secrets read the [Connection Secrets -knowledge base article]({{}}). +For more information on connection secrets read the [Connection Secrets knowledge base article]({{}}). {{}} You can't change the @@ -1007,7 +1004,7 @@ Compositions support matching resource fields by: #### Match a string {{}}MatchString{{}} considers the composed resource to be ready when the value of a -field within that resource matches a specified string. +field in that resource matches a specified string. {{}} @@ -1042,7 +1039,7 @@ spec: #### Match an integer {{}}MatchInteger{{}} considers the composed resource to be ready when the value of a -field within that resource matches a specified integer. +field in that resource matches a specified integer. {{}} diff --git a/content/master/concepts/managed-resources.md b/content/master/concepts/managed-resources.md index b13006aa..fa8696cd 100644 --- a/content/master/concepts/managed-resources.md +++ b/content/master/concepts/managed-resources.md @@ -35,8 +35,7 @@ Provider also define the available settings of a managed resource. Each managed resource is a unique API endpoint with their own group, kind and version. -For example the [Upbound AWS -Provider](https://marketplace.upbound.io/providers/upbound/provider-aws/latest/) +For example the [Upbound AWS Provider](https://marketplace.upbound.io/providers/upbound/provider-aws/latest/) defines the {{}}Instance{{}} kind from the group {{}}ec2.aws.upbound.io{{}} @@ -650,8 +649,7 @@ call and receiving a response. If a Provider restarts before creating the `succeed` or `fail` annotations the Provider can't reconcile the manged resource. -Read Crossplane [issue -#3037](https://github.com/crossplane/crossplane/issues/3037#issuecomment-1110142427) +Read Crossplane [issue #3037](https://github.com/crossplane/crossplane/issues/3037#issuecomment-1110142427) for more details {{< /hint >}} diff --git a/content/master/concepts/pods.md b/content/master/concepts/pods.md index c272dcb7..d1798ce2 100644 --- a/content/master/concepts/pods.md +++ b/content/master/concepts/pods.md @@ -276,8 +276,7 @@ updates the Roles to access the specific API endpoints in a Claim. {{< hint "note" >}} The specific details of the namespace Roles are beyond this guide. For more -information read the [Composite Resource ClusterRole -Mechanics](https://github.com/crossplane/crossplane/blob/master/design/design-doc-rbac-manager.md#composite-resource-clusterrole-mechanics) +information read the [Composite Resource ClusterRole Mechanics](https://github.com/crossplane/crossplane/blob/master/design/design-doc-rbac-manager.md#composite-resource-clusterrole-mechanics) section of the RBAC Manager design document. {{< /hint >}} diff --git a/content/master/concepts/providers.md b/content/master/concepts/providers.md index efea40ad..de231d0b 100644 --- a/content/master/concepts/providers.md +++ b/content/master/concepts/providers.md @@ -33,8 +33,7 @@ Kubernetes API endpoint. These endpoints are {{< hint "note" >}} Instructions on building your own Provider are outside of the scope of this -document. Read the Crossplane contributing [Provider Development -Guide](https://github.com/crossplane/crossplane/blob/master/contributing/guide-provider-development.md) +document. Read the Crossplane contributing [Provider Development Guide](https://github.com/crossplane/crossplane/blob/master/contributing/guide-provider-development.md) for more information. {{< /hint >}} @@ -132,8 +131,7 @@ If you remove the Provider first, you must manually delete external resources through your cloud provider. Managed resources must be manually deleted by removing their finalizers. -For more information on deleting abandoned resources read the [Crossplane -troubleshooting guide]({{}}). +For more information on deleting abandoned resources read the [Crossplane troubleshooting guide]({{}}). {{< /hint >}} ## Verify a Provider diff --git a/content/master/getting-started/introduction.md b/content/master/getting-started/introduction.md index 684654e4..5c106995 100644 --- a/content/master/getting-started/introduction.md +++ b/content/master/getting-started/introduction.md @@ -98,7 +98,7 @@ defines a [`bucket`](https://marketplace.upbound.io/providers/upbound/provider-aws/v0.25.0/resources/s3.aws.upbound.io/Bucket/v1beta1) resource for creating and managing AWS S3 storage buckets. -Within the `bucket` CRD is a +In the `bucket` CRD is a [`spec.forProvider.region`](https://marketplace.upbound.io/providers/upbound/provider-aws/v0.25.0/resources/s3.aws.upbound.io/Bucket/v1beta1#doc:spec-forProvider-region) value that defines which AWS region to deploy the bucket in. @@ -147,8 +147,7 @@ Depending on the size of the API server and number of managed resources, this command may take minutes to return or may timeout. For more information, read -[Kubernetes issue -#111880](https://github.com/kubernetes/kubernetes/issues/111880) +[Kubernetes issue #111880](https://github.com/kubernetes/kubernetes/issues/111880) and [Crossplane issue #3459](https://github.com/crossplane/crossplane/issues/3459). {{< /hint >}} diff --git a/content/master/getting-started/provider-aws-part-2.md b/content/master/getting-started/provider-aws-part-2.md index d317f7a7..21665486 100644 --- a/content/master/getting-started/provider-aws-part-2.md +++ b/content/master/getting-started/provider-aws-part-2.md @@ -132,7 +132,7 @@ is strongly recommended. This guide uses the group {{}}database.example.com{{}}. -Since this is the first version of the API, this guide uses the version +Because this is the first version of the API, this guide uses the version {{}}v1alpha1{{}}. ```yaml {label="version",copy-lines="none"} @@ -141,7 +141,7 @@ apiVersion: database.example.com/v1alpha1 ### Define a kind -The API group is a logical collection of related APIs. Within a group are +The API group is a logical collection of related APIs. In a group are individual kinds representing different resources. For example a `database` group may have a `Relational` and `NoSQL` kinds. @@ -283,11 +283,11 @@ Each entry in the template is a full resource definitions, defining all the resource settings and metadata like labels and annotations. -This template creates a GCP -{{}}storage{{}} +This template creates an AWS +{{}}S3{{}} {{}}Bucket{{}} and a -{{}}Pubsub{{}} -{{}}Topic{{}}. +{{}}DynamoDB{{}} +{{}}Table{{}}. Crossplane uses {{}}patches{{}} to apply the user's input to the resource template. @@ -319,7 +319,7 @@ spec: name: default patches: - type: FromCompositeFieldPath - fromFieldPath: "spec.location" + fromFieldPath: "location" toFieldPath: "spec.forProvider.region" transforms: - type: map @@ -343,7 +343,7 @@ spec: hashKey: S3ID patches: - type: FromCompositeFieldPath - fromFieldPath: "location" + fromFieldPath: "spec.location" toFieldPath: "spec.forProvider.region" transforms: - type: map @@ -473,7 +473,7 @@ Accessing the API `nosql` happens at the cluster scope. Most organizations isolate their users into namespaces. -A Crossplane _Claim_ is the custom API within a namespace. +A Crossplane _Claim_ is the custom API in a namespace. Creating a _Claim_ is just like accessing the custom API endpoint, but with the {{}}kind{{}} diff --git a/content/master/getting-started/provider-azure-part-2.md b/content/master/getting-started/provider-azure-part-2.md index c306ea46..afb01eb0 100644 --- a/content/master/getting-started/provider-azure-part-2.md +++ b/content/master/getting-started/provider-azure-part-2.md @@ -137,7 +137,7 @@ is strongly recommended. This guide uses the group {{}}compute.example.com{{}}. -Since this is the first version of the API, this guide uses the version +Because this is the first version of the API, this guide uses the version {{}}v1alpha1{{}}. ```yaml {label="version",copy-lines="none"} @@ -146,7 +146,7 @@ apiVersion: compute.example.com/v1alpha1 ### Define a kind -The API group is a logical collection of related APIs. Within a group are +The API group is a logical collection of related APIs. In a group are individual kinds representing different resources. For example a `compute` group may have a `VirtualMachine` and `BareMetal` kinds. @@ -289,16 +289,17 @@ is a full resource definitions, defining all the resource settings and metadata like labels and annotations. This template creates an Azure -{{}}LinuxVirtualMachine{{}} -{{}}NetworkInterface{{}}, -{{}}Subnet{{}} and -{{}}VirtualNetwork{{}}. +{{}}LinuxVirtualMachine{{}} +{{}}NetworkInterface{{}}, +{{}}Subnet{{}} +{{}}VirtualNetwork{{}} and +{{}}ResourceGroup{{}}. -Crossplane uses {{}}patches{{}} to apply +Crossplane uses {{}}patches{{}} to apply the user's input to the resource template. This Composition takes the user's -{{}}location{{}} input and uses it as the -{{}}region{{}} used in the individual +{{}}location{{}} input and uses it as the +{{}}location{{}} used in the individual resource. Apply this Composition to your cluster. @@ -311,22 +312,6 @@ metadata: name: crossplane-quickstart-vm-with-network spec: resources: - - name: crossplane-resourcegroup - base: - apiVersion: azure.upbound.io/v1beta1 - kind: ResourceGroup - spec: - forProvider: - location: Central US - patches: - - type: FromCompositeFieldPath - fromFieldPath: "location" - toFieldPath: "spec.forProvider.location" - transforms: - - type: map - map: - EU: "Sweden Central" - US: "Central US" - name: quickstart-vm base: apiVersion: compute.azure.upbound.io/v1beta1 @@ -355,7 +340,7 @@ spec: matchControllerRef: true patches: - type: FromCompositeFieldPath - fromFieldPath: "location" + fromFieldPath: "spec.location" toFieldPath: "spec.forProvider.location" transforms: - type: map @@ -378,7 +363,7 @@ spec: matchControllerRef: true patches: - type: FromCompositeFieldPath - fromFieldPath: "location" + fromFieldPath: "spec.location" toFieldPath: "spec.forProvider.location" transforms: - type: map @@ -399,7 +384,7 @@ spec: matchControllerRef: true patches: - type: FromCompositeFieldPath - fromFieldPath: "location" + fromFieldPath: "spec.location" toFieldPath: "spec.forProvider.location" transforms: - type: map @@ -419,7 +404,23 @@ spec: matchControllerRef: true patches: - type: FromCompositeFieldPath - fromFieldPath: "location" + fromFieldPath: "spec.location" + toFieldPath: "spec.forProvider.location" + transforms: + - type: map + map: + EU: "Sweden Central" + US: "Central US" + - name: crossplane-resourcegroup + base: + apiVersion: azure.upbound.io/v1beta1 + kind: ResourceGroup + spec: + forProvider: + location: Central US + patches: + - type: FromCompositeFieldPath + fromFieldPath: "spec.location" toFieldPath: "spec.forProvider.location" transforms: - type: map @@ -487,7 +488,7 @@ upbound-provider-family-azure True True xpkg.upbound.io/upbound/pr With the custom API (XRD) installed and associated to a resource template (Composition) users can access the API to create resources. -Create a {{}}VirtualMachine{{}} object to +Create a {{}}VirtualMachine{{}} object to create the cloud resources. ```yaml {copy-lines="all",label="xr"} @@ -497,7 +498,7 @@ kind: VirtualMachine metadata: name: my-vm spec: - location: "US" + location: "EU" EOF ``` @@ -573,7 +574,7 @@ Accessing the API `VirtualMachine` happens at the cluster scope. Most organizations isolate their users into namespaces. -A Crossplane _Claim_ is the custom API within a namespace. +A Crossplane _Claim_ is the custom API in a namespace. Creating a _Claim_ is just like accessing the custom API endpoint, but with the {{}}kind{{}} @@ -595,7 +596,7 @@ metadata: name: my-namespaced-vm namespace: crossplane-test spec: - location: "US" + location: "EU" EOF ``` View the Claim with `kubectl get claim -n crossplane-test`. diff --git a/content/master/getting-started/provider-gcp-part-2.md b/content/master/getting-started/provider-gcp-part-2.md index 9f121fe3..2a775050 100644 --- a/content/master/getting-started/provider-gcp-part-2.md +++ b/content/master/getting-started/provider-gcp-part-2.md @@ -150,7 +150,7 @@ is strongly recommended. This guide uses the group {{}}database.example.com{{}}. -Since this is the first version of the API, this guide uses the version +Because this is the first version of the API, this guide uses the version {{}}v1alpha1{{}}. ```yaml {label="version",copy-lines="none"} @@ -159,7 +159,7 @@ apiVersion: database.example.com/v1alpha1 ### Define a kind -The API group is a logical collection of related APIs. Within a group are +The API group is a logical collection of related APIs. In a group are individual kinds representing different resources. For example a `queue` group may have a `PubSub` and `CloudTask` kinds. @@ -478,7 +478,7 @@ Accessing the API `pubsub` happens at the cluster scope. Most organizations isolate their users into namespaces. -A Crossplane _Claim_ is the custom API within a namespace. +A Crossplane _Claim_ is the custom API in a namespace. Creating a _Claim_ is just like accessing the custom API endpoint, but with the {{}}kind{{}} diff --git a/content/master/software/install.md b/content/master/software/install.md index 26d4d269..50498661 100644 --- a/content/master/software/install.md +++ b/content/master/software/install.md @@ -94,7 +94,7 @@ provider and configuration packages. * The _Composition controller_ installs and manages the Crossplane _Composite Resource Definitions_, _Compositions_ and _Claims_. -### Crossplane-rbac-manager deployment +### Crossplane RBAC manager deployment The `crossplane-rbac-manager` creates and manages Kubernetes _ClusterRoles_ for installed Crossplane _Provider_ and their _Custom Resource Definitions_. @@ -126,16 +126,16 @@ Apply customizations with the command line or with a Helm _values_ file. | `extraEnvVarsRBACManager` | Add custom environmental variables to the RBAC Manager pod deployment. Replaces any `.` in a variable name with `_`. For example, `SAMPLE.KEY=value1` becomes `SAMPLE_KEY=value1`. | `{}` | | `extraVolumeMountsCrossplane` | Add custom `volumeMounts` to the Crossplane pod. | `{}` | | `extraVolumesCrossplane` | Add custom `volumes` to the Crossplane pod. | `{}` | -| `hostNetwork` | Enable `hostNetwork` for the Crossplane deployment. Caution: enabling `hostNetwork`` grants the Crossplane Pod access to the host network namespace. | `false` | +| `hostNetwork` | Enable `hostNetwork` for the Crossplane deployment. Caution: enabling `hostNetwork` grants the Crossplane Pod access to the host network namespace. | `false` | | `image.pullPolicy` | The image pull policy used for Crossplane and RBAC Manager pods. | `"IfNotPresent"` | | `image.repository` | Repository for the Crossplane pod image. | `"crossplane/crossplane"` | -| `image.tag` | The Crossplane image tag. Defaults to the value of `appVersion` in Chart.yaml. | `""` | +| `image.tag` | The Crossplane image tag. Defaults to the value of `appVersion` in `Chart.yaml`. | `""` | | `imagePullSecrets` | The imagePullSecret names to add to the Crossplane ServiceAccount. | `{}` | | `leaderElection` | Enable [leader election](https://docs.crossplane.io/latest/concepts/pods/#leader-election) for the Crossplane pod. | `true` | | `metrics.enabled` | Enable Prometheus path, port and scrape annotations and expose port 8080 for both the Crossplane and RBAC Manager pods. | `false` | | `nodeSelector` | Add `nodeSelectors` to the Crossplane pod deployment. | `{}` | | `packageCache.configMap` | The name of a ConfigMap to use as the package cache. Disables the default package cache `emptyDir` Volume. | `""` | -| `packageCache.medium` | Set to `Memory` to hold the package cache in a RAM-backed file system. Useful for Crossplane development. | `""` | +| `packageCache.medium` | Set to `Memory` to hold the package cache in a RAM backed file system. Useful for Crossplane development. | `""` | | `packageCache.pvc` | The name of a PersistentVolumeClaim to use as the package cache. Disables the default package cache `emptyDir` Volume. | `""` | | `packageCache.sizeLimit` | The size limit for the package cache. If medium is `Memory` the `sizeLimit` can't exceed Node memory. | `"20Mi"` | | `podSecurityContextCrossplane` | Add a custom `securityContext` to the Crossplane pod. | `{}` | @@ -175,14 +175,14 @@ Apply customizations with the command line or with a Helm _values_ file. | `webhooks.enabled` | Enable webhooks for Crossplane and installed Provider packages. | `true` | | `xfn.args` | Add custom arguments to the Composite functions runner container. | `[]` | | `xfn.cache.configMap` | The name of a ConfigMap to use as the Composite function runner package cache. Disables the default Composite function runner package cache `emptyDir` Volume. | `""` | -| `xfn.cache.medium` | Set to `Memory` to hold the Composite function runner package cache in a RAM-backed file system. Useful for Crossplane development. | `""` | +| `xfn.cache.medium` | Set to `Memory` to hold the Composite function runner package cache in a RAM backed file system. Useful for Crossplane development. | `""` | | `xfn.cache.pvc` | The name of a PersistentVolumeClaim to use as the Composite function runner package cache. Disables the default Composite function runner package cache `emptyDir` Volume. | `""` | | `xfn.cache.sizeLimit` | The size limit for the Composite function runner package cache. If medium is `Memory` the `sizeLimit` can't exceed Node memory. | `"1Gi"` | | `xfn.enabled` | Enable the alpha Composition functions (`xfn`) sidecar container. Also requires Crossplane `args` value `--enable-composition-functions` set. | `false` | | `xfn.extraEnvVars` | Add custom environmental variables to the Composite function runner container. Replaces any `.` in a variable name with `_`. For example, `SAMPLE.KEY=value1` becomes `SAMPLE_KEY=value1`. | `{}` | | `xfn.image.pullPolicy` | Composite function runner container image pull policy. | `"IfNotPresent"` | | `xfn.image.repository` | Composite function runner container image. | `"crossplane/xfn"` | -| `xfn.image.tag` | Composite function runner container image tag. Defaults to the value of `appVersion` in Chart.yaml. | `""` | +| `xfn.image.tag` | Composite function runner container image tag. Defaults to the value of `appVersion` in `Chart.yaml`. | `""` | | `xfn.resources.limits.cpu` | CPU resource limits for the Composite function runner container. | `"2000m"` | | `xfn.resources.limits.memory` | Memory resource limits for the Composite function runner container. | `"2Gi"` | | `xfn.resources.requests.cpu` | CPU resource requests for the Composite function runner container. | `"1000m"` | diff --git a/content/v1.13/_index.md b/content/v1.13/_index.md index 36b0efd1..530364b6 100644 --- a/content/v1.13/_index.md +++ b/content/v1.13/_index.md @@ -18,7 +18,7 @@ APIs. Crossplane can even let you directly from Kubernetes. If it has an API, Crossplane can connect to it. With Crossplane, platform teams can create new abstractions and custom -APIs with the full power of Kubernetes policies, namespaces, role-based access +APIs with the full power of Kubernetes policies, namespaces, role based access controls and more. Crossplane brings all your non-Kubernetes resources under one roof. @@ -29,16 +29,18 @@ and use Kubernetes as the control plane for everything. {{< hint "tip" >}} **What's a control plane?** + Control planes create and manage the lifecycle of resources. Control planes constantly _check_ that the intended resources exist, _report_ when the intended state doesn't match reality and _act_ to make things right. Crossplane extends the Kubernetes control plane to be a **universal control plane** to check, report and act on any resource, anywhere. + {{< /hint >}} -# Get Started +# Get started * [Install Crossplane]({{}}) in your Kubernetes cluster * Learn more about how Crossplane works in the [Crossplane introduction]({{}}) diff --git a/content/v1.13/concepts/claims.md b/content/v1.13/concepts/claims.md index e5f8f729..62619d93 100644 --- a/content/v1.13/concepts/claims.md +++ b/content/v1.13/concepts/claims.md @@ -204,5 +204,5 @@ spec: name: my-claim-secret ``` -For more information on connection secrets read the [Connection Secrets -knowledge base article]({{}}). \ No newline at end of file +For more information on connection secrets read the +[Connection Secrets knowledge base article]({{}}). \ No newline at end of file diff --git a/content/v1.13/concepts/composite-resource-definitions.md b/content/v1.13/concepts/composite-resource-definitions.md index 496db4d0..69f3b9e9 100644 --- a/content/v1.13/concepts/composite-resource-definitions.md +++ b/content/v1.13/concepts/composite-resource-definitions.md @@ -258,8 +258,8 @@ on what your OpenAPIv3 custom API can use. {{}} -Changing or expanding the XRD schema requires restarting the [Crossplane -pod]({{}}) to take effect. +Changing or expanding the XRD schema requires restarting the +[Crossplane pod]({{}}) to take effect. {{< /hint >}} ##### Required fields @@ -351,8 +351,8 @@ object, - location ``` -The Swagger "[Describing -Parameters](https://swagger.io/docs/specification/describing-parameters/)" +The Swagger +"[Describing Parameters](https://swagger.io/docs/specification/describing-parameters/)" documentation has more examples. ##### Crossplane reserved fields @@ -415,8 +415,8 @@ field indicates which version of the schema Compositions use. Only one version can be `referenceable`. {{< hint "note" >}} -Changing which version is `referenceable:true` requires [updating the -`compositeTypeRef.apiVersion`]({{}}) +Changing which version is `referenceable:true` requires +[updating the `compositeTypeRef.apiVersion`]({{}}) of any Compositions referencing that XRD. {{< /hint >}} @@ -427,8 +427,8 @@ of any Compositions referencing that XRD. Crossplane supports defining multiple `versions`, but the schema of each version can't change any existing fields, also called "making a breaking change." -Breaking schema changes between versions requires the use of [conversion -webhooks](https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definition-versioning/#webhook-conversion). +Breaking schema changes between versions requires the use of +[conversion webhooks](https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definition-versioning/#webhook-conversion). New versions may define new optional parameters, but new required fields are a "breaking change." @@ -496,8 +496,8 @@ spec: {{}} -Changing or expanding the XRD schema requires restarting the [Crossplane -pod]({{}}) to take effect. +Changing or expanding the XRD schema requires restarting the +[Crossplane pod]({{}}) to take effect. {{< /hint >}} ### Enable Claims @@ -622,8 +622,8 @@ You can't change the `connectionSecretKeys` of an XRD. You must delete and recreate the XRD to change the `connectionSecretKeys`. {{}} -For more information on connection secrets read the [Connection Secrets -knowledge base article]({{}}). +For more information on connection secrets read the +[Connection Secrets knowledge base article]({{}}). ### Set composite resource defaults XRDs can set default parameters for composite resources and Claims. diff --git a/content/v1.13/concepts/composite-resources.md b/content/v1.13/concepts/composite-resources.md index 41c89a6c..766da592 100644 --- a/content/v1.13/concepts/composite-resources.md +++ b/content/v1.13/concepts/composite-resources.md @@ -142,8 +142,8 @@ spec: toFieldPath: metadata.annotations ``` -For more information on patching resources refer to the [Patch and -Transform]({{}}) documentation. +For more information on patching resources refer to the +[Patch and Transform]({{}}) documentation. ### Composition selection @@ -282,8 +282,8 @@ to the composite resource. A resource may only access connection secrets allowed by the XRD. By default XRDs provide access to all connection secrets generated by managed resources. -Read more about [managing connection -secrets]({{}}) +Read more about +[managing connection secrets]({{}}) in the XRD documentation. {{< /hint >}} @@ -335,8 +335,8 @@ spec: Read the [External Secrets Store]({{}}) documentation for more information on using external secret stores. -For more information on connection secrets read the [Connection Secrets -knowledge base article]({{}}). +For more information on connection secrets read the +[Connection Secrets knowledge base article]({{}}). ### Pausing composite resources diff --git a/content/v1.13/concepts/compositions.md b/content/v1.13/concepts/compositions.md index ac92acca..fa0fe5e9 100644 --- a/content/v1.13/concepts/compositions.md +++ b/content/v1.13/concepts/compositions.md @@ -240,8 +240,8 @@ Composition, the resources defined by the the EKS {{}}cluster{{}}. {{}} -This abbreviated example is from the Upbound [AWS Reference -Platform](https://github.com/upbound/platform-ref-aws). +This abbreviated example is from the Upbound +[AWS Reference Platform](https://github.com/upbound/platform-ref-aws). View the complete Compositions in the reference platform's [package directory](https://github.com/upbound/platform-ref-aws/blob/main/package/cluster/composition.yaml). @@ -446,10 +446,10 @@ Most Compositions require customizing the fields of the resources. This can include applying unique passwords, modifying where to deploy resources, or applying labels or annotations. -The primary method to change resources is using a resource [patch and -transform]({{}}). Patch and transforms allow -matching specific input fields, modifying them and applying them to the managed -resource. +The primary method to change resources is using a resource +[patch and transform]({{}}). Patch and transforms +allow matching specific input fields, modifying them and applying them to the +managed resource. {{}} The details of creating patch and transforms and their options are in the @@ -892,8 +892,8 @@ Read the for more information on restricting secret keys. {{< /hint >}} -For more information on connection secrets read the [Connection Secrets -knowledge base article]({{}}). +For more information on connection secrets read the +[Connection Secrets knowledge base article]({{}}). {{}} You can't change the @@ -1007,7 +1007,7 @@ Compositions support matching resource fields by: #### Match a string {{}}MatchString{{}} considers the composed resource to be ready when the value of a -field within that resource matches a specified string. +field in that resource matches a specified string. {{}} @@ -1042,7 +1042,7 @@ spec: #### Match an integer {{}}MatchInteger{{}} considers the composed resource to be ready when the value of a -field within that resource matches a specified integer. +field in that resource matches a specified integer. {{}} diff --git a/content/v1.13/concepts/managed-resources.md b/content/v1.13/concepts/managed-resources.md index b13006aa..f3187278 100644 --- a/content/v1.13/concepts/managed-resources.md +++ b/content/v1.13/concepts/managed-resources.md @@ -35,8 +35,8 @@ Provider also define the available settings of a managed resource. Each managed resource is a unique API endpoint with their own group, kind and version. -For example the [Upbound AWS -Provider](https://marketplace.upbound.io/providers/upbound/provider-aws/latest/) +For example the +[Upbound AWS Provider](https://marketplace.upbound.io/providers/upbound/provider-aws/latest/) defines the {{}}Instance{{}} kind from the group {{}}ec2.aws.upbound.io{{}} @@ -650,8 +650,8 @@ call and receiving a response. If a Provider restarts before creating the `succeed` or `fail` annotations the Provider can't reconcile the manged resource. -Read Crossplane [issue -#3037](https://github.com/crossplane/crossplane/issues/3037#issuecomment-1110142427) +Read Crossplane +[issue #3037](https://github.com/crossplane/crossplane/issues/3037#issuecomment-1110142427) for more details {{< /hint >}} diff --git a/content/v1.13/concepts/pods.md b/content/v1.13/concepts/pods.md index c272dcb7..d1798ce2 100644 --- a/content/v1.13/concepts/pods.md +++ b/content/v1.13/concepts/pods.md @@ -276,8 +276,7 @@ updates the Roles to access the specific API endpoints in a Claim. {{< hint "note" >}} The specific details of the namespace Roles are beyond this guide. For more -information read the [Composite Resource ClusterRole -Mechanics](https://github.com/crossplane/crossplane/blob/master/design/design-doc-rbac-manager.md#composite-resource-clusterrole-mechanics) +information read the [Composite Resource ClusterRole Mechanics](https://github.com/crossplane/crossplane/blob/master/design/design-doc-rbac-manager.md#composite-resource-clusterrole-mechanics) section of the RBAC Manager design document. {{< /hint >}} diff --git a/content/v1.13/concepts/providers.md b/content/v1.13/concepts/providers.md index efea40ad..de231d0b 100644 --- a/content/v1.13/concepts/providers.md +++ b/content/v1.13/concepts/providers.md @@ -33,8 +33,7 @@ Kubernetes API endpoint. These endpoints are {{< hint "note" >}} Instructions on building your own Provider are outside of the scope of this -document. Read the Crossplane contributing [Provider Development -Guide](https://github.com/crossplane/crossplane/blob/master/contributing/guide-provider-development.md) +document. Read the Crossplane contributing [Provider Development Guide](https://github.com/crossplane/crossplane/blob/master/contributing/guide-provider-development.md) for more information. {{< /hint >}} @@ -132,8 +131,7 @@ If you remove the Provider first, you must manually delete external resources through your cloud provider. Managed resources must be manually deleted by removing their finalizers. -For more information on deleting abandoned resources read the [Crossplane -troubleshooting guide]({{}}). +For more information on deleting abandoned resources read the [Crossplane troubleshooting guide]({{}}). {{< /hint >}} ## Verify a Provider diff --git a/content/v1.13/getting-started/introduction.md b/content/v1.13/getting-started/introduction.md index 684654e4..5c106995 100644 --- a/content/v1.13/getting-started/introduction.md +++ b/content/v1.13/getting-started/introduction.md @@ -98,7 +98,7 @@ defines a [`bucket`](https://marketplace.upbound.io/providers/upbound/provider-aws/v0.25.0/resources/s3.aws.upbound.io/Bucket/v1beta1) resource for creating and managing AWS S3 storage buckets. -Within the `bucket` CRD is a +In the `bucket` CRD is a [`spec.forProvider.region`](https://marketplace.upbound.io/providers/upbound/provider-aws/v0.25.0/resources/s3.aws.upbound.io/Bucket/v1beta1#doc:spec-forProvider-region) value that defines which AWS region to deploy the bucket in. @@ -147,8 +147,7 @@ Depending on the size of the API server and number of managed resources, this command may take minutes to return or may timeout. For more information, read -[Kubernetes issue -#111880](https://github.com/kubernetes/kubernetes/issues/111880) +[Kubernetes issue #111880](https://github.com/kubernetes/kubernetes/issues/111880) and [Crossplane issue #3459](https://github.com/crossplane/crossplane/issues/3459). {{< /hint >}} diff --git a/content/v1.13/getting-started/provider-aws-part-2.md b/content/v1.13/getting-started/provider-aws-part-2.md index fb788906..9904e2f9 100644 --- a/content/v1.13/getting-started/provider-aws-part-2.md +++ b/content/v1.13/getting-started/provider-aws-part-2.md @@ -132,7 +132,7 @@ is strongly recommended. This guide uses the group {{}}database.example.com{{}}. -Since this is the first version of the API, this guide uses the version +Because this is the first version of the API, this guide uses the version {{}}v1alpha1{{}}. ```yaml {label="version",copy-lines="none"} @@ -141,7 +141,7 @@ apiVersion: database.example.com/v1alpha1 ### Define a kind -The API group is a logical collection of related APIs. Within a group are +The API group is a logical collection of related APIs. In a group are individual kinds representing different resources. For example a `database` group may have a `Relational` and `NoSQL` kinds. @@ -473,7 +473,7 @@ Accessing the API `nosql` happens at the cluster scope. Most organizations isolate their users into namespaces. -A Crossplane _Claim_ is the custom API within a namespace. +A Crossplane _Claim_ is the custom API in a namespace. Creating a _Claim_ is just like accessing the custom API endpoint, but with the {{}}kind{{}} diff --git a/content/v1.13/getting-started/provider-azure-part-2.md b/content/v1.13/getting-started/provider-azure-part-2.md index d7f0bb8b..517676ac 100644 --- a/content/v1.13/getting-started/provider-azure-part-2.md +++ b/content/v1.13/getting-started/provider-azure-part-2.md @@ -137,7 +137,7 @@ is strongly recommended. This guide uses the group {{}}compute.example.com{{}}. -Since this is the first version of the API, this guide uses the version +Because this is the first version of the API, this guide uses the version {{}}v1alpha1{{}}. ```yaml {label="version",copy-lines="none"} @@ -146,7 +146,7 @@ apiVersion: compute.example.com/v1alpha1 ### Define a kind -The API group is a logical collection of related APIs. Within a group are +The API group is a logical collection of related APIs. In a group are individual kinds representing different resources. For example a `compute` group may have a `VirtualMachine` and `BareMetal` kinds. @@ -574,7 +574,7 @@ Accessing the API `VirtualMachine` happens at the cluster scope. Most organizations isolate their users into namespaces. -A Crossplane _Claim_ is the custom API within a namespace. +A Crossplane _Claim_ is the custom API in a namespace. Creating a _Claim_ is just like accessing the custom API endpoint, but with the {{}}kind{{}} diff --git a/content/v1.13/getting-started/provider-gcp-part-2.md b/content/v1.13/getting-started/provider-gcp-part-2.md index 8918cff9..bd714535 100644 --- a/content/v1.13/getting-started/provider-gcp-part-2.md +++ b/content/v1.13/getting-started/provider-gcp-part-2.md @@ -150,7 +150,7 @@ is strongly recommended. This guide uses the group {{}}database.example.com{{}}. -Since this is the first version of the API, this guide uses the version +Because this is the first version of the API, this guide uses the version {{}}v1alpha1{{}}. ```yaml {label="version",copy-lines="none"} @@ -159,7 +159,7 @@ apiVersion: database.example.com/v1alpha1 ### Define a kind -The API group is a logical collection of related APIs. Within a group are +The API group is a logical collection of related APIs. In a group are individual kinds representing different resources. For example a `queue` group may have a `PubSub` and `CloudTask` kinds. @@ -478,7 +478,7 @@ Accessing the API `pubsub` happens at the cluster scope. Most organizations isolate their users into namespaces. -A Crossplane _Claim_ is the custom API within a namespace. +A Crossplane _Claim_ is the custom API in a namespace. Creating a _Claim_ is just like accessing the custom API endpoint, but with the {{}}kind{{}} diff --git a/content/v1.13/software/install.md b/content/v1.13/software/install.md index 26d4d269..50498661 100644 --- a/content/v1.13/software/install.md +++ b/content/v1.13/software/install.md @@ -94,7 +94,7 @@ provider and configuration packages. * The _Composition controller_ installs and manages the Crossplane _Composite Resource Definitions_, _Compositions_ and _Claims_. -### Crossplane-rbac-manager deployment +### Crossplane RBAC manager deployment The `crossplane-rbac-manager` creates and manages Kubernetes _ClusterRoles_ for installed Crossplane _Provider_ and their _Custom Resource Definitions_. @@ -126,16 +126,16 @@ Apply customizations with the command line or with a Helm _values_ file. | `extraEnvVarsRBACManager` | Add custom environmental variables to the RBAC Manager pod deployment. Replaces any `.` in a variable name with `_`. For example, `SAMPLE.KEY=value1` becomes `SAMPLE_KEY=value1`. | `{}` | | `extraVolumeMountsCrossplane` | Add custom `volumeMounts` to the Crossplane pod. | `{}` | | `extraVolumesCrossplane` | Add custom `volumes` to the Crossplane pod. | `{}` | -| `hostNetwork` | Enable `hostNetwork` for the Crossplane deployment. Caution: enabling `hostNetwork`` grants the Crossplane Pod access to the host network namespace. | `false` | +| `hostNetwork` | Enable `hostNetwork` for the Crossplane deployment. Caution: enabling `hostNetwork` grants the Crossplane Pod access to the host network namespace. | `false` | | `image.pullPolicy` | The image pull policy used for Crossplane and RBAC Manager pods. | `"IfNotPresent"` | | `image.repository` | Repository for the Crossplane pod image. | `"crossplane/crossplane"` | -| `image.tag` | The Crossplane image tag. Defaults to the value of `appVersion` in Chart.yaml. | `""` | +| `image.tag` | The Crossplane image tag. Defaults to the value of `appVersion` in `Chart.yaml`. | `""` | | `imagePullSecrets` | The imagePullSecret names to add to the Crossplane ServiceAccount. | `{}` | | `leaderElection` | Enable [leader election](https://docs.crossplane.io/latest/concepts/pods/#leader-election) for the Crossplane pod. | `true` | | `metrics.enabled` | Enable Prometheus path, port and scrape annotations and expose port 8080 for both the Crossplane and RBAC Manager pods. | `false` | | `nodeSelector` | Add `nodeSelectors` to the Crossplane pod deployment. | `{}` | | `packageCache.configMap` | The name of a ConfigMap to use as the package cache. Disables the default package cache `emptyDir` Volume. | `""` | -| `packageCache.medium` | Set to `Memory` to hold the package cache in a RAM-backed file system. Useful for Crossplane development. | `""` | +| `packageCache.medium` | Set to `Memory` to hold the package cache in a RAM backed file system. Useful for Crossplane development. | `""` | | `packageCache.pvc` | The name of a PersistentVolumeClaim to use as the package cache. Disables the default package cache `emptyDir` Volume. | `""` | | `packageCache.sizeLimit` | The size limit for the package cache. If medium is `Memory` the `sizeLimit` can't exceed Node memory. | `"20Mi"` | | `podSecurityContextCrossplane` | Add a custom `securityContext` to the Crossplane pod. | `{}` | @@ -175,14 +175,14 @@ Apply customizations with the command line or with a Helm _values_ file. | `webhooks.enabled` | Enable webhooks for Crossplane and installed Provider packages. | `true` | | `xfn.args` | Add custom arguments to the Composite functions runner container. | `[]` | | `xfn.cache.configMap` | The name of a ConfigMap to use as the Composite function runner package cache. Disables the default Composite function runner package cache `emptyDir` Volume. | `""` | -| `xfn.cache.medium` | Set to `Memory` to hold the Composite function runner package cache in a RAM-backed file system. Useful for Crossplane development. | `""` | +| `xfn.cache.medium` | Set to `Memory` to hold the Composite function runner package cache in a RAM backed file system. Useful for Crossplane development. | `""` | | `xfn.cache.pvc` | The name of a PersistentVolumeClaim to use as the Composite function runner package cache. Disables the default Composite function runner package cache `emptyDir` Volume. | `""` | | `xfn.cache.sizeLimit` | The size limit for the Composite function runner package cache. If medium is `Memory` the `sizeLimit` can't exceed Node memory. | `"1Gi"` | | `xfn.enabled` | Enable the alpha Composition functions (`xfn`) sidecar container. Also requires Crossplane `args` value `--enable-composition-functions` set. | `false` | | `xfn.extraEnvVars` | Add custom environmental variables to the Composite function runner container. Replaces any `.` in a variable name with `_`. For example, `SAMPLE.KEY=value1` becomes `SAMPLE_KEY=value1`. | `{}` | | `xfn.image.pullPolicy` | Composite function runner container image pull policy. | `"IfNotPresent"` | | `xfn.image.repository` | Composite function runner container image. | `"crossplane/xfn"` | -| `xfn.image.tag` | Composite function runner container image tag. Defaults to the value of `appVersion` in Chart.yaml. | `""` | +| `xfn.image.tag` | Composite function runner container image tag. Defaults to the value of `appVersion` in `Chart.yaml`. | `""` | | `xfn.resources.limits.cpu` | CPU resource limits for the Composite function runner container. | `"2000m"` | | `xfn.resources.limits.memory` | Memory resource limits for the Composite function runner container. | `"2Gi"` | | `xfn.resources.requests.cpu` | CPU resource requests for the Composite function runner container. | `"1000m"` | diff --git a/utils/vale/.vale.ini b/utils/vale/.vale.ini index 091bf874..17f44465 100644 --- a/utils/vale/.vale.ini +++ b/utils/vale/.vale.ini @@ -22,10 +22,12 @@ gitlab.TabsLinks = NO gitlab.VersionText = NO gitlab.VersionTextSingleLine = NO gitlab.EOLWhitespace = NO +gitlab.Normal = NO # Covered by Alex gitlab.InclusionCultural = NO gitlab.InclusionGender = NO +gitlab.Simplicity = NO # Don't enforce oxford comma Google.OxfordComma = NO @@ -46,7 +48,7 @@ Microsoft.GeneralURL = NO # Ignore markdown image with alt: ![ # ignore v#.## # ignore ##px -TokenIgnores = (\(#.*\)),(\]\(),(http.*),({{<\s*\/?expand),(\!\[),(\d.*px) +TokenIgnores = (\(#.*\)),(\]\(),(http.*),({{<\s*\/?expand),(\!\[),(\d.*px),(\d\.\d\.\d) # ignore whole tags: # Ignore hugo tags diff --git a/utils/vale/styles/Crossplane/allowed-jargon.txt b/utils/vale/styles/Crossplane/allowed-jargon.txt index ab2205dc..eb384e7c 100644 --- a/utils/vale/styles/Crossplane/allowed-jargon.txt +++ b/utils/vale/styles/Crossplane/allowed-jargon.txt @@ -79,3 +79,7 @@ kube-apiserver cluster-wide autoscaler DatabaseInstance +ConfigMap +imagePullSecret +PersistentVolumeClaim +PriorityClass \ No newline at end of file diff --git a/utils/vale/styles/Crossplane/brands.txt b/utils/vale/styles/Crossplane/brands.txt index 30ece7c2..82e60aee 100644 --- a/utils/vale/styles/Crossplane/brands.txt +++ b/utils/vale/styles/Crossplane/brands.txt @@ -20,6 +20,7 @@ PurgeCSS Upbound Upbound's Upjet +UXP Velero VSCode Webpack diff --git a/utils/vale/styles/Crossplane/crossplane-words.txt b/utils/vale/styles/Crossplane/crossplane-words.txt index 165cf462..88a377bd 100644 --- a/utils/vale/styles/Crossplane/crossplane-words.txt +++ b/utils/vale/styles/Crossplane/crossplane-words.txt @@ -9,17 +9,25 @@ CombineToEnvironment CompositeResourceDefinition CompositeResourceDefinitions composition.yaml +composition.yaml +CompositionRevisions ControllerConfig ControllerConfigs CRDs Crossplane crossplane-admin crossplane-browse +crossplane-browse +crossplane-edit crossplane-edit crossplane-view +crossplane-view +crossplane.yaml crossplane.yaml Crossplane's definition.yaml +definition.yaml +deletionPolicy EnvironmentConfig EnvironmentConfigs external-name @@ -29,7 +37,12 @@ FromCompositeFieldPath FromEnvironmentFieldPath fromFieldPath HealthyPackageRevision +HealthyPackageRevision InactivePackageRevision +InactivePackageRevision +initProvider +LateInitialize +managementPolicies PatchSet PatchSets ProviderConfig @@ -50,17 +63,4 @@ XRC XRD XRD's XRDs -XRs -ActivePackageRevision -crossplane-edit -HealthyPackageRevision -crossplane-view -crossplane-browse -InactivePackageRevision -crossplane.yaml -definition.yaml -composition.yaml -managementPolicies -deletionPolicy -initProvider -LateInitialize +XRs \ No newline at end of file diff --git a/utils/vale/styles/Crossplane/spelling-exceptions.txt b/utils/vale/styles/Crossplane/spelling-exceptions.txt index 80546132..23349d14 100644 --- a/utils/vale/styles/Crossplane/spelling-exceptions.txt +++ b/utils/vale/styles/Crossplane/spelling-exceptions.txt @@ -1,6 +1,7 @@ /tab /tabs call-outs +ClusterRoles` comma-seperated conformant cross-reference @@ -25,12 +26,14 @@ per-resource poll-interval pre-existing pre-provisioned +pre-release race-conditions read-only resource-specific right-hand run-time step-by-step +third-party top-level untrusted UpperCamelCase diff --git a/utils/vale/styles/gitlab/Admin.yml b/utils/vale/styles/gitlab/Admin.yml deleted file mode 100644 index f6b0a988..00000000 --- a/utils/vale/styles/gitlab/Admin.yml +++ /dev/null @@ -1,13 +0,0 @@ ---- -# Warning: gitlab.Admin -# -# Checks for "admin" and recommends using the full word instead. "Admin Area" is OK. -# -# For a list of all options, see https://errata-ai.gitbook.io/vale/getting-started/styles -extends: substitution -message: 'Verify this use of the word "admin". Can it be updated to "administration", "administrator", "administer", or "Admin Area"?' -link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html -level: suggestion -ignorecase: false -swap: - '[Aa]dmin ?\w*': '(?:Admin( Area| Mode)?|[Aa]dminist(ration|rator|rators|er|rative|ering|ered))' diff --git a/utils/vale/styles/gitlab/AlertBoxStyle.yml b/utils/vale/styles/gitlab/AlertBoxStyle.yml index 5912c470..0a4514fa 100644 --- a/utils/vale/styles/gitlab/AlertBoxStyle.yml +++ b/utils/vale/styles/gitlab/AlertBoxStyle.yml @@ -3,13 +3,13 @@ # # Makes sure alert boxes are used with block quotes. Checks for 3 formatting issues: # -# - Alert boxes inside a block quote (">") +# - Alert boxes inside a block quote ('>') # - Alert boxes with the note text on the same line -# - Alert boxes using words other than "NOTE" or "WARNING" +# - Alert boxes using words other than 'NOTE' or 'WARNING' # -# For a list of all options, see https://errata-ai.gitbook.io/vale/getting-started/styles +# For a list of all options, see https://vale.sh/docs/topics/styles/ extends: existence -message: 'Alert box "%s" must use the formatting in the style guide.' +message: "Update the format of the '%s' alert box. View the style guide for details." link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#alert-boxes level: error nonword: true diff --git a/utils/vale/styles/gitlab/BadPlurals.yml b/utils/vale/styles/gitlab/BadPlurals.yml index efc55ac3..9cdb8661 100644 --- a/utils/vale/styles/gitlab/BadPlurals.yml +++ b/utils/vale/styles/gitlab/BadPlurals.yml @@ -1,14 +1,13 @@ --- -# Suggestion: gitlab.BadPlurals +# Warning: gitlab.BadPlurals # -# Don't write plural words with the '(s)' construction. "HTTP(S)" is acceptable. +# Don't write plural words with the '(s)' construction. 'HTTP(S)' is acceptable. # -# For a list of all options, see https://docs.errata.ai/vale/styles +# For a list of all options, see https://vale.sh/docs/topics/styles/ extends: existence -message: 'Rewrite "%s" to be plural, without parentheses.' -link: https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html +message: "Rewrite '%s' to be plural without parentheses." +link: https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html#s level: warning -scope: raw ignorecase: true raw: - '\b\w+\(s\)(?) should be corrected. +# +# If a word is flagged as a spelling mistake incorrectly, such as a product name, +# you can submit an MR to update `spelling-exceptions.txt` with the missing word. +# Commands, like `git clone` must use backticks, and must not be added to the +# exceptions. +# +# For a list of all options, see https://vale.sh/docs/topics/styles/ +extends: spelling +message: "Check the spelling of '%s'. If the spelling is correct, ask a Technical Writer to add this word to the spelling exception list." +level: warning +ignore: + - gitlab/spelling-exceptions.txt diff --git a/utils/vale/styles/gitlab/SubstitutionSuggestions.yml b/utils/vale/styles/gitlab/SubstitutionSuggestions.yml deleted file mode 100644 index 4b77def0..00000000 --- a/utils/vale/styles/gitlab/SubstitutionSuggestions.yml +++ /dev/null @@ -1,28 +0,0 @@ ---- -# Suggestion: gitlab.SubstitutionSuggestions -# -# Suggests better options for frequently misused terms that are often - but not always - incorrect. -# SubstitutionWarning.yml and Substitutions.yml also exist. -# -# For a list of all options, see https://errata-ai.github.io/vale/styles/ -extends: substitution -message: 'Consider %s instead of "%s".' -link: https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html -level: suggestion -ignorecase: true -swap: - active user: '"billable user"' - active users: '"billable users"' - docs: '"documentation"' - e-mail: '"email"' - GLFM: '"GitLab Flavored Markdown"' - it is recommended: '"we recommend"' - navigate: go - OAuth2: '"OAuth 2.0"' - once that: '"after that"' - once the: '"after the"' - once you: '"after you"' - since: '"because" or "after"' - sub-group: '"subgroup"' - sub-groups: '"subgroups"' - within: '"in"' diff --git a/utils/vale/styles/gitlab/SubstitutionWarning.yml b/utils/vale/styles/gitlab/SubstitutionWarning.yml index 52725237..dbe4c193 100644 --- a/utils/vale/styles/gitlab/SubstitutionWarning.yml +++ b/utils/vale/styles/gitlab/SubstitutionWarning.yml @@ -1,28 +1,63 @@ --- # Warning: gitlab.SubstitutionWarning # -# Checks for misused terms or common shorthand that should never be used at GitLab, but can't be flagged as errors. -# Substitutions.yml and SubstitionSuggestions.yml also exist. +# Checks for misused terms or common shorthand that should not be used at GitLab, but can't be flagged as errors. +# Substitutions.yml also exists. # -# For a list of all options, see https://errata-ai.gitbook.io/vale/getting-started/styles +# For a list of all options, see https://vale.sh/docs/topics/styles/ extends: substitution -message: 'If possible, use "%s" instead of "%s".' -link: https://about.gitlab.com/handbook/communication/#top-misused-terms +message: "Use '%s' instead of '%s' when possible." +link: https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html level: warning ignorecase: true swap: - air(?:-| )?gapped: offline environment - bullet: list item - click: select - code base: codebase - config: configuration - deselect: clear - deselected: cleared - distro: distribution - file name: filename - filesystem: file system - GFM: GLFM - info: information - repo: repository - timezone: time zone - utilize: use + active user: "billable user" + active users: "billable users" + air(?:-| )?gapped: "offline environment" + bullet: "list item" + click: "select" + code base: "codebase" + config: "configuration" + confirmation box: "confirmation dialog" + confirmation dialog box: "confirmation dialog" + deselect: "clear" + deselected: "cleared" + dialog box: "dialog" + distro: "distribution" + e-mail: "email" + emojis: "emoji" + ex: "for example" + file name: "filename" + filesystem: "file system" + info: "information" + installation from source: self-compiled installation + installations from source: self-compiled installations + it is recommended: "you should" + logged in user: "authenticated user" + logged-in user: "authenticated user" + modal dialog: "dialog" + modal window: "dialog" + modal: "dialog" + n/a: "not applicable" + navigate to: "go to" + OAuth2: "OAuth 2.0" + omnibus gitlab: "Linux package" + 'omnibus(?!\))': "Linux package" + once that: "after that" + once the: "after the" + once you: "after you" + pop-up window: "dialog" + pop-up: "dialog" + popup: "dialog" + repo: "repository" + signed in user: "authenticated user" + signed-in user: "authenticated user" + since: "because' or 'after" + source (?:install|installation): self-compiled installation + source (?:installs|installations): self-compiled installations + sub-group: "subgroup" + sub-groups: "subgroups" + timezone: "time zone" + utilize: "use" + we recommend: "you should" + within: "in" diff --git a/utils/vale/styles/gitlab/Substitutions.yml b/utils/vale/styles/gitlab/Substitutions.yml index 5e25ad6c..10369669 100644 --- a/utils/vale/styles/gitlab/Substitutions.yml +++ b/utils/vale/styles/gitlab/Substitutions.yml @@ -2,62 +2,63 @@ # Error: gitlab.Substitutions # # Checks for misused terms that should never be used at GitLab. -# SubstitutionWarning.yml and SubstitionSuggestions.yml also exist. +# SubstitutionWarning.yml also exists. # -# For a list of all options, see https://docs.errata.ai/vale/styles +# For a list of all options, see https://vale.sh/docs/topics/styles/ extends: substitution -message: 'Use "%s" instead of "%s".' +message: "Use '%s' instead of '%s'." link: https://about.gitlab.com/handbook/communication/#top-misused-terms level: error ignorecase: true swap: + codequality: code quality + Customer [Pp]ortal: Customers Portal + disallow: prevent + frontmatter: front matter + GitLabber: GitLab team member + GitLabbers: GitLab team members + GitLab-shell: GitLab Shell + gitlab omnibus: Linux package + param: parameter + params: parameters + pg: PostgreSQL 'postgres$': PostgreSQL + golang: Go + raketask: Rake task + raketasks: Rake tasks + rspec: RSpec + self hosted: self-managed + self-hosted: self-managed + styleguide: style guide + to login: to log in + can login: can log in + to log-in: to log in + can log-in: can log in + to signin: to sign in + can signin: can sign in + to sign-in: to sign in + can sign-in: can sign in + x509: X.509 + yml: YAML admin user: administrator admin users: administrators administrator permission: administrator access administrator permissions: administrator access administrator role: administrator access - can log-in: can log in - can login: can log in - can sign-in: can sign in - can signin: can sign in - codequality: code quality - Customer [Pp]ortal: Customers Portal + the administrator access level: administrator access developer access: the Developer role developer permission: the Developer role developer permissions: the Developer role - disallow: prevent - frontmatter: front matter - gitlab omnibus: Omnibus GitLab - GitLab-shell: GitLab Shell - GitLabber: GitLab team member - GitLabbers: GitLab team members guest access: the Guest role guest permission: the Guest role guest permissions: the Guest role - json: JSON - kubernetes: Kubernetes - k8s: Kubernetes maintainer access: the Maintainer role maintainer permission: the Maintainer role maintainer permissions: the Maintainer role owner access: the Owner role owner permission: the Owner role owner permissions: the Owner role - param: parameter - params: parameters - pg: PostgreSQL - raketask: Rake task - raketasks: Rake tasks reporter access: the Reporter role reporter permission: the Reporter role reporter permissions: the Reporter role - rspec: RSpec - styleguide: style guide - the administrator access level: administrator access - to log-in: to log in - to login: to log in - to sign-in: to sign in - to signin: to sign in - x509: X.509 - yaml: YAML + at least the Owner role: the Owner role diff --git a/utils/vale/styles/gitlab/TabsLinks.yml b/utils/vale/styles/gitlab/TabsLinks.yml new file mode 100644 index 00000000..97f75046 --- /dev/null +++ b/utils/vale/styles/gitlab/TabsLinks.yml @@ -0,0 +1,13 @@ +--- +# Error: gitlab.TabsLinks +# +# Checks for the presence of links to individual GitLab UI tabs. +# +# For a list of all options, see https://vale.sh/docs/topics/styles/ +extends: existence +message: "Do not include tabs query parameters in links." +link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#tabs +level: error +scope: raw +raw: + - '\[[^\]]+\]\(.*?\.md\?tab=.*?\)' diff --git a/utils/vale/styles/gitlab/ToDo.yml b/utils/vale/styles/gitlab/ToDo.yml index a3725cb7..079f13ba 100644 --- a/utils/vale/styles/gitlab/ToDo.yml +++ b/utils/vale/styles/gitlab/ToDo.yml @@ -3,10 +3,10 @@ # # You should not use "To Do", unless it refers to the UI element. # -# For a list of all options, see https://errata-ai.gitbook.io/vale/getting-started/styles +# For a list of all options, see https://vale.sh/docs/topics/styles/ extends: substitution -message: 'Use "to-do item" in most cases, or "Add a to do" if referring to the UI button.' -link: https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#feature-names +message: "Use 'to-do item' in most cases, or 'Add a to do' if referring to the UI button." +link: https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html#to-do-item level: warning ignorecase: false swap: diff --git a/utils/vale/styles/gitlab/UnclearAntecedent.yml b/utils/vale/styles/gitlab/UnclearAntecedent.yml index 5f238598..e5d43b6a 100644 --- a/utils/vale/styles/gitlab/UnclearAntecedent.yml +++ b/utils/vale/styles/gitlab/UnclearAntecedent.yml @@ -3,9 +3,9 @@ # # Checks for words that need a noun for clarity. # -# For a list of all options, see https://docs.errata.ai/vale/styles +# For a list of all options, see https://vale.sh/docs/topics/styles/ extends: existence -message: "'%s' is not precise. Try rewriting with a specific subject and verb." +message: "Instead of '%s', try starting this sentence with a specific subject and verb." link: https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html#this-these-that-those level: warning ignorecase: false diff --git a/utils/vale/styles/gitlab/Units.yml b/utils/vale/styles/gitlab/Units.yml new file mode 100644 index 00000000..e6263ad6 --- /dev/null +++ b/utils/vale/styles/gitlab/Units.yml @@ -0,0 +1,15 @@ +--- +# Warning: gitlab.Units +# +# Recommends a space between a number and a unit of measure. +# +# For a list of all options, see https://vale.sh/docs/topics/styles/ +extends: existence +message: "Add a space between the number and the unit in '%s'." +link: 'https://docs.gitlab.com/ee/development/documentation/styleguide/' +nonword: true +level: warning +ignorecase: true +tokens: + - \d+(?:B|kB|KiB|MB|MiB|GB|GiB|TB|TiB) + - \d+(?:ns|ms|μs|s|min|h|d) diff --git a/utils/vale/styles/gitlab/Uppercase.yml b/utils/vale/styles/gitlab/Uppercase.yml index 0f11a852..4730184b 100644 --- a/utils/vale/styles/gitlab/Uppercase.yml +++ b/utils/vale/styles/gitlab/Uppercase.yml @@ -1,13 +1,13 @@ --- -# Warning: gitlab.Uppercase +# Suggestion: gitlab.Uppercase # # Checks for use of all uppercase letters with unknown reason. # -# For a list of all options, see https://docs.errata.ai/vale/styles. +# For a list of all options, see https://vale.sh/docs/topics/styles/ extends: conditional -message: "'%s' is uppercase. Use lowercase or `backticks` if possible. Otherwise add this word to the rule's exception list." -link: https://about.gitlab.com/handbook/marketing/growth-marketing/content/editorial-team/#acronyms -level: warning +message: "Instead of uppercase for '%s', use lowercase or backticks (`) if possible. Otherwise, ask a Technical Writer to add this word or acronym to the rule's exception list." +link: https://docs.gitlab.com/ee/development/documentation/testing.html#vale-uppercase-acronym-test +level: suggestion ignorecase: false # Ensures that the existence of 'first' implies the existence of 'second'. first: '\b([A-Z]{3,5})\b' @@ -16,48 +16,62 @@ second: '(?:\b[A-Z][a-z]+ )+\(([A-Z]{3,5})\)' exceptions: - ACL - AJAX - - AKS + - AMI - ANSI + - APAC - API - APM - ARM - ARN - ASCII + - ASG + - AST - AWS - BMP - BSD - CAS - CDN + - CGI - CIDR - CLI - CNA - - CNAME - CNCF - CORE + - CORS - CPU - - CRD + - CRAN - CRIME + - CRM + - CRUD - CSRF - CSS - CSV - - CUE + - CTE - CVE - CVS + - CVSS + - CWE - DAG - DAST + - DDL - DHCP + - DML - DNS + - DSN - DOM + - DORA - DSA - DSL - DVCS + - DVD + - EBS - ECDSA - ECS - EFS - EKS - ELB + - ENA - EOL - - ESS - EWM - EXIF - FAQ @@ -76,10 +90,13 @@ exceptions: - GID - GIF - GKE + - GLEX - GLFM - GNU - GPG - GPL + - GPS + - GPT - GPU - GUI - HAML @@ -87,6 +104,7 @@ exceptions: - HEAD - HIPAA - HLL + - HSTS - HTML - HTTP - HTTPS @@ -96,27 +114,32 @@ exceptions: - ICO - IDE - IID + - IIS - IMAP - IOPS - IRC - - IRSA - ISO - JPEG - JPG - JSON - JVM - JWT + - KICS - LAN - LDAP - LDAPS - LESS - LFS - LRU + - LSIF - LTM - LTS + - LVM - MIME - MIT + - MITRE - MVC + - NAS - NAT - NDA - NFS @@ -126,6 +149,8 @@ exceptions: - NTP - OCI - OIDC + - OKD + - OKR - ONLY - OSS - OTP @@ -138,12 +163,13 @@ exceptions: - PGP - PHP - PID - - PIN - PKCS - PNG - POSIX - POST + - PROXY - PUT + - QPS - RAID - RAM - RBAC @@ -165,7 +191,10 @@ exceptions: - SAN - SAST - SATA + - SBOM + - SBT - SCIM + - SCM - SCP - SCSS - SDK @@ -173,13 +202,17 @@ exceptions: - SEO - SFTP - SHA + - SKI - SLA - SLI + - SLO - SMS - SMTP + - SOAP - SOC - SOX - SPDX + - SPDY - SPF - SQL - SRE @@ -189,6 +222,7 @@ exceptions: - SSL - SSO - STI + - SUSE - SVG - SVN - TCP @@ -199,7 +233,9 @@ exceptions: - TODO - TOML - TOTP + - TPS - TTL + - UBI - UDP - UID - UID @@ -210,18 +246,14 @@ exceptions: - UTC - UTF - UUID - - UXP - VCS - VPC - VPN - WEBP - WIP - WSL - - XEKS - XML - - XPKG - - XRD - XSS - YAML - ZAP - - ZIP \ No newline at end of file + - ZIP diff --git a/utils/vale/styles/gitlab/VersionText.yml b/utils/vale/styles/gitlab/VersionText.yml index 68753de6..4fd80bc3 100644 --- a/utils/vale/styles/gitlab/VersionText.yml +++ b/utils/vale/styles/gitlab/VersionText.yml @@ -1,23 +1,19 @@ --- # Error: gitlab.VersionText # -# Checks that version text is formatted correctly. +# Checks that multi-line version text is formatted correctly. # -# Specifically looks for either of the following that is immediately followed on the next line -# by content, which will break rendering: +# Specifically, looks for multi-line version text that doesn't use `-` to make it a list. +# For example: # -# - `> Introduced` (version text without a link) -# - `> [Introduced` (version text with a link) +# - `> Introduced in GitLab 14.0. +# - `> Removed in GitLab 15.0. # -# Because it excludes the prefix `> - `, it doesn't look for multi-line version text, for which -# content immediately on the next line is ok. However, this will often highlight where multi-line -# version text is attempted without `-` characters. -# -# For a list of all options, see https://errata-ai.gitbook.io/vale/getting-started/styles +# For a list of all options, see https://vale.sh/docs/topics/styles/ extends: existence -message: 'This introduced-in line is not formatted correctly.' +message: "Start each entry with `> -`. Keep long entries on one line." link: https://docs.gitlab.com/ee/development/documentation/versions.html level: error scope: raw raw: - - '> \[?Introduced.+\n[^\n]' + - '\n#.*\n\n> [^-].+\n[^\n`]' diff --git a/utils/vale/styles/gitlab/VersionTextSingleLine.yml b/utils/vale/styles/gitlab/VersionTextSingleLine.yml new file mode 100644 index 00000000..552ccb99 --- /dev/null +++ b/utils/vale/styles/gitlab/VersionTextSingleLine.yml @@ -0,0 +1,13 @@ +--- +# Error: gitlab.VersionTextSingleLine +# +# Verifies that single-item version notes don't have a hyphen. +# +# For a list of all options, see https://vale.sh/docs/topics/styles/ +extends: existence +message: "Do not use a hyphen '-' in version text if there is only a single item." +link: https://docs.gitlab.com/ee/development/documentation/versions.html#add-a-version-history-item +level: error +scope: raw +raw: + - '(\r|\n|\r\n){2}(> - .*)(\r|\n|\r\n){2}' diff --git a/utils/vale/styles/gitlab/Wordy.yml b/utils/vale/styles/gitlab/Wordy.yml index 8eee0416..808bedad 100644 --- a/utils/vale/styles/gitlab/Wordy.yml +++ b/utils/vale/styles/gitlab/Wordy.yml @@ -3,15 +3,16 @@ # # Suggests shorter versions of wordy phrases. # -# For a list of all options, see https://docs.errata.ai/vale/styles +# For a list of all options, see https://vale.sh/docs/topics/styles/ extends: substitution -message: '%s "%s".' +message: "%s" link: https://docs.gitlab.com/ee/development/documentation/styleguide/word_list.html -level: warning +level: suggestion ignorecase: true swap: - in order to: "Be concise: use 'to' rather than" - needs? to: "Rewrite the sentence, or use 'must', instead of" - note that: "Be concise: rewrite the sentence to not use" - please: "Remove this word from the sentence: " - respectively: "Rewrite the sentence to be more precise, instead of using " + as well as: "Use 'and' instead of 'as well as'." + note that: "Remove the phrase 'note that'." + please: "Use 'please' only if we've inconvenienced the user." + respectively: "Remove 'respectively' and list each option instead." + and so on: "Remove 'and so on'. Try to use 'like' and provide examples instead." + in order to: "Remove 'in order' and leave 'to'." diff --git a/utils/vale/styles/gitlab/Zip.yml b/utils/vale/styles/gitlab/Zip.yml new file mode 100644 index 00000000..69ff980b --- /dev/null +++ b/utils/vale/styles/gitlab/Zip.yml @@ -0,0 +1,15 @@ +--- +# Warning: gitlab.Zip +# +# Recommends all instances of something.zip be wrapped in backticks +# due to the .zip top-level domain +# +# For a list of all options, see https://vale.sh/docs/topics/styles/ +extends: existence +message: "Wrap '%s' in backticks to prevent unintentional links to .zip domain names." +link: 'https://docs.gitlab.com/ee/development/documentation/styleguide/index.md#backticks-in-markdown' +nonword: true +level: error +ignorecase: true +tokens: + - '\b\w*\.zip' diff --git a/utils/vale/styles/gitlab/spelling-exceptions.txt b/utils/vale/styles/gitlab/spelling-exceptions.txt new file mode 100644 index 00000000..1e66d12a --- /dev/null +++ b/utils/vale/styles/gitlab/spelling-exceptions.txt @@ -0,0 +1,1210 @@ +accessor +accessors +ACLs +Adafruit +Airbnb +Airtable +Akismet +Alertmanager +Algolia +Alibaba +aliuid +Aliyun +allowlist +allowlisted +allowlisting +allowlists +AlmaLinux +AMIs +anonymization +anonymized +Ansible +Anthos +Anycast +apdex +API +APIs +Apparmor +Appetize +approvers +Appsec +architected +architecting +archiver +Arel +arity +Arkose +armhf +ARNs +Artifactory +Asana +Asciidoctor +asdf +Assembla +Astro +async +Atlassian +auditability +auditable +Auth0 +authenticator +Authy +autocomplete +autocompleted +autocompletes +autocompleting +autogenerated +autoloaded +autoloader +autoloading +automatable +autoscale +autoscaled +autoscaler +autoscalers +autoscales +autoscaling +autovacuum +awardable +awardables +Axios +Ayoa +AZs +Azure +B-tree +backfilling +backfills +backport +backported +backporting +backports +backtrace +backtraced +backtraces +backtracing +badging +balancer +balancer's +Bamboo +Bazel +bcrypt +Beamer +Bhyve +Bitbucket +Bitnami +Bittrex +blockquote +blockquoted +blockquotes +blockquoting +boolean +booleans +Bootsnap +bot +bot's +Bottlerocket +browsable +bugfix +bugfixed +bugfixes +bugfixing +Bugzilla +Buildkite +buildpack +buildpacks +bundler +bundlers +burndown +burnup +burstable +CA +cacheable +Caddy +callout +callouts +callstack +callstacks +camelCase +camelCased +Camo +canonicalization +canonicalized +captcha +CAPTCHAs +Capybara +Casdoor +CDNs +CE +CentOS +Ceph +Certbot +cgo +cgroup +cgroups +chai +changeset +changesets +ChaosKube +chatbot +chatbots +ChatOps +checksummable +checksummed +checksumming +Chemlab +chipset +chipsets +CIDRs +Citrix +Citus +Civo +Cleartext +ClickHouse +CLIs +Clojars +clonable +Cloudwatch +clusterized +CMake +CMK +CMKs +CNAs +CNs +Cobertura +Codeception +Codecov +codenames +Codepen +CodeSandbox +Cognito +Coinbase +colocate +colocated +colocating +commit's +CommonMark +compilable +composable +composables +Conda +config +Configs +Consul +Contentful +Corosync +corpuses +Cosign +Coursier +CPU +CPUs +CRAN +CRI-O +cron +crond +cronjob +cronjobs +crons +crontab +crontabs +crosslinked +crosslinking +crosslinks +Crossplane +Crowdin +crypto +CSSComb +CSV +CSVs +CTAs +CTEs +CUnit +customappsso +CVEs +CWEs +cybersecurity +CycloneDX +Dangerfile +DAST +Database Lab Engine +Database Lab +Databricks +Datadog +datasource +datasources +datastore +datastores +datestamp +datetime +DBeaver +Debian +debloating +decodable +Decompressor +decryptable +dedupe +deduplicate +deduplicated +deduplicates +deduplicating +deduplication +delegators +deliverables +denormalization +denormalize +denormalized +denormalizes +denormalizing +dentry +denylist +denylisted +denylisting +denylists +Depesz +deployer +deployers +deprovision +deprovisioned +deprovisioning +deprovisions +dequarantine +dequarantined +dequarantining +deserialization +deserialize +deserializers +deserializes +desugar +desugars +desynchronized +Dev +devfile +devfiles +DevOps +Dhall +dialogs +disambiguates +discoverability +dismissable +Disqus +Distroless +Divio +DLE +DNs +Docker +Dockerfile +Dockerfiles +Dockerize +Dockerized +Dockerizing +Docusaurus +dogfood +dogfooding +dogfoods +DOMPurify +dotenv +doublestar +downvoted +downvotes +Dpl +dput +Dreamweaver +DRIs +DSLs +DSN +Dynatrace +Ecto +eden +EGit +ElastiCache +Elasticsearch +Eleventy +enablement +Encrypt +enqueued +enqueues +enricher +enrichers +enum +enums +Enviroments +ESLint +ESXi +ETag +ETags +Etsy +Excon +exfiltrate +exfiltration +ExifTool +expirable +Facebook +failover +failovers +failsafe +Falco +falsy +Fanout +Fargate +fastlane +Fastly +Fastzip +favicon +favorited +ffaker +Figma +Filebeat +Filestore +Finicity +Finnhub +Fio +firewalled +firewalling +fixup +flamegraph +flamegraphs +Flawfinder +Flickr +Fluentd +Flutterwave +Flycheck +focusable +Forgerock +formatters +Fortinet +FQDNs +FreshBooks +frontend +Fugit +Fulcio +fuzzer +fuzzing +Gantt +Gbps +Gemfile +Gemnasium +Gemojione +Getter +Getters +gettext +GIDs +gists +Git +Gitaly +Gitea +GitHub +GitLab +gitlabsos +Gitleaks +Gitpod +Gitter +GLab +globals +globbing +globstar +globstars +Gmail +Godep +Golang +Gollum +Google +goroutine +goroutines +Gosec +GPUs +Gradle +Grafana +Grafonnet +gravatar +Grype +GUIs +Gzip +Hackathon +Haml +HAProxy +hardcode +hardcoded +hardcodes +HashiCorp +Haswell +heatmap +heatmaps +Helm +Helmfile +Heroku +Herokuish +heuristical +hexdigest +Hexo +HipChat +hostname +hostnames +hotfix +hotfixed +hotfixes +hotfixing +hotspots +HTMLHint +http +https +hyperparameter +hyperparameters +iCalendar +iCloud +idempotence +idmapper +Iglu +IIFEs +Immer +inclusivity +inflector +inflectors +Ingress +initializer +initializers +injective +innersource +innersourcing +inodes +interdependencies +interdependency +interruptible +inviter +IPs +IPython +irker +issuables +Istio +Jaeger +jasmine-jquery +Javafuzz +JavaScript +Jenkins +Jenkinsfile +Jira +Jitsu +jq +jQuery +JRuby +JSDoc +jsdom +Jsonnet +JUnit +JupyterHub +JWT +JWTs +Kaminari +kanban +kanbans +kaniko +Karma +KCachegrind +Kerberos +Keycloak +keyset +keyspace +keytab +keytabs +Kibana +Kinesis +Klar +Knative +KPIs +Kramdown +Kroki +kubeconfig +Kubecost +kubectl +Kubernetes +Kubesec +Kucoin +Kustomize +Kustomization +kwargs +Laravel +LaunchDarkly +ldapsearch +Lefthook +Leiningen +libFuzzer +Libgcrypt +Libravatar +liveness +lockfile +lockfiles +Lodash +Lograge +logrotate +Logrus +Logstash +lookahead +lookaheads +lookbehind +lookbehinds +Lookbook +lookups +loopback +Lua +Lucene +macOS +Mailchimp +Maildir +Mailgun +Mailroom +Makefile +Makefiles +malloc +Markdown +markdownlint +Marketo +matcher +matchers +Matomo +Mattermost +mbox +memoization +memoize +memoized +memoizes +memoizing +Memorystore +mergeability +mergeable +metaprogramming +metric's +microformat +Microsoft +middleware +middlewares +migratable +migratus +minikube +MinIO +misconfiguration +misconfigurations +misconfigure +misconfigured +misconfigures +misconfiguring +mitigations +mitmproxy +mixin +mixins +MLflow +Mmap +mockup +mockups +ModSecurity +Monokai +monorepo +monorepos +monospace +MRs +MSBuild +multiline +mutex +nameserver +nameservers +namespace +namespace's +namespaced +namespaces +namespacing +namespacings +Nanoc +NAT +navigations +negatable +Netlify +NGINX +ngrok +njsscan +Nokogiri +nosniff +noteable +noteables +npm +NuGet +nullability +nullable +Nurtch +NVMe +nyc +OAuth +OCP +Octokit +offboarded +offboarding +offboards +OIDs +OKRs +OKRs +Okta +OLM +OmniAuth +onboarding +OpenID +OpenShift +Opsgenie +Opstrace +ORMs +OS +OSs +OTel +outdent +Overcommit +Packagist +packfile +packfiles +Packwerk +paginator +parallelization +parallelizations +parsable +PascalCase +PascalCased +passthrough +passthroughs +passwordless +Patroni +PDFs +performant +PgBouncer +pgFormatter +pgLoader +pgMustard +Phabricator +phaser +phasers +phpenv +PHPUnit +PIDs +pipenv +Pipfile +Pipfiles +Piwik +plaintext +podman +Poedit +polyfill +polyfills +pooler +postfixed +Postgres +postgres.ai +PostgreSQL +Praefect's +prebuild +prebuilds +precompile +precompiled +preconfigure +preconfigured +preconfigures +prefetch +prefetching +prefill +prefilled +prefilling +prefills +preload +preloaded +preloading +preloads +prepend +prepended +prepending +prepends +prepopulate +prepopulated +presentationals +Prettifier +Pritaly +Priyanka +profiler +Prometheus +ProseMirror +protobuf +protobufs +proxied +proxies +proxyable +proxying +pseudocode +pseudonymization +pseudonymized +pseudonymizer +Pulumi +Puma +Pumble +PyPI +pytest +Python +Qualys +queryable +Quicktime +Rackspace +railties +Raspbian +rbenv +rbspy +rbtrace +Rclone +Rdoc +reachability +Realplayer +reauthenticate +reauthenticated +reauthenticates +reauthenticating +rebalancing +rebar +rebase +rebased +rebases +rebasing +rebinding +reCAPTCHA +recoverability +Redcarpet +redirection +redirections +Redis +Redmine +refactorings +referer +referers +reflog +reflogs +refname +refspec +refspecs +regexes +Rego +reimplementation +reimplemented +reindex +reindexed +reindexes +reindexing +reinitialize +reinitializing +Rekor +relicensing +remediations +renderers +renderless +replicables +repmgr +repmgrd +reposts +repurposing +requestee +requesters +requeue +requeued +requeues +requeuing +resolver +resolver's +Restlet +resync +resynced +resyncing +resyncs +retarget +retargeted +retargeting +retargets +reusability +reverified +reverifies +reverify +reviewee +RIs +roadmap +roadmaps +rock +rollout +rollouts +routable +RPCs +RSpec +rsync +rsynced +rsyncing +rsyncs +Rubinius +Rubix +RuboCop +Rubular +RubyGems +Rugged +ruleset +rulesets +runbook +runbooks +runit +runtime +runtimes +Salesforce +sandboxing +sanitization +SBOMs +sbt +SBT +scalar's +scalers +scatterplot +scatterplots +schedulable +Schemastore +scriptable +scrollable +SDKs +segmentations +SELinux +Semgrep +Sendbird +Sendinblue +Sendmail +Sentry +serializer +serializers +serializing +serverless +setuptools +severities +SFCs +sharded +sharding +SHAs +shfmt +Shimo +Shippo +Shopify +Sidekiq +Sigstore +Silverlight +Sisense +Sitespeed +skippable +skopeo +Slack +Slackbot +SLAs +SLIs +Slony +SLOs +smartcard +smartcards +snake_case +snake_cased +snapshotting +Snowplow +Snyk +Sobelow +Solargraph +Solarized +Sourcegraph +Spamcheck +spammable +sparkline +sparklines +Speedscope +spidering +Splunk +SpotBugs +Squarespace +SREs +SSDs +SSGs +Stackdriver +Stackprof +starrer +starrers +storable +storages +strace +strikethrough +strikethroughs +stunnel +stylelint +subchart +subcharts +subcommand +subcommands +subcomponent +subfolder +subfolders +subgraph +subgraphs +subgroup +subgroups +subkey +subkeys +sublicense +sublicensed +sublicenses +sublicensing +submodule +submodule's +subnet +subnets +subnetting +subpath +subproject +subprojects +subqueried +subqueries +subquery +subquerying +substring +substrings +subtask +subtasks +subtest +subtests +subtransaction +subtransactions +subtree +subtrees +sudo +sunsetting +supercookie +supercookies +supergroup +superset +supersets +supertype +supertypes +SVGs +swappiness +swimlane +swimlanes +syncable +Sysbench +syscall +syscalls +syslog +systemd +tablespace +tablespaces +tanuki +taskscaler +tcpdump +teardown +templated +Thanos +thoughtbot +throughputs +Tiller +timebox +timeboxed +timeboxes +timeboxing +timecop +timelog +timelogs +Tiptap +todos +tokenizer +Tokenizers +tokenizing +tolerations +toolchain +toolchains +toolkit +toolkits +toolset +tooltip +tooltips +transactionally +transpile +transpiled +transpiles +transpiling +Trello +Trendline +triaged +triages +triaging +Trivy +Truststore +truthy +Twilio +Twitter +Typeform +TypeScript +TZInfo +Ubuntu +Udemy +UI +UIDs +unapplied +unapprove +unapproved +unapproving +unarchive +unarchived +unarchives +unarchiving +unary +unassign +unassigning +unassigns +unban +unbans +uncached +uncheck +unchecked +unchecking +unchecks +uncomment +uncommented +uncommenting +uncordon +underperforming +unencode +unencoded +unencoder +unencodes +unencrypted +unescaped +unfollow +unfollowed +unfollows +Unicorn +unindexed +unlink +unlinking +unlinks +unmappable +unmapped +unmergeable +unmerged +unmerges +unmerging +unmocked +unoptimize +unoptimized +unoptimizes +unoptimizing +unparsable +unpatched +unpause +unprioritized +unprotect +unprotected +unprotecting +unprotects +unprovision +unprovisioned +unprovisions +unpublish +unpublished +unpublishes +unpublishing +unpullable +unpushed +unreferenced +unregister +unregistered +unregisters +unreplicated +unresolve +unresolved +unresolving +unreviewed +unrevoke +unsanitized +unschedule +unscoped +unsetting +unshare +unshared +unshares +unstage +unstaged +unstages +unstaging +unstar +unstars +unstarted +unstash +unstashed +unstashing +unsynced +unsynchronized +untarred +untracked +untrusted +unverified +unverifies +unverify +unverifying +uploader +uploaders +upstreams +upvote +upvoted +upvotes +urgencies +URIs +URL +UUIDs +Vagrantfile +validator +validators +vCPUs +vendored +vendoring +versionless +viewport +viewports +virtualized +virtualizing +Vite +VMs +VPCs +Vue +Vuex +waitlist +walkthrough +walkthroughs +WebdriverIO +Webex +webpack +WEBrick +webserver +Webservice +websocket +websockets +whitepaper +whitepapers +wireframe +wireframed +wireframes +wireframing +Wireshark +Wordpress +Workato +workstream +worktree +worktrees +Worldline +Xcode +Xeon +XPath +Yandex +YouTrack +ytt +Yubico +Zabbix +ZAProxy +Zeitwerk +Zendesk +ZenTao +Zoekt +zsh +Zstandard +Zuora