From 2f6708ebf2be67164dc78abb8ad4f130188188c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fatih=20T=C3=BCrken?= Date: Wed, 12 Jun 2024 16:18:52 +0300 Subject: [PATCH] Remove documents related to monolithic provider MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fatih Türken --- docs/monolith/Configuration.md | 599 --------------------------------- docs/monolith/Quickstart.md | 256 -------------- docs/monolith/index.json | 10 - 3 files changed, 865 deletions(-) delete mode 100644 docs/monolith/Configuration.md delete mode 100644 docs/monolith/Quickstart.md delete mode 100755 docs/monolith/index.json diff --git a/docs/monolith/Configuration.md b/docs/monolith/Configuration.md deleted file mode 100644 index c72731d0b..000000000 --- a/docs/monolith/Configuration.md +++ /dev/null @@ -1,599 +0,0 @@ ---- -title: Configuration -weight: 2 ---- -⚠️ **Warning:** The monolithic GCP provider (`upbound/provider-gcp`) has been deprecated in favor of the [GCP provider family](https://marketplace.upbound.io/providers/upbound/provider-family-gcp/). You can read more about the provider families in our [blog post](https://blog.upbound.io/new-provider-families) and the official documentation for the provider families is [here](https://docs.upbound.io/providers/provider-families/). We will continue support for the monolithic GCP provider until June 12, 2024. And you can find more information on migrating from the monolithic providers to the provider families [here](https://docs.upbound.io/providers/migration/). - -# GCP official provider documentation -Upbound supports and maintains the Upbound GCP official provider. - -## Install the provider-gcp -### Prerequisites -#### Upbound Up command-line -The Upbound Up command-line simplifies configuration and management of Upbound -Universal Crossplane (UXP) and interacts with the Upbound Marketplace to manage -users and accounts. - -Install `up` with the command: -```shell -curl -sL "https://cli.upbound.io" | sh -``` -More information about the Up command-line is available in the [Upbound Up -documentation](https://docs.upbound.io/cli/). - -#### Upbound Universal Crossplane -UXP is the Upbound official enterprise-grade distribution of Crossplane for -self-hosted control planes. - -Install UXP into your Kubernetes cluster using the Up command-line. - -```shell -up uxp install -``` - -Find more information in the [Upbound UXP documentation](https://docs.upbound.io/uxp/). - -### Install the provider-gcp - -Install the Upbound official GCP provider with the following configuration file - -```yaml -apiVersion: pkg.crossplane.io/v1 -kind: Provider -metadata: - name: provider-gcp -spec: - package: xpkg.upbound.io/upbound/provider-gcp: -``` - -Define the provider version with `spec.package`. - -Install the provider with `kubectl apply -f`. - -Verify the configuration with `kubectl get providers`. - -```shell -$ kubectl get providers -NAME INSTALLED HEALTHY PACKAGE AGE -provider-gcp True True xpkg.upbound.io/upbound/provider-gcp:v0.36.0 62s -``` - -View the Crossplane [Provider CRD definition](https://doc.crds.dev/github.com/crossplane/crossplane/pkg.crossplane.io/Provider/v1) to view all available `Provider` options. - -## Configure the provider-gcp -The GCP provider requires credentials for authentication to Google Cloud Platform. -This can be done in one of the following ways: - -- Authenticating using a base-64 encoded service account key in a Kubernetes - `Secret`. -- Authenticating using [Workload Identity](https://cloud.google.com/kubernetes-engine/docs/concepts/workload-identity). - -### Generate a Kubernetes secret -Create a JSON key file containing the GCP account credentials. GCP provides documentation on [how to create a key file](https://cloud.google.com/iam/docs/creating-managing-service-account-keys). - -Here is an example key file: -```json -{ - "type": "service_account", - "project_id": "caramel-goat-354919", - "private_key_id": "e97e40a4a27661f12345678f4bd92139324dbf46", - "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCwA+6MWRhmcPB3\nF/irb5MDPYAT6BWr7Vu/16U8FbCHk7xtsAWYjKXKHu5mGzum4F781sM0aMCeitlv\n+jr2y7Ny23S9uP5W2kfnD/lfj0EjCdfoaN3m7W0j4DrriJviV6ESeSdb0Ehg+iEW\ngNrkb/ljigYgsSLMuemby5lvJVINUazXJtGUEZew+iAOnI4/j/IrDXPCYVNo5z+b\neiMsDYWfccenWGOQf1hkbVWyKqzsInxu8NQef3tNhoUXNOn+/kgarOA5VTYvFUPr\n2l1P9TxzrcYuL8XK++HjVj5mcNaWXNN+jnFpxjMIJOiDJOZoAo0X7tuCJFXtAZbH\n9P61GjhbAgMBAAECggEARXo31kRw4jbgZFIdASa4hAXpoXHx4/x8Q9yOR4pUNR/2\nt+FMRCv4YTEWb01+nV9hfzISuYRDzBEIxS+jyLkda0/+48i69HOTAD0I9VRppLgE\ne97e40a4a27661f12345678f4bd92139324dbf46+2H7ulQDtbEgfcWpNMQcL2JiFq+WS\neh3H0gHSFFIWGnAM/xofrlhGsN64palZmbt2YiKXcHPT+WgLbD45mT5j9oMYxBJf\nPkUUX5QibSSBQyvNqCgRKHSnsY9yAkoNTbPnEV0clQ4FmSccogyS9uPEocQDefuY\nY7gpwSzjXpaw7tP5scK3NtWmmssi+dwDadfLrKF7oQKBgQDjIZ+jwAggCp7AYB/S\n6dznl5/G28Mw6CIM6kPgFnJ8P/C/Yi2y/OPKFKhMs2ecQI8lJfcvvpU/z+kZizcG\nr/7iRMR/SX8n1eqS8XfWKeBzIdwQmiKyRg2AKelGKljuVtI8sXKv9t6cm8RkWKuZ\n9uVroTCPWGpIrh2EMxLeOrlm0QKBgQDGYxoBvl5GfrOzjhYOa5GBgGYYPdE7kNny\nhpHE9CrPZFIcb5nGMlBCOfV+bqA9ALCXKFCr0eHhTjk9HjHfloxuxDmz34vC0xXG\ncegqfV9GNKZPDctysAlCWW/dMYw4+tzAgoG9Qm13Iyfi2Ikll7vfeMX7fH1cnJs0\nnYpN9LYPawKBgQCwMi09QoMLGDH+2pLVc0ZDAoSYJ3NMRUfk7Paqp784VAHW9bqt\n1zB+W3gTyDjgJdTl5IXVK+tsDUWu4yhUr8LylJY6iDF0HaZTR67HHMVZizLETk4M\nLfvbKKgmHkPO4NtG6gEmMESRCOVZUtAMKFPhIrIhAV2x9CBBpb1FWBjrgQKBgQCj\nkP3WRjDQipJ7DkEdLo9PaJ/EiOND60/m6BCzhGTvjVUt4M22XbFSiRrhXTB8W189\noZ2xrGBCNQ54V7bjE+tBQEQbC8rdnNAtR6kVrzyoU6xzLXp6Wq2nqLnUc4+bQypT\nBscVVfmO6stt+v5Iomvh+l+x05hAjVZh8Sog0AxzdQKBgQCMgMTXt0ZBs0ScrG9v\np5CGa18KC+S3oUOjK/qyACmCqhtd+hKHIxHx3/FQPBWb4rDJRsZHH7C6URR1pHzJ\nmhCWgKGsvYrXkNxtiyPXwnU7PNP9JNuCWa45dr/vE/uxcbccK4JnWJ8+Kk/9LEX0\nmjtDm7wtLVlTswYhP6AP69RoMQ==\n-----END PRIVATE KEY-----\n", - "client_email": "my-sa-313@caramel-goat-354919.iam.gserviceaccount.com", - "client_id": "103735491955093092925", - "auth_uri": "https://accounts.google.com/o/oauth2/auth", - "token_uri": "https://oauth2.googleapis.com/token", - "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", - "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/my-sa-313%40caramel-goat-354919.iam.gserviceaccount.com" -} -``` -Use the JSON file to generate a Kubernetes secret. - -`kubectl create secret generic gcp-secret --from-file=creds=./` - -### Create a ProviderConfig object -Apply the secret in a `ProviderConfig` Kubernetes configuration file. - -```yaml -apiVersion: gcp.upbound.io/v1beta1 -kind: ProviderConfig -metadata: - name: default -spec: - projectID: - credentials: - source: Secret - secretRef: - namespace: upbound-system - name: gcp-secret - key: creds -``` - -**Note:** the `spec.credentials.secretRef.name` must match the `name` in the `kubectl create secret generic ` command. - -## Authenticating with Workload Identity - -Using Workload Identity requires some additional setup. -Many of the steps can also be found in the [documentation](https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity). - -### Steps - -These steps assume you already have a running GKE cluster which has already -enabled Workload Identity and has a sufficiently large node pool. - -#### 0. Prepare your variables - -In the following sections, you'll need to name your resources. -Define the variables below with any names valid in Kubernetes or GCP so that you -can smoothly set it up: - -```console -$ PROJECT_ID= # e.g.) -$ PROVIDER_GCP= # e.g.) provider-gcp -$ VERSION= # e.g.) 0.36.0 -$ GCP_SERVICE_ACCOUNT= # e.g.) -$ ROLE= # e.g.) roles/cloudsql.admin -$ CONTROLLER_CONFIG= # e.g.) gcp-config (Optional) -``` - -#### 1. Configure service accounts to use Workload Identity - -Create a GCP service account, which will be used for provisioning actual -infrastructure in GCP, and grant IAM roles you need for accessing the Google -Cloud APIs: - -```console -$ gcloud iam service-accounts create ${GCP_SERVICE_ACCOUNT} -$ gcloud projects add-iam-policy-binding ${PROJECT_ID} \ - --member "serviceAccount:${GCP_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \ - --role ${ROLE} \ - --project ${PROJECT_ID} -``` - -Get the name of your current `ProviderRevision` of this provider: - -```console -$ REVISION=$(kubectl get providers.pkg.crossplane.io ${PROVIDER_GCP} -o jsonpath="{.status.currentRevision}") -``` - -Next, you'll configure IAM to use Workload Identity. -In this step, you can choose one of the following options to configure service accounts: - -- [Option 1] Use a Kubernetes `ServiceAccount` managed by a provider's controller. -- [Option 2] Use a Kubernetes `ServiceAccount` which you created and is specified to `.spec.serviceAccountName` - in a [`ControllerConfig`](https://doc.crds.dev/github.com/crossplane/crossplane/pkg.crossplane.io/ControllerConfig/v1alpha1@v1.6.2). - -##### 2.1. [Option 1] Use a controller-managed `ServiceAccount` - -Specify a Kubernetes `ServiceAccount` with the revision you got in the last -step: - -```console -$ KUBERNETES_SERVICE_ACCOUNT=${REVISION} -``` - -##### 2.1. [Option 2] Use a user-managed `ServiceAccount` - -Name your Kubernetes `ServiceAccount`: - -```console -$ KUBERNETES_SERVICE_ACCOUNT= -``` - -Create a `ServiceAccount`, `ControllerConfig`, and `ClusterRoleBinding`: - -```console -$ cat < # e.g.) impersonate-example -``` - -#### 1. Setup Provider with Workload Identity - -Please follow steps 0, 1, and 2 in [Authenticating with Workload Identity](#authenticating-with-workload-identity) - -#### 2. Create Client Service Account - -Create a GCP service account, which will be used for provisioning actual -infrastructure in GCP, and grant IAM roles you need for accessing the Google -Cloud APIs. Remove role previously created for ${GCP_SERVICE_ACCOUNT}: - -```console -$ gcloud iam service-accounts create ${CLIENT_GCP_SERVICE_ACCOUNT} -$ gcloud projects remove-iam-policy-binding ${PROJECT_ID} \ - --member "serviceAccount:${GCP_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \ - --role ${ROLE} \ - --project ${PROJECT_ID} -$ gcloud projects add-iam-policy-binding ${PROJECT_ID} \ - --member "serviceAccount:${CLIENT_GCP_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \ - --role ${ROLE} \ - --project ${PROJECT_ID} -$ gcloud iam service-accounts add-iam-policy-binding \ - ${CLIENT_GCP_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com \ - --role roles/iam.serviceAccountTokenCreator \ - --member "serviceAccount:${GCP_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \ - --project ${PROJECT_ID} -``` - -### 3. Configure a `ProviderConfig` - -Create a `ProviderConfig` with `ImpersonateServiceAccount` in `.spec.credentials.source` and specify a GCP service account in `.spec.credentials.serviceAccount`: - -```console -$ cat < # e.g.) acme-prod -$ REGION= # e.g.) us-central1 -$ CLUSTER_NAME= # e.g.) demo -$ GCP_SERVICE_ACCOUNT= # e.g.) crossplane -$ ROLE= # e.g.) roles/editor -$ KUBERNETES_SERVICE_ACCOUNT= # e.g.) token-generator -$ NAMESPACE= # e.g.) default -$ SECRET_NAME= # e.g.) gcp-credentials -$ SECRET_KEY= # e.g.) token -$ PROVIDER_GCP= # e.g.) provider-gcp -$ VERSION= # e.g.) v0.36.0 -``` - -#### 1. Create a GKE cluster with Workload Identity Enabled -Create a default vpc if one does not already exist -```console -$ gcloud compute networks create default \ - --subnet-mode=auto \ - --bgp-routing-mode=global \ - --project=${PROJECT_ID} -``` -Create a cloud router -```console -$ gcloud compute routers create ${CLUSTER_NAME} \ - --project=${PROJECT_ID} \ - --network=default \ - --region=${REGION} -``` -Create a cloud nat -```console -$ gcloud compute routers nats create ${CLUSTER_NAME} \ - --router=${CLUSTER_NAME} \ - --region=${REGION} \ - --auto-allocate-nat-external-ips \ - --nat-all-subnet-ip-ranges \ - --project=${PROJECT_ID} -``` -Create the cluster -```console -$ gcloud container clusters create ${CLUSTER_NAME} \ - --region=${REGION} \ - --workload-pool=${PROJECT_ID}.svc.id.goog \ - --create-subnetwork name=gke \ - --enable-ip-alias \ - --enable-private-nodes \ - --no-enable-master-authorized-networks \ - --enable-master-global-access \ - --master-ipv4-cidr=172.16.0.32/28 \ - --num-nodes=1 \ - --project=${PROJECT_ID} -``` -Get the cluster credentials -```console -$ gcloud container clusters get-credentials ${CLUSTER_NAME} --region=${REGION} --project=${PROJECT_ID} -``` - -#### 2. Configure service accounts to use Workload Identity - -Create a GCP service account, which will be used for provisioning actual -infrastructure in GCP, and grant IAM roles you need for accessing the Google -Cloud APIs: - -```console -$ gcloud iam service-accounts create ${GCP_SERVICE_ACCOUNT} \ - --project=${PROJECT_ID} -``` -```console -$ gcloud projects add-iam-policy-binding ${PROJECT_ID} \ - --member="serviceAccount:${GCP_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \ - --role=${ROLE} \ - --project=${PROJECT_ID} -``` - -#### 3. Create resources to generate an access-token -Create the Kubernetes service account, RBAC, and CronJob to generate the temporary access-token - -**NOTE:** Ensure your kube context is pointing to the cluster created above - -```console -$ cat < -``` - -Apply this configuration with `kubectl apply -f`. - -After installing the provider, verify the install with `kubectl get providers`. - -```shell -$ kubectl get providers -NAME INSTALLED HEALTHY PACKAGE AGE -provider-gcp True True xpkg.upbound.io/upbound/provider-gcp:v0.36.0 15s -``` - -It may take up to 5 minutes to report `HEALTHY`. - -## Create a Kubernetes secret -The `provider-gcp` requires credentials to create and manage GCP resources. - -### Generate a GCP JSON key file -Create a JSON key file containing the GCP account credentials. GCP provides documentation on [how to create a key file](https://cloud.google.com/iam/docs/creating-managing-service-account-keys). - -Here is an example key file: -```json -{ - "type": "service_account", - "project_id": "caramel-goat-354919", - "private_key_id": "e97e40a4a27661f12345678f4bd92139324dbf46", - "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCwA+6MWRhmcPB3\nF/irb5MDPYAT6BWr7Vu/16U8FbCHk7xtsAWYjKXKHu5mGzum4F781sM0aMCeitlv\n+jr2y7Ny23S9uP5W2kfnD/lfj0EjCdfoaN3m7W0j4DrriJviV6ESeSdb0Ehg+iEW\ngNrkb/ljigYgsSLMuemby5lvJVINUazXJtGUEZew+iAOnI4/j/IrDXPCYVNo5z+b\neiMsDYWfccenWGOQf1hkbVWyKqzsInxu8NQef3tNhoUXNOn+/kgarOA5VTYvFUPr\n2l1P9TxzrcYuL8XK++HjVj5mcNaWXNN+jnFpxjMIJOiDJOZoAo0X7tuCJFXtAZbH\n9P61GjhbAgMBAAECggEARXo31kRw4jbgZFIdASa4hAXpoXHx4/x8Q9yOR4pUNR/2\nt+FMRCv4YTEWb01+nV9hfzISuYRDzBEIxS+jyLkda0/+48i69HOTAD0I9VRppLgE\ne97e40a4a27661f12345678f4bd92139324dbf46+2H7ulQDtbEgfcWpNMQcL2JiFq+WS\neh3H0gHSFFIWGnAM/xofrlhGsN64palZmbt2YiKXcHPT+WgLbD45mT5j9oMYxBJf\nPkUUX5QibSSBQyvNqCgRKHSnsY9yAkoNTbPnEV0clQ4FmSccogyS9uPEocQDefuY\nY7gpwSzjXpaw7tP5scK3NtWmmssi+dwDadfLrKF7oQKBgQDjIZ+jwAggCp7AYB/S\n6dznl5/G28Mw6CIM6kPgFnJ8P/C/Yi2y/OPKFKhMs2ecQI8lJfcvvpU/z+kZizcG\nr/7iRMR/SX8n1eqS8XfWKeBzIdwQmiKyRg2AKelGKljuVtI8sXKv9t6cm8RkWKuZ\n9uVroTCPWGpIrh2EMxLeOrlm0QKBgQDGYxoBvl5GfrOzjhYOa5GBgGYYPdE7kNny\nhpHE9CrPZFIcb5nGMlBCOfV+bqA9ALCXKFCr0eHhTjk9HjHfloxuxDmz34vC0xXG\ncegqfV9GNKZPDctysAlCWW/dMYw4+tzAgoG9Qm13Iyfi2Ikll7vfeMX7fH1cnJs0\nnYpN9LYPawKBgQCwMi09QoMLGDH+2pLVc0ZDAoSYJ3NMRUfk7Paqp784VAHW9bqt\n1zB+W3gTyDjgJdTl5IXVK+tsDUWu4yhUr8LylJY6iDF0HaZTR67HHMVZizLETk4M\nLfvbKKgmHkPO4NtG6gEmMESRCOVZUtAMKFPhIrIhAV2x9CBBpb1FWBjrgQKBgQCj\nkP3WRjDQipJ7DkEdLo9PaJ/EiOND60/m6BCzhGTvjVUt4M22XbFSiRrhXTB8W189\noZ2xrGBCNQ54V7bjE+tBQEQbC8rdnNAtR6kVrzyoU6xzLXp6Wq2nqLnUc4+bQypT\nBscVVfmO6stt+v5Iomvh+l+x05hAjVZh8Sog0AxzdQKBgQCMgMTXt0ZBs0ScrG9v\np5CGa18KC+S3oUOjK/qyACmCqhtd+hKHIxHx3/FQPBWb4rDJRsZHH7C6URR1pHzJ\nmhCWgKGsvYrXkNxtiyPXwnU7PNP9JNuCWa45dr/vE/uxcbccK4JnWJ8+Kk/9LEX0\nmjtDm7wtLVlTswYhP6AP69RoMQ==\n-----END PRIVATE KEY-----\n", - "client_email": "my-sa-313@caramel-goat-354919.iam.gserviceaccount.com", - "client_id": "103735491955093092925", - "auth_uri": "https://accounts.google.com/o/oauth2/auth", - "token_uri": "https://oauth2.googleapis.com/token", - "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", - "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/my-sa-313%40caramel-goat-354919.iam.gserviceaccount.com" -} -``` - -Save this JSON file as `gcp-credentials.json`. - -### Create a Kubernetes secret with GCP credentials -Use `kubectl create secret -n upbound-system` to generate the Kubernetes secret object inside the Universal Crossplane cluster. - -`kubectl create secret generic gcp-secret -n upbound-system --from-file=creds=./gcp-credentials.json` - -View the secret with `kubectl describe secret` -```shell -$ kubectl describe secret gcp-secret -n upbound-system -Name: gcp-secret -Namespace: upbound-system -Labels: -Annotations: - -Type: Opaque - -Data -==== -creds: 2334 bytes -``` -## Create a ProviderConfig -Create a `ProviderConfig` Kubernetes configuration file to attach the GCP credentials to the installed official `provider-gcp`. - -**Note:** the `ProviderConfig` must contain the correct GCP project ID. The project ID must match the `project_id` from the JSON key file. - -```yaml -apiVersion: gcp.upbound.io/v1beta1 -kind: ProviderConfig -metadata: - name: default -spec: - projectID: - credentials: - source: Secret - secretRef: - namespace: upbound-system - name: gcp-secret - key: creds -``` - -Apply this configuration with `kubectl apply -f`. - -**Note:** the `ProviderConfig` value `spec.secretRef.name` must match the `name` of the secret in `kubectl get secrets -n upbound-system` and `spec.secretRef.key` must match the value in the `Data` section of the secret. - -Verify the `ProviderConfig` with `kubectl describe providerconfigs`. - -```yaml -$ kubectl describe providerconfigs -Name: default -Namespace: -API Version: gcp.upbound.io/v1beta1 -Kind: ProviderConfig -# Output truncated -Spec: - Credentials: - Secret Ref: - Key: creds - Name: gcp-secret - Namespace: upbound-system - Source: Secret - Project ID: caramel-goat-354919 -``` - -## Create a managed resource -Create a managed resource to verify the `provider-gcp` is functioning. - -This example creates a GCP storage bucket, which requires a globally unique name. - -Generate a unique bucket name from the command line. - -`echo "upbound-bucket-"$(head -n 4096 /dev/urandom | openssl sha1 | tail -c 10)` - -For example -``` -$ echo "upbound-bucket-"$(head -n 4096 /dev/urandom | openssl sha1 | tail -c 10) -upbound-bucket-21e85e732 -``` - -Use this bucket name for `metadata.annotations.crossplane.io/external-name` value. - -Create a `Bucket` configuration file. Replace `` with the `upbound-bucket-` generated name. - -```yaml -apiVersion: storage.gcp.upbound.io/v1beta1 -kind: Bucket -metadata: - name: example - labels: - annotations: - crossplane.io/external-name: -spec: - forProvider: - location: US - storageClass: MULTI_REGIONAL - providerConfigRef: - name: default - deletionPolicy: Delete -``` - -**Note:** the `spec.providerConfigRef.name` must match the `ProviderConfig` `metadata.name` value. - -Apply this configuration with `kubectl apply -f`. - -Use `kubectl get managed` to verify bucket creation. - -```shell -$ kubectl get bucket -NAME READY SYNCED EXTERNAL-NAME AGE -example True True upbound-bucket-4a917c947 90s -``` - -Provider created the bucket when the values `READY` and `SYNCED` are `True`. - -If the `READY` or `SYNCED` are blank or `False` use `kubectl describe` to understand why. - -Here is an example of a failure because the `Bucket` `spec.providerConfigRef.name` value doesn't match the `ProviderConfig` `metadata.name`. - -```shell -$ kubectl describe bucket -Name: example -Namespace: -Labels: -Annotations: crossplane.io/external-name: upbound-bucket-4a917c947 -API Version: storage.gcp.upbound.io/v1beta1 -Kind: Bucket -# Output truncated -Spec: - Deletion Policy: Delete - For Provider: - Location: US - Storage Class: MULTI_REGIONAL - Provider Config Ref: - Name: default -Status: - At Provider: - Conditions: - Last Transition Time: 2022-07-26T19:29:35Z - Message: connect failed: cannot get terraform setup: cannot get referenced ProviderConfig: ProviderConfig.gcp.upbound.io "default" not found - Reason: ReconcileError - Status: False - Type: Synced -Events: - Type Reason Age From Message - ---- ------ ---- ---- ------- - Warning CannotConnectToProvider 7s (x5 over 20s) managed/storage.gcp.upbound.io/v1beta1, kind=bucket cannot get terraform setup: cannot get referenced ProviderConfig: ProviderConfig.gcp.upbound.io "default" not found -``` - -The output indicates the `Bucket` is using `ProviderConfig` named `default`. The applied `ProviderConfig` is `my-config`. - -```shell -$ kubectl get providerconfigs -NAME AGE -my-config 56s -``` - -## Delete the managed resource -Remove the managed resource by using `kubectl delete -f` with the same `Bucket` object file. Verify the removal of the bucket with `kubectl get bucket`. - -```shell -$ kubectl get bucket -No resources found -``` diff --git a/docs/monolith/index.json b/docs/monolith/index.json deleted file mode 100755 index 1e113e8db..000000000 --- a/docs/monolith/index.json +++ /dev/null @@ -1,10 +0,0 @@ -[ - { - "name": "Quickstart", - "location": "Quickstart.md" - }, - { - "name": "Configuration", - "location": "Configuration.md" - } -] \ No newline at end of file