https://github.com/shalb/cdev-gcp-gke
Template to Deploy GKE with Cluster.dev
https://github.com/shalb/cdev-gcp-gke
Last synced: 3 months ago
JSON representation
Template to Deploy GKE with Cluster.dev
- Host: GitHub
- URL: https://github.com/shalb/cdev-gcp-gke
- Owner: shalb
- License: apache-2.0
- Created: 2021-10-27T11:28:15.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2023-09-17T18:21:31.000Z (over 1 year ago)
- Last Synced: 2025-01-23T04:41:37.571Z (5 months ago)
- Size: 34.2 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# GCP-GKE
Cluster.dev uses [stack templates](https://docs.cluster.dev/stack-templates-overview/) to generate users' projects in a desired cloud. GCP-GKE is a stack template that creates and provisions Kubernetes clusters in GCP cloud by means of Google Kubernetes Engine (GKE).
In this repository you will find all information and samples necessary to start an GKE cluster on GPC with Cluster.dev.
The resources to be created:
* VPC
* GKE Kubernetes cluster with addons:
* cert-manager
* ingress-nginx
* external-secrets (with GCP Secret Manager backend)
* external-dns
* argocd## Prerequisites
1. Terraform version >= 1.4
2. GCP account and project.
3. GCloud CLI installed and configured with your GCP account.
4. kubectl installed.
5. [Cluster.dev client installed](https://docs.cluster.dev/get-started-install/).
6. Parent Domain## Before you begin
1. [Create or select a Google Cloud project.](https://console.cloud.google.com/project)
```
gcloud projects create cdev-demo
gcloud config set project cdev-demo
```2. [Enable billing for your project.](https://support.google.com/cloud/answer/6293499#enable-billing)
3. [Enable the Google Kubernetes Engine API.](https://console.cloud.google.com/flows/enableapi?apiid=container,cloudresourcemanager.googleapis.com)
4. Enable Secret Manager
```
gcloud services enable secretmanager.googleapis.com
```## Quick Start
1. Clone example project:
```
git clone https://github.com/shalb/cdev-gcp-gke.git
cd examples/
```
2. Update project.yaml
```
name: demo-project
kind: Project
backend: default
variables:
organization: my-organization
project: cdev-demo
region: us-west1
state_bucket_name: gke-demo-state
state_bucket_prefix: demo
```
3. Create GCO bucket for terraform backend
```
gcloud projects create cdev-demo
gcloud config set project cdev-demo
gsutil mb gs://gke-demo-state
```
4. Edit variables in the example's files, if necessary.
5. Run `cdev plan`
6. Run `cdev apply`
7. Setup DNS delegation for subdomain by creating
NS records for subdomain in parent domain
Run `cdev output`
```
cdev output
12:58:52 [INFO] Printer: 'cluster.outputs', Output:
domain = demo.gcp.cluster.dev.
name_server = [
"ns-cloud-d1.googledomains.com.",
"ns-cloud-d2.googledomains.com.",
"ns-cloud-d3.googledomains.com.",
"ns-cloud-d4.googledomains.com."
]
region = us-west1
```
add records from name_server list8. Authorize cdev/terraform to interact with GCP via SDK
```
gcloud auth application-default login
```
9. Connect to GKE cluster
```
gcloud components install gke-gcloud-auth-plugin
gcloud container clusters get-credentials demo-cluster --zone us-west1-a --project cdev-demo
```
10. Retrieve ArgoCD admin password
install argocd cli
```
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo
```