diff --git a/docs/archive/README.NewResourceFromTerraform.md b/docs/archive/README.NewResourceFromTerraform.md index ca2c355479..fb35371d1d 100644 --- a/docs/archive/README.NewResourceFromTerraform.md +++ b/docs/archive/README.NewResourceFromTerraform.md @@ -165,7 +165,7 @@ ServiceMappings file. Add the `ResourceConfig` for your resource: 1. Replace the value for `name` with the name of the Terraform resource associated with your GCP resource. -1. Replace the value for `kind` with the ConfigConnector `Kind` for your +1. Replace the value for `kind` with the Config Connector `Kind` for your resource. The name should be in pascal case, i.e. ServiceNameResourceName, but with acronyms in uppercase. diff --git a/docs/develop-resources/README.md b/docs/develop-resources/README.md index cf0681ee56..e49b17538d 100644 --- a/docs/develop-resources/README.md +++ b/docs/develop-resources/README.md @@ -1,6 +1,6 @@ # Developing the Direct Resource Guide -We are thrilled to introduce the new way to add a ConfigConnector resource: the direct resource guide! +We are thrilled to introduce the new way to add a Config Connector resource: the direct resource guide! In the past few months, we have made a tremendous amount of efforts to make adding a new resource (or a new field) much faster and more manageable, we have changed some key resource reconciliation processs to be more reliable and Kubernetes-native. What's more, we have made a revolutionary change to the test driven development and PR review process to improve the test coverage for every single field. diff --git a/docs/develop-resources/api-conventions/validations.md b/docs/develop-resources/api-conventions/validations.md new file mode 100644 index 0000000000..e7a6ee60c3 --- /dev/null +++ b/docs/develop-resources/api-conventions/validations.md @@ -0,0 +1,158 @@ +# Direct Resource API Validation + + +# TL;DR + +Config Connector Direct Resource shall have each `spec` field validated. + + +# Basic Rules + +Each Config Connector resource `spec` field shall be validated by at least one of the following approach: + + +## 1. CRD validation + +* This throws standard OpenAPI validation errors without requiring the Config Connector controller to run. +* This validation shall take the responsibility to give users a cheap and self-guiding check. It does not contain complicated logic. + + +## 2. Config Connector controller validation + + +* This throws the Config Connector-defined errors in runtime. +* This validation shall take the responsibility to guardrail config issues that otherwise could cause ambiguous or unexpected Config Connector behavior. +* We shall build and publish a Config Connector error code table to future explain the issue and give a triage guide. + + +## 3. GCP Service Validation + + +* This throws GCP defined errors in runtime. Config Connector shall propagate the GCP response errors to the Config Connector object’s `status` field. +* This validation shall take the responsibility to guide users on fixing the issues due to GCP service requirements, like `SpannerInstance` has `spec.processingUnit` whose value can only increase but not decrease. + + +# CRD validation + + +## Rule 1: Required/Optional + +Required field should use tag `+required`. + +Optional field does not need the tag. + + +``` +type CloudBuildWorkerPoolSpec struct { +  // +required   + PrivatePoolConfig *PrivatePoolV1Config `json:"privatePoolV1Config,omitempty"` +} +``` + + +## Rule 2: Immutable field + +Immutable field should be validated via CEL rule using kubebuilder tag + + +``` +type PrivatePoolV1Config_NetworkConfigSpec struct { +        // +kubebuilder:validation:XValidation:rule="self == oldSelf",message="the field is immutable" +        // Immutable. The network definition that the workers are peered +        //  to. If this section is left empty, the workers will be peered to +        //  `WorkerPool.project_id` on the service producer network. +        PeeredNetworkRef refv1beta1.ComputeNetworkRef `json:"peeredNetworkRef,omitempty"` +} +``` + +Note: + + +* Kubernetes supports CEL since 1.26 which is the oldest GKE cluster version (written at ). Using CEL shall not cause GKE cluster version issues, but we shall reevaluate this when the condition changes. +* Some Config Connector resources use webhook to validate immutable fields. We can continue using that, but for external contributors CEL is much easier for self-learning. + +We only apply CEL on immutable fields.** More complicated CEL validation requires further discussion.** + +One future improvement can be having generate-types detect the “Immutable.” comment and add the kubebuilder tag automatically. + + +## Rule 3: Parent + +Parent field should be required and immutable. + + +### Required + +Suggest using the following `inline` struct + + +``` +type CloudBuildWorkerPoolSpec struct { +  // +required   +  Parent `json:",inline"` +} + +type Parent struct { +    // +required       +    ProjectRef *refv1beta1.ProjectRef `json:"projectRef"` + +    // +required +    Location string `json:"location"` +} +``` + + +### Immutable + +Since most parent is a reference to another resource which can either be `Ref.external `or `Ref.name` , the immutable validation needs to be done at the controller validation level. For example, switching `Ref.external `and `Ref.name `are allowed if referring to the same resource. + +See this [resource reference guide](https://github.com/yuwenma/k8s-config-connector/blob/resource-ref/docs/develop-resources/resource-reference.md) (todo update once PR merged) for general rules; + +See this [external reference guide](https://github.com/yuwenma/k8s-config-connector/blob/real-id/docs/develop-resources/realID.md#statusexternalref-format) (todo update once PR merged) for parent validation with `status.externalRef`. + + +## Rule 4: No `anyOf`, `oneOf`, or` allOf` + +Short answer: Not now. + +Full answer: + +OpenAPI supports `oneOf`, `anyOf` and `allOf`. Thus, in theory these should be the CRD level rules. The Direct Resource CRD is auto-generated by controller-gen, which only reads the kubebuilder tag rules. But the kubebuilder tags [do not (and most likely won’t)](https://github.com/kubernetes-sigs/controller-tools/issues/461) support `oneOf`, `anyOf` or `allOf`. + +To set this as CRD level rule, Config Connector shall build its own CRD transformer. Ideally, this could be a Config Connector tag similar to kubebuilder, but this requires integrating with controller-gen which is a non-trivial amount of work. Other options like webhook, OpenAPI schema modifier are not self-explaining and easy enough to use, considering that Direct Resource shall be open to external contributors. Thus, Config Connector does not use CRD level validation for `oneOf`, `anyOf` and `allOf`. + +One future improvement can be having a Direct Resource tag that adds CRD level checks for `oneOf`, `anyOf` or `allOf`. + + +``` +// +Config Connector:validation:oneOf:serviceAttachmentRef,targetGRPCProxyRef,targetHTTPProxyRef,targetHTTPSProxyRef" +type target struct { +        ServiceAttachmentRef *refs.ComputeServiceAttachmentRef `json:"serviceAttachmentRef,omitempty"` + +        TargetGRPCProxyRef *refs.ComputeTargetGrpcProxyRef `json:"targetGRPCProxyRef,omitempty"` + +        TargetHTTPProxyRef *refs.ComputeTargetHTTPProxyRef `json:"targetHTTPProxyRef,omitempty"` + +        TargetHTTPSProxyRef *refs.ComputeTargetHTTPSProxyRef `json:"targetHTTPSProxyRef,omitempty"` +} +``` + + + +# Controller validation + +Advanced Kubernetes contributors can use webhook to validate the resource CRs. + +To easily ramp-up external contributors, we recommend using the controller-level validation instead. This validation mostly happens on Adapter [initialization](https://github.com/GoogleCloudPlatform/k8s-config-connector/blob/91aac5186eb0aa2c5c3def94d7a7c79f948ac9a9/pkg/controller/direct/directbase/directbase_controller.go#L226), GCP object [creation](https://github.com/GoogleCloudPlatform/k8s-config-connector/blob/91aac5186eb0aa2c5c3def94d7a7c79f948ac9a9/pkg/controller/direct/directbase/directbase_controller.go#L283) and [update](https://github.com/GoogleCloudPlatform/k8s-config-connector/blob/91aac5186eb0aa2c5c3def94d7a7c79f948ac9a9/pkg/controller/direct/directbase/directbase_controller.go#L291) steps. + + +## Rule 1: Resource Reference + +Config Connector shall validate the resource reference based on the [resource reference guide](https://github.com/yuwenma/k8s-config-connector/blob/resource-ref/docs/develop-resources/resource-reference.md). + + +## Rule 2: Resource ID + +`spec.resourceID` is an optional and immutable field. + +Config Connector shall validate the `resourceID` (if present) matches the `status.externalRef` (if present) based on the reconciliation 4 steps. diff --git a/docs/develop-resources/guides/1-add-mockgcp-tests.md b/docs/develop-resources/guides/1-add-mockgcp-tests.md index 00b03b4cd1..5ef600bac2 100644 --- a/docs/develop-resources/guides/1-add-mockgcp-tests.md +++ b/docs/develop-resources/guides/1-add-mockgcp-tests.md @@ -4,10 +4,11 @@ MockGCP test is required for the Direct resource development. 1. This is required no matter if the feature request is small or big. For example, both adding a single new field or adding an entire new resource require the MockGCP test coverage. If the MockGCP does not exist yet when adding a single field, developers should add the corresponding MockGCP coverage for the entire resource. -1. Each ConfigConnector `spec` field should be covered in both create and update(if applicable) cases. -1. MockGCP check is auto-enabled in Presubmit check and shall not be skipped. Code changes to a ConfigConnector resource must not merge if not covered by MockGCP check. +1. Each Config Connector `spec` field should be covered in both create and update(if applicable) cases. +1. MockGCP check is auto-enabled in Presubmit check and shall not be skipped. Code changes to a Config Connector resource must not merge if not covered by MockGCP check. 1. New PRs should give steady golden log output before they can merge in. Reasonable golden object and http log changes are okay and sometimes expected. 1. MockGCP should be up-to-date when migrating resource from TF/DCL based controller to the Direct Controller +1. Real GCP record should be uploaded to reflect and validate the change in scenarios like adding a new resource, migrating from TF or DCL based controller to the direct controller, adding a new field, etc. ### Suggestion diff --git a/docs/develop-resources/guides/2-define-apis.md b/docs/develop-resources/guides/2-define-apis.md index 11ddca6bf3..44287121fc 100644 --- a/docs/develop-resources/guides/2-define-apis.md +++ b/docs/develop-resources/guides/2-define-apis.md @@ -1,6 +1,6 @@ # 2. Define API -ConfigConnector builds the API using the Google Cloud Client proto. +Config Connector builds the API using the Google Cloud Client proto. ## 2.1 Build the Google Cloud Proto (one-off step) @@ -17,7 +17,7 @@ cd $REPO_ROOT/dev/tools/proto-to-mapper make generate-pb ``` -## 2.2 Generate the ConfigConnector Types (repeat-run safe) +## 2.2 Generate the Config Connector Types (repeat-run safe) Run the following command @@ -48,7 +48,7 @@ The apis directory to where to write the result to. Shall always be $REPO_ROO * `--kind` -The ConfigConnector resource kind, camel case. Normally it should contain the service name for example `SpannerInstance`, `SQLInstance`. +The Config Connector resource kind, camel case. Normally it should contain the service name for example `SpannerInstance`, `SQLInstance`. * `--proto-source` @@ -56,7 +56,7 @@ The proto name of the resource, you can find them in [https://github.com/googlea * `--api-version` -The ConfigConnector apiVersion value, shall be <service>.[cnrm.cloud.google.com/](http://cnrm.cloud.google.com/)<version>, where the generated file will be placed under$REPO_ROOT/apis/<service>/<version> (if the dir does not exist, the command will create one). +The Config Connector apiVersion value, shall be .[cnrm.cloud.google.com/](http://cnrm.cloud.google.com/), where the generated file will be placed under$REPO_ROOT/apis// (if the dir does not exist, the command will create one). ## 2.3 Generate CRD (repeat-run safe) @@ -81,7 +81,7 @@ cd $REPO_ROOT For scenarios #1 and #2, we accept breaking changes. So it is fine if the CRD outcome in 2.3 is different from the already released CRDs. -For scenarios #3, ConfigConnector has to be backward compatible. So we have to keep the CRD **existing** spec and status the same. +For scenarios #3, Config Connector has to be backward compatible. So we have to keep the CRD **existing** spec and status the same. * The API field name must **not** change. You need to manually modify the field if it’s changed. * The field go comment is the CRD’s field description, this can be modified. @@ -92,7 +92,7 @@ According to the above principles, you shall decide how to process the following * Add the parent field and mark as required - * See detailed [requirements and example](https://github.com/yuwenma/k8s-config-connector/blob/CR-validation/docs/develop-resources/api-validations.md#rule-3-parent) (TODO: update link) + * See detailed [requirements and example](../api-conventions/validations.md#rule-3-parent) (TODO: update link) * Replace any field that is a resource reference to `Ref `and add the resource to `./apis/refs` if not exist.` ` @@ -100,7 +100,7 @@ According to the above principles, you shall decide how to process the following * Add **non** output-only fields to `spec`, excluding imperative fields. -* Add other CR validations according to the [Direct Resource API Validation Guide](https://github.com/yuwenma/k8s-config-connector/blob/CR-validation/docs/develop-resources/api-validations.md) (TODO: update link) +* Add other CR validations according to the [Direct Resource API Validation Guide](../api-conventions/validations.md) * (Only for TF/DCL Beta) Existing `spec` and `status` fields should still be there, except the [output-only spec](https://paste.googleplex.com/4694303066030080) should be removed. diff --git a/docs/develop-resources/guides/4-add-controller.md b/docs/develop-resources/guides/4-add-controller.md index 6b1421edff..9762407b58 100644 --- a/docs/develop-resources/guides/4-add-controller.md +++ b/docs/develop-resources/guides/4-add-controller.md @@ -16,7 +16,7 @@ The controller template has implemented the model interface` find, create, updat ## 4.2 Resolve resource references -Most ConfigConnector resource need references like `spec.projectRef. `You should add those references in `AdapterForObject` using functions `Resolve` +Most Config Connector resource need references like `spec.projectRef. `You should add those references in `AdapterForObject` using functions `Resolve` if there is no previous reference method, You may need to add a new` Resolve ` @@ -25,7 +25,7 @@ Check to make sure your validation is complete. ## 4.3 Register your controller -To wire your controller in the ConfigConnector operator, you need to register the controller [here](https://github.com/GoogleCloudPlatform/k8s-config-connector/blob/master/pkg/controller/direct/register/register.go) +To wire your controller in the Config Connector operator, you need to register the controller [here](https://github.com/GoogleCloudPlatform/k8s-config-connector/blob/master/pkg/controller/direct/register/register.go) ## 4.4 Verify your controller diff --git a/docs/develop-resources/scenarios/alpha-to-beta.md b/docs/develop-resources/scenarios/alpha-to-beta.md index f451c04f16..0be05c1352 100644 --- a/docs/develop-resources/scenarios/alpha-to-beta.md +++ b/docs/develop-resources/scenarios/alpha-to-beta.md @@ -7,5 +7,4 @@ If the resource is TF-based or DCL-based, you shall migrate them to [the Direct ## From Direct Alpha to Beta -If the resource is already a Direct resource, you can follow [step 5.2](https://github.com/yuwenma/k8s-config-connector/blob/scifi-guide/docs/develop-resources/guides/5-releases.md#52-bump-from-v1alpha1-to-v1beta1) (TODO: update the link) - and submit a single PR \ No newline at end of file +If the resource is already a Direct resource, you can follow [step 5.2](../guides/5-releases.md#52-bump-from-v1alpha1-to-v1beta1) and submit a single PR \ No newline at end of file diff --git a/docs/develop-resources/scenarios/migrate-tf-resource-alpha.md b/docs/develop-resources/scenarios/migrate-tf-resource-alpha.md index ae37ae454b..c47133b5d5 100644 --- a/docs/develop-resources/scenarios/migrate-tf-resource-alpha.md +++ b/docs/develop-resources/scenarios/migrate-tf-resource-alpha.md @@ -2,7 +2,7 @@ ## Add MockGCP tests -Follow [Step 1](https://github.com/yuwenma/k8s-config-connector/blob/scifi-guide/docs/develop-resources/guides/1-add-mockgcp-tests.md) +Follow [Step 1](../guides/1-add-mockgcp-tests.md) 1. The 1st PR should set the `create.yaml `and `update.yaml `fields the same value for both test suites, with `_http.log `telling the matching HTTP request/response, and `_generated_object_.golden.yaml` telling the output-only fields. It shall record against real GCP @@ -17,7 +17,7 @@ Follow [Step 1](https://github.com/yuwenma/k8s-config-connector/blob/scifi-guide ## Add API -Follow [Step 2](https://github.com/yuwenma/k8s-config-connector/blob/scifi-guide/docs/develop-resources/guides/2-define-apis.md) +Follow [Step 2](../guides/2-define-apis.md) The PR shall contain the types and deepcopy codes. It shall follow the Direct resource recommended styles and conventions. (TODO add the link) **It can change the existing fields since this is a Alpha resource**. @@ -31,13 +31,13 @@ The PR shall contain the types and deepcopy codes. It shall follow the Direct re ## Add the mapper -Follow [Step 3](https://github.com/yuwenma/k8s-config-connector/blob/scifi-guide/docs/develop-resources/guides/3-add-mapper.md) +Follow [Step 3](../guides/3-add-mapper.md) This PR adds the Direct mapper. You can do this together with the previous step or the next step if no additional manual changes are needed. ## Add the controller -Follow [Step 4](https://github.com/yuwenma/k8s-config-connector/blob/scifi-guide/docs/develop-resources/guides/4-add-controller.md). +Follow [Step 4](../guides/4-add-controller.md). * Use the `KCC_USE_DIRECT_RECONCILERS` flag [exampe](https://github.com/GoogleCloudPlatform/k8s-config-connector/blob/0bbac86ace6ab2f4051b574f026d5fe47fa05b75/dev/tasks/run-e2e#L27). This will override the tf2crd and dcl2crd label to force using the Direct controller. diff --git a/docs/develop-resources/scenarios/migrate-tf-resource-beta.md b/docs/develop-resources/scenarios/migrate-tf-resource-beta.md index f269d8698b..622d3e9169 100644 --- a/docs/develop-resources/scenarios/migrate-tf-resource-beta.md +++ b/docs/develop-resources/scenarios/migrate-tf-resource-beta.md @@ -2,7 +2,7 @@ ## Add MockGCP tests -Follow [Step 1](https://github.com/yuwenma/k8s-config-connector/blob/scifi-guide/docs/develop-resources/guides/1-add-mockgcp-tests.md) +Follow [Step 1](../guides/1-add-mockgcp-tests.md) 1. The 1st PR should set the `create.yaml `and `update.yaml `fields the same value for both test suites, with `_http.log `telling the matching HTTP request/response, and `_generated_object_.golden.yaml` telling the output-only fields. @@ -17,7 +17,7 @@ Follow [Step 1](https://github.com/yuwenma/k8s-config-connector/blob/scifi-guide ## Add the backward compatible API -Follow [Step 2](https://github.com/yuwenma/k8s-config-connector/blob/scifi-guide/docs/develop-resources/guides/2-define-apis.md) +Follow [Step 2](../guides/2-define-apis.md) The PR shall contain the types and deepcopy codes. It shall make modifications to make sure the CRDs are the same, because Beta resource has to be backward compatible. @@ -35,13 +35,13 @@ Note: *Do not use* `excluded_resources`, we want the presubmit to validate the e ## Add the backward compatible mapper -Follow [Step 3](https://github.com/yuwenma/k8s-config-connector/blob/scifi-guide/docs/develop-resources/guides/3-add-mapper.md) +Follow [Step 3](../guides/3-add-mapper.md) The PR adds the Direct mapper. You can do this together with the previous step or the next step if no additional manual changes are needed. Using `/*NOTYET .. */` to comment out new functions, same as the last step. ## Add the direct controller -Follow [Step 4](https://github.com/yuwenma/k8s-config-connector/blob/scifi-guide/docs/develop-resources/guides/4-add-controller.md) +Follow [Step 4](../guides/4-add-controller.md) * Use the `KCC_USE_DIRECT_RECONCILERS` flag [exampe](https://github.com/GoogleCloudPlatform/k8s-config-connector/blob/0bbac86ace6ab2f4051b574f026d5fe47fa05b75/dev/tasks/run-e2e#L27). diff --git a/docs/develop-resources/scenarios/new-field.md b/docs/develop-resources/scenarios/new-field.md index ce2086e30a..deac0d49b7 100644 --- a/docs/develop-resources/scenarios/new-field.md +++ b/docs/develop-resources/scenarios/new-field.md @@ -32,11 +32,11 @@ The apis directory the contains the existing API types of the resource. 1. Run 3.1 Generate the API and proto mapper to update the mapper files. 2. Add the fields to `create.yaml `and `update.yaml `in corresponding test suites. - 3. Modify the MockGCP when necessary. The new fields should show up in `_http.log `and `_generated_object_<resource>.golden.yaml` + 3. Modify the MockGCP when necessary. The new fields should show up in `_http.log `and `_generated_object_.golden.yaml` ## 2. Resolve resource reference -If the newly added fields contain resource references, you should have a second PR to update the resource reference, following [4.2 resolve resource references](https://github.com/yuwenma/k8s-config-connector/blob/scifi-guide/docs/develop-resources/guides/4-add-controller.md#42-resolve-resource-references) (TODO: update the link) +If the newly added fields contain resource references, you should have a second PR to update the resource reference, following [4.2 resolve resource references](../guides/4-add-controller.md#42-resolve-resource-references) (TODO: update the link) Add a new test suite with `dependencies.yaml` to cover the referenced fields. diff --git a/docs/develop-resources/scenarios/new-resource.md b/docs/develop-resources/scenarios/new-resource.md index 67839875cf..427ce49169 100644 --- a/docs/develop-resources/scenarios/new-resource.md +++ b/docs/develop-resources/scenarios/new-resource.md @@ -1,8 +1,8 @@ -# Add a new ConfigConnector resource +# Add a new Config Connector resource *Understand the current status* -* If the resource is not in [ConfigConnector API Reference](https://cloud.google.com/config-connector/docs/reference/overview), it could be an Alpha resource. Check if [the CRD](https://github.com/GoogleCloudPlatform/k8s-config-connector/tree/master/crds) exists with the latest release. If so, please go to [promote alpha to beta](./alpha-to-beta.md) +* If the resource is not in [Config Connector API Reference](https://cloud.google.com/config-connector/docs/reference/overview), it could be an Alpha resource. Check if [the CRD](https://github.com/GoogleCloudPlatform/k8s-config-connector/tree/master/crds) exists with the latest release. If so, please go to [promote alpha to beta](./alpha-to-beta.md) * We are migrating from the TF/DCL based resources to the Direct approach. That means we are holding off new PR reviews if they are using the TF/DCL based approach. Please let us know if you encounter any problems or any specific reasons that can only use the TF/DCL based approach. @@ -14,7 +14,7 @@ Different than other scenarios, developing a pure Direct resource requires you t 1. A basic API from the auto-generated code, including all required fields (Step 2) 2. A basic Direct controller (Step 3 and 4). -3. Define `create.yaml` and `update.yaml` to run against the real GCP (Step 1 [record real gcp](https://github.com/yuwenma/k8s-config-connector/blob/scifi-guide/docs/develop-resources/guides/1-add-mockgcp-tests.md#record-real-gcp-log)) (TODO update link) +3. Define `create.yaml` and `update.yaml` to run against the real GCP (Step 1 [record real gcp](../guides/1-add-mockgcp-tests.md#record-real-gcp-log)) ### PR reviews diff --git a/docs/features/pause.md b/docs/features/pause.md index 070e898322..c2b758dac7 100644 --- a/docs/features/pause.md +++ b/docs/features/pause.md @@ -9,31 +9,31 @@ debugging purposes or to have a hot standby. ## Pausing -We extended the API definitions for the ConfigConnector and ConfigConnectorContext resources to +We extended the API definitions for the Config Connector and Config ConnectorContext resources to support a new field, `spec.actuationMode`. The field's current supported values are `Reconciling` and `Paused` with `Reconciling` being the default for backwards compatiblity. As such, KCC can be "paused" both globally and on a per-namespace level if running in namespace mode ### Pausing Globally -To pause KCC across namespaces it is sufficient to set the ConfigConnector's `actuationMode: Paused`. This will work when KCC runs in `Cluster` and `Namespaced` mode. To eventually resume actuation just set the field back to `Reconciling`. +To pause KCC across namespaces it is sufficient to set the Config Connector's `actuationMode: Paused`. This will work when KCC runs in `Cluster` and `Namespaced` mode. To eventually resume actuation just set the field back to `Reconciling`. ### Pausing Per Namespace When KCC is running in `Namespaced` mode (and only then), operators can set -`actuationMode: Paused` on the `ConfigConnectorContext` resource. To eventually +`actuationMode: Paused` on the `Config ConnectorContext` resource. To eventually resume actuation for that namespace set the field back to `Reconciling`. The `actuationMode` -value on the `ConfigConnectorContext` takes precedence over the value in `ConfigConnector`. +value on the `Config ConnectorContext` takes precedence over the value in `Config Connector`. ### Reconciling Per Namespace (only) It can be handy to have KCC globally paused but reconciling on a per namespace level. To do this make sure KCC is running in `Namespaced` mode -and the `actuationMode: Paused` on the `ConfigConnector` resource. Then +and the `actuationMode: Paused` on the `Config Connector` resource. Then reconciling can be turned on for a namespace by changing the `actuationMode` -field for the`ConfigConnectorContext` to `Reconciling` for that namespace. +field for the`Config ConnectorContext` to `Reconciling` for that namespace. NOTE: you can avoid any pausing in actuation by first changing the -`ConfigConnectorContext` actuationMode. +`Config ConnectorContext` actuationMode. ## Caveats diff --git a/docs/releasenotes/release-1.114.md b/docs/releasenotes/release-1.114.md index f8d5cac132..ead29e24b8 100644 --- a/docs/releasenotes/release-1.114.md +++ b/docs/releasenotes/release-1.114.md @@ -7,12 +7,12 @@ * Fix resource deletion of `AlloyDBInstance` and `EdgeContainerNodePool` when their "parent objects" no longer exist. * Initial support (alpha stability) for pausing actuation of resources onto Google Cloud. Operators - can set ConfigConnector's or ConfigConnectorContext's spec.actuationMode to `Paused`, depending + can set Config Connector's or Config ConnectorContext's spec.actuationMode to `Paused`, depending on whether to pause on the whole cluster or just a namespace. See the [pause feature docs](./../features/pause.md) for more information. * Initial support (alpha stability) for defaulting state-into-spec to absent (the recommended setting), - by setting `spec.stateIntoSpec: Absent` in the ConfigConnectorContext. + by setting `spec.stateIntoSpec: Absent` in the Config ConnectorContext. * Experimental "powertools" area of the CLI, containing experimental/dangerous functionality that should not be part of normal operation, but can sometimes nonetheless be useful. diff --git a/docs/releasenotes/release-1.119.md b/docs/releasenotes/release-1.119.md index d55f4a527a..da0b843dc3 100644 --- a/docs/releasenotes/release-1.119.md +++ b/docs/releasenotes/release-1.119.md @@ -11,7 +11,7 @@ * This feature allows users to customize the client-side kube-apiserver request rate limit. * Continue moving towards Direct Actuation as our preferred mechanism. - * The default reconciler now uses Direct Actuation, if the ConfigConnector CRD does not have a `cnrm.cloud.google.com/tf2crd: "true"` or `cnrm.cloud.google.com/dcl2crd: "true"` label. + * The default reconciler now uses Direct Actuation, if the Config Connector CRD does not have a `cnrm.cloud.google.com/tf2crd: "true"` or `cnrm.cloud.google.com/dcl2crd: "true"` label. ## New Resources: diff --git a/docs/releasenotes/release-1.120.md b/docs/releasenotes/release-1.120.md index 3863330bb4..eab21a643e 100644 --- a/docs/releasenotes/release-1.120.md +++ b/docs/releasenotes/release-1.120.md @@ -3,7 +3,7 @@ * IAM configuration can now be applied to `PrivateCACAPool`, using our direct-actuation approach. -* You can configure the ConfigConnector operator to roll back to install the v1.119.0 CRDs by specifying `spec.version: 1.119.0` in the `ConfigConnectorContext` CR (namespaced mode). +* You can configure the Config Connector operator to roll back to install the v1.119.0 CRDs by specifying `spec.version: 1.119.0` in the `Config ConnectorContext` CR (namespaced mode). * Special shout-outs to 600lyy,acpana,barney-s,coperni,gemmahou,hankfreund,jasonvigil,justinsb,maqiuyujoyce,nancynh,xiaoweim,yuwenma,zicongmei,ziyue-101 for their contributions to this release. diff --git a/docs/releasenotes/release-1.121.md b/docs/releasenotes/release-1.121.md index e20a89a7f1..0d372a3b25 100644 --- a/docs/releasenotes/release-1.121.md +++ b/docs/releasenotes/release-1.121.md @@ -4,7 +4,7 @@ ## Announcement -* We plan to apply the `state-into-spec` default value `Absent` to *all the ConfigConnector clusters* in the v1.123 (next to the next release). +* We plan to apply the `state-into-spec` default value `Absent` to *all the Config Connector clusters* in the v1.123 (next to the next release). ## Direct Cloud Reconciler: