{"id":24484107,"url":"https://github.com/meteorops/crossplane-aws-provider-bootstrap","last_synced_at":"2025-04-13T18:08:20.823Z","repository":{"id":258588692,"uuid":"819009985","full_name":"MeteorOps/crossplane-aws-provider-bootstrap","owner":"MeteorOps","description":"Deploy resources on AWS using Crossplane \u0026 Helm","archived":false,"fork":false,"pushed_at":"2024-10-30T14:35:33.000Z","size":23,"stargazers_count":13,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2024-10-30T15:33:23.645Z","etag":null,"topics":["aws","crossplane","devops","helm","kubernetes"],"latest_commit_sha":null,"homepage":"https://www.meteorops.com/blog/deploy-aws-resources-using-crossplane-on-kubernetes","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MeteorOps.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-06-23T14:17:10.000Z","updated_at":"2024-10-30T14:38:19.000Z","dependencies_parsed_at":"2024-10-19T18:11:58.131Z","dependency_job_id":"eb1c5794-9029-4bcd-8df6-0bc3c88dac5a","html_url":"https://github.com/MeteorOps/crossplane-aws-provider-bootstrap","commit_stats":null,"previous_names":["meteorops/crossplane-aws-provider-bootstrap"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MeteorOps%2Fcrossplane-aws-provider-bootstrap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MeteorOps%2Fcrossplane-aws-provider-bootstrap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MeteorOps%2Fcrossplane-aws-provider-bootstrap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MeteorOps%2Fcrossplane-aws-provider-bootstrap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MeteorOps","download_url":"https://codeload.github.com/MeteorOps/crossplane-aws-provider-bootstrap/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234954518,"owners_count":18912757,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","crossplane","devops","helm","kubernetes"],"created_at":"2025-01-21T13:13:41.355Z","updated_at":"2025-01-21T13:13:41.789Z","avatar_url":"https://github.com/MeteorOps.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# crossplane-aws-provider-bootstrap\n\nPrerequisites\n- kubectl\n- helm\n- Existing k8s cluster or kind\n- aws account with access key and secret key and sufficient permissions\n\nIf using kind:\n\n`kind create cluster`\n\nMay need to run this as well:\n\n`kubectl cluster-info --context kind-kind`\n\nIf used kind delete the cluster in the end:\n\n`kind delete cluster`\n\n## Article #1\n\nInstall crossplane:\n=======\nStep-by-step guide and files to deploy Crossplane on AWS EKS and start using it to deploy AWS resources.  \nThis repository is used by the [\"Deploy AWS Resources using Crossplane on Kubernetes\"](https://www.meteorops.com/blog/deploy-aws-resources-using-crossplane-on-kubernetes) blog post.\n\n### Deploy Crossplane\n\n`helm repo add crossplane-stable https://charts.crossplane.io/stable`\n\n`helm install crossplane crossplane-stable/crossplane --namespace crossplane-system --create-namespace`\n\n### Deploy the AWS Provider\n\nInsert your AWS credentials to the creds file and run the following from the same folder:\n\n`kubectl create secret generic aws-credentials -n crossplane-system --from-file=creds=./creds`\n\nInstall aws provider bootstrap:\n\n`kubectl apply -f crossplane-provider-bootstrap.yaml`\n\nWait for provider to be ready:\n\n`kubectl get provider`\n\nInstall aws provider config:\n\n`kubectl apply -f crossplane-provider-conf.yaml`\n\nApply composite bucket definitions:\n\n`kubectl apply -f bucket-definitions.yaml`\n\nApply composite bucket crd:\n\n`kubectl apply -f bucket-crd.yaml`\n\n### Create an AWS Resource using Crossplane (S3 Bucket Example)\n\nCreate a bucket:\n\n`kubectl apply -f bucket-example.yaml`\n\nCheck that bucket is created:\n\n`kubectl get mys3bucket`\n\nor\n\n`kubectl get bucket`\n\nClean, delete the bucket:\n\n`kubectl delete -f bucket-example.yaml`\n\n### Useful Debugging Commands\n\n`kubectl get provider`\n\n`kubectl logs -n crossplane-system deploy/crossplane -c crossplane`\n\n`kubectl logs -n crossplane-system -l pkg.crossplane.io/provider=provider-aws`\n\n## Article #2\n\nFor the Crossplane Kubernetes Provider, insert your AWS credentials to the creds file and run the following from the same folder:\n\n```bash\nkubectl create secret generic aws-creds \\\n--from-literal=aws_access_key_id=$(grep -i aws_access_key_id creds | awk -F' = ' '{print $2}') \\\n--from-literal=aws_secret_access_key=$(grep -i aws_secret_access_key creds | awk -F' = ' '{print $2}')\n```\n### Install the k8s-provider-bootstrap file\nIt deploys the following resources to setup the Crossplane Kubernetes Provider: ServiceAccount, Provider (Crossplane), ClusterRole, ClusterRoleBinding.\nNote that it could also be a Helm Provider if you want to use Helm instead of direct Kubernetes resources for the application part.\n\n`kubectl apply -f k8s-provider-bootstrap.yaml`\n\nWait for k8s provider to be ready:\n\n`kubectl get providers`\n\nInstall k8s provider config (points to the cluster on which the Provider is deployed, but could be pointed at other clusters as well):\n\n`kubectl apply -f k8s-provider-conf.yaml`\n\nApply composite app definitions:\n\n`kubectl apply -f composite-app-xrd.yaml`\n\nApply composite app crd:\n\n`kubectl apply -f composite-app-composition.yaml`\n\nCreate a composite app:\n\n`kubectl apply -f composite-app-example.yaml`\n\nCheck that composite app is created:\n\n`kubectl get K8sApplication`\n\nCheck in the logs composite app is can list the bucket that was created:\n\n`kubectl logs -l app=awscli`\n\nClean, delete the composite app:\n\n`kubectl delete -f composite-app-example.yaml`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeteorops%2Fcrossplane-aws-provider-bootstrap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmeteorops%2Fcrossplane-aws-provider-bootstrap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeteorops%2Fcrossplane-aws-provider-bootstrap/lists"}