Skip to content

Commit 5c79f8e

Browse files
committed
docs: update docs for GCP implementation
1 parent 5b322f9 commit 5c79f8e

File tree

4 files changed

+229
-205
lines changed

4 files changed

+229
-205
lines changed

README.md

Lines changed: 68 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
66
<!-- omit from toc -->
77

8-
# CNOE Azure Reference Implementation
8+
# CNOE GCP Reference Implementation
99

10-
This repository provides a reference implementation for deploying Cloud Native Operations Enabler (CNOE) components on Azure Kubernetes Service (AKS) using GitOps principles.
10+
This repository provides a reference implementation for deploying Cloud Native Operations Enabler (CNOE) components on Google Kubernetes Engine (GKE) using GitOps principles.
1111

1212
<!-- omit from toc -->
1313

@@ -68,37 +68,39 @@ This repository provides a reference implementation for deploying Cloud Native O
6868

6969
## Important Notes
7070

71-
- **Azure Resource Management**: This repository does not manage Azure infrastructure. AKS cluster and DNS zone must be provisioned separately using your organization's infrastructure management approach.
72-
- **Production Readiness**: The helper tasks in this repository are for creating Azure resources for demo purposes only. Any production deployments should follow enterprise infrastructure management practices.
71+
- **GCP Resource Management**: This repository does not manage GCP infrastructure. GKE cluster and Cloud DNS zone must be provisioned separately using your organization's infrastructure management approach.
72+
- **Production Readiness**: The helper tasks in this repository are for creating GCP resources for demo purposes only. Any production deployments should follow enterprise infrastructure management practices.
7373
- **Configuration Management**: All configuration is centralised in `config.yaml`. The `private/` directory is only for temporary files during development.
74-
- **Bootstrap Approach**: The installation uses a local Kind cluster to bootstrap the installation to the target AKS cluster. The Kind cluster can be deleted after installation is complete.
74+
- **Bootstrap Approach**: The installation uses a local Kind cluster to bootstrap the installation to the target GKE cluster. The Kind cluster can be deleted after installation is complete.
7575

7676
## Prerequisites
7777

78-
### Required Azure Resources
78+
### Required GCP Resources
7979

80-
Before using this reference implementation, you **MUST** have the following Azure resources already created and configured:
80+
Before using this reference implementation, you **MUST** have the following GCP resources already created and configured:
8181

82-
1. **AKS Cluster** (1.27+) with:
83-
- OIDC Issuer enabled (`--enable-oidc-issuer`)
84-
- Workload Identity enabled (`--enable-workload-identity`)
82+
1. **GKE Cluster** (1.27+) with:
83+
- Workload Identity enabled
8584
- Sufficient node capacity for all components
86-
- For example, the demonstration AKS cluster created with the helper task `test:aks:create` has node pool with the node size set to `standard_d4alds_v6` by default
87-
2. **Azure DNS Zone**
88-
- A registered domain with Azure DNS as the authoritative DNS service
85+
- For example, a demonstration GKE cluster should have nodes with at least 4 vCPUs and 16GB memory
86+
2. **Cloud DNS Zone**
87+
- A registered domain with Cloud DNS as the authoritative DNS service
88+
3. **GCP Secret Manager**
89+
- A Secret Manager instance for storing configuration secrets and certificates
8990

9091
> **Important**:
9192
>
92-
> - All Azure resources must be in the same subscription and resource group
93-
> - Azure Key Vault and Crossplane Workload Identity are **NO LONGER** prerequisites - they will be created automatically during installation
94-
> - These resources are prerequisites and must be provisioned using your organisation's preferred infrastructure management approach (Terraform, Bicep, ARM templates, etc.). The tasks in this repository that create Azure resources (`test:aks:create`, etc.) are helper functions for demonstration purposes only and are **NOT recommended for production deployments**.
93+
> - All GCP resources must be in the same project and region
94+
> - GCP Secret Manager and Crossplane Workload Identity are prerequisites for secure authentication
95+
> - These resources must be provisioned using your organisation's preferred infrastructure management approach (Terraform, Deployment Manager, gcloud CLI, etc.). The tasks in this repository that create GCP resources are helper functions for demonstration purposes only and are **NOT recommended for production deployments**.
9596
96-
#### Setup Guidance for Azure Resources
97+
#### Setup Guidance for GCP Resources
9798

98-
For setting up the prerequisite Azure resources, refer to the official Azure documentation:
99+
For setting up the prerequisite GCP resources, refer to the official GCP documentation:
99100

100-
- [Create an AKS cluster](https://docs.microsoft.com/en-us/azure/aks/kubernetes-walkthrough)
101-
- [Azure DNS zones](https://docs.microsoft.com/en-us/azure/dns/)
101+
- [Create a GKE cluster](https://cloud.google.com/kubernetes-engine/docs/how-to/creating-a-zonal-cluster)
102+
- [Cloud DNS zones](https://cloud.google.com/dns/docs/zones)
103+
- [Secret Manager](https://cloud.google.com/secret-manager/docs)
102104

103105
### GitHub Integration Setup
104106

@@ -135,18 +137,18 @@ Save the token value temporarily as you will need it when creating the `config.y
135137

136138
## Installation Flow
137139

138-
The installation process follows this new pattern using a local Kind cluster as bootstrap:
140+
The installation process follows this pattern using a local Kind cluster as bootstrap:
139141

140142
1. Configure your environment settings in `config.yaml`
141-
2. Set up Azure credentials in `private/azure-credentials.json`
143+
2. Set up GCP credentials (service account key)
142144
3. Run `task install` which:
143145
- Creates a local Kind cluster using the configuration in `kind.yaml`
144146
- Deploys components to Kind cluster via Helmfile as specified in `bootstrap-addons.yaml`
145-
- Crossplane on Kind cluster connects to Azure and creates necessary cloud resources:
147+
- Crossplane on Kind cluster connects to GCP and manages cloud resources:
146148
- Crossplane Workload Identity
147-
- Azure Key Vault
149+
- Secret Manager secrets
148150
- DNS records (`*.local.<domain>`) for observing local installation
149-
- Deploys CNOE components to the target AKS cluster via ArgoCD
151+
- Deploys CNOE components to the target GKE cluster via ArgoCD
150152
4. Monitor installation progress via local ArgoCD at `argocd.local.<domain>` and Crossplane at `crossplane.local.<domain>`
151153
5. Once installation is complete, the local Kind cluster is no longer needed
152154

@@ -160,25 +162,25 @@ erDiagram
160162
"Taskfile" ||--o{ "Helmfile" : "3. deploys to Kind"
161163
"Helmfile" ||--o{ "ArgoCD (Kind)" : "4. installs locally"
162164
"ArgoCD (Kind)" ||--o{ "Crossplane (Kind)" : "5. installs"
163-
"Crossplane (Kind)" ||--o{ "Azure Resources" : "6. creates"
164-
"ArgoCD (Kind)" ||--o{ "AKS Cluster" : "7. deploys CNOE"
165+
"Crossplane (Kind)" ||--o{ "GCP Resources" : "6. manages"
166+
"ArgoCD (Kind)" ||--o{ "GKE Cluster" : "7. deploys CNOE"
165167
```
166168

167169
## Security Notes
168170

169171
- GitHub App credentials contain sensitive information - handle with care
170-
- Azure credentials are stored in `private/azure-credentials.json` (copy from your Azure credential)
171-
- Configuration secrets are stored in Azure Key Vault (created automatically)
172-
- Workload Identity is used for secure Azure authentication (created automatically)
172+
- GCP service account credentials should be handled securely
173+
- Configuration secrets are stored in GCP Secret Manager
174+
- Workload Identity is used for secure GCP authentication
173175
- TLS encryption is used for all external traffic
174176

175177
## Installation Steps
176178

177179
### Installation Requirements
178180

179-
- **Azure CLI** (2.13+) with subscription access
181+
- **gcloud CLI** with project access
180182
- **kubectl** (1.27+)
181-
- **kubelogin** for AKS authentication
183+
- **gke-gcloud-auth-plugin** for GKE authentication
182184
- **yq** for YAML processing
183185
- **helm** (3.x)
184186
- **helmfile**
@@ -192,27 +194,31 @@ erDiagram
192194
Copy and customise the configuration:
193195

194196
```bash
195-
cp config.yaml.template config.yaml
197+
cp config.template.yaml config.yaml
196198
# Edit config.yaml with your values
197199
```
198200

199-
Set up Azure credentials:
201+
Set up GCP credentials:
200202

201203
```bash
202-
# Copy your Azure credentials to the private directory
203-
cp private/azure-credentials.template.json private/azure-credentials.json
204-
# Edit private/azure-credentials.json with your actual Azure credentials
204+
# Authenticate with GCP
205+
gcloud auth login
206+
gcloud config set project YOUR_PROJECT_ID
207+
208+
# Create and download service account key if needed
209+
gcloud iam service-accounts keys create private/gcp-credentials.json \
210+
--iam-account=YOUR_SERVICE_ACCOUNT@YOUR_PROJECT.iam.gserviceaccount.com
205211
```
206212

207213
Key configuration sections in `config.yaml`:
208214

209-
- `repo`: The details of the repository hosting the reference azure implementation code
210-
- `cluster_name`: Your AKS cluster name
211-
- `subscription`: Your Azure subscription ID
212-
- `location`: The target Azure region
213-
- `resource_group`: Your Azure resource group
214-
- `cluster_oidc_issuer_url`: The AKS OIDC issuer URL
215-
- `domain`: The base domain name you will be using for exposing services
215+
- `repo`: The details of the repository hosting the reference GCP implementation code
216+
- `cluster_name`: Your GKE cluster name
217+
- `project`: Your GCP project ID
218+
- `region`: The target GCP region
219+
- `dns_zone`: Your Cloud DNS zone name
220+
- `dns_domain`: The base domain name you will be using for exposing services
221+
- `secret_manager`: GCP Secret Manager name for storing configuration secrets
216222
- `github`: GitHub App credentials (from the [Github Integration Setup](#github-integration-setup))
217223

218224
#### DNS and TLS Configuration
@@ -245,7 +251,7 @@ task install
245251

246252
> **Notes**:
247253
>
248-
> - `task install` will create a local Kind cluster and use it to bootstrap the installation to your AKS cluster
254+
> - `task install` will create a local Kind cluster and use it to bootstrap the installation to your GKE cluster
249255
> - Post-installation, use `task apply` (the equivalent to running `helmfile apply`) to apply updates. See the [Task Usage Guidelines](docs/TASKFILE.md) for more information.
250256
251257
### 3. Monitor Installation
@@ -263,22 +269,22 @@ During installation, you can monitor progress using the local Kind cluster:
263269
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
264270
```
265271

266-
Once the AKS installation is complete, you can also access ArgoCD on the target cluster:
272+
Once the GKE installation is complete, you can also access ArgoCD on the target cluster:
267273

268274
```bash
269-
# Switch to AKS cluster context
270-
task kubeconfig:set-context:aks
275+
# Switch to GKE cluster context
276+
task kubeconfig:set-context:gke
271277

272278
# Get ArgoCD admin password
273279
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
274280

275-
# Access ArgoCD (running on AKS cluster)
281+
# Access ArgoCD (running on GKE cluster)
276282
# Navigate to: https://argocd.<your-domain>
277283
```
278284

279285
### 4. Get Access URLs
280286

281-
Use the `task get:urls` command to fetch all the URLs from the target AKS cluster:
287+
Use the `task get:urls` command to fetch all the URLs from the target GKE cluster:
282288

283289
```bash
284290
task get:urls
@@ -302,11 +308,11 @@ The URL structure of the URLs will depend on the type of routing you set in the
302308

303309
### 5. Access Backstage
304310

305-
Once the Keycloak and Backstage are installed on the target AKS cluster, check you can login to the Backstage UI with a default user:
311+
Once the Keycloak and Backstage are installed on the target GKE cluster, check you can login to the Backstage UI with a default user:
306312

307313
```bash
308-
# Switch to AKS cluster context
309-
task kubeconfig:set-context:aks
314+
# Switch to GKE cluster context
315+
task kubeconfig:set-context:gke
310316

311317
# Get user password
312318
kubectl -n keycloak get secret keycloak-config -o yaml | yq '.data.USER1_PASSWORD | @base64d'
@@ -327,14 +333,14 @@ Backstage templates can be found in the `templates/` directory
327333
## Uninstall
328334

329335
```bash
330-
# Remove all components and clean up Azure resources
336+
# Remove all components and clean up GCP resources
331337
task uninstall
332338

333339
# Clean up GitHub App and tokens manually
334340
# Delete the GitHub organisation if no longer needed
335341
```
336342

337-
> **Note**: The `task uninstall` command will clean up both the local Kind cluster and remove CNOE components from the target AKS cluster. Azure resources created by Crossplane (Key Vault, Workload Identity) will also be cleaned up automatically.
343+
> **Note**: The `task uninstall` command will clean up both the local Kind cluster and remove CNOE components from the target GKE cluster. GCP resources managed by Crossplane will also be cleaned up automatically.
338344
339345
## Contributing
340346

@@ -350,16 +356,17 @@ See [TROUBLESHOOTING.md](docs/TROUBLESHOOTING.md) for common issues and detailed
350356

351357
## Potential Enhancements
352358

353-
The installation of this Azure reference implementation will give you a starting point for the platform, however as previously stated applications deployed in this repository are not meant or configured for production. To push it towards production ready, you can make further enhancements that could include:
359+
The installation of this GCP reference implementation will give you a starting point for the platform, however as previously stated applications deployed in this repository are not meant or configured for production. To push it towards production ready, you can make further enhancements that could include:
354360

355-
1. Modifying the basic and Argo workflow templates for your specific Azure use cases
356-
2. Integrating additional Azure services with Crossplane
357-
3. Configuring auto-scaling for AKS and Azure resources
361+
1. Modifying the basic and Argo workflow templates for your specific GCP use cases
362+
2. Integrating additional GCP services with Crossplane (Cloud Storage, Cloud SQL, Pub/Sub, etc.)
363+
3. Configuring auto-scaling for GKE and GCP resources
358364
4. Adding OPA Gatekeeper for governance
359365
5. Integrating a monitoring stack. For example:
360366
1. Deploy Prometheus and Grafana
361-
2. Configure service monitors for Azure resources
362-
3. View metrics and Azure resource status in Backstage
367+
2. Configure service monitors for GCP resources
368+
3. View metrics and GCP resource status in Backstage
369+
4. Integrate with Google Cloud Monitoring (formerly Stackdriver)
363370
6. Implementing GitOps-based environment promotion:
364371
1. **Development**: Deploy to dev environment via Git push
365372
2. **Testing**: Promote to test environment via ArgoCD

docs/DEMO.md

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
<!-- omit from toc -->
2-
# Demo Guide - CNOE Azure Reference Implementation
32

4-
This guide demonstrates the key features and capabilities of the CNOE Azure Reference Implementation through practical examples focused on Azure services and infrastructure.
3+
# Demo Guide - CNOE GCP Reference Implementation
4+
5+
This guide demonstrates the key features and capabilities of the CNOE GCP Reference Implementation through practical examples focused on GCP services and infrastructure.
56

67
<!-- omit from toc -->
8+
79
## Best Practices Demonstrated
810

911
### 1. GitOps Workflow
@@ -14,10 +16,10 @@ This guide demonstrates the key features and capabilities of the CNOE Azure Refe
1416

1517
### 2. Security
1618

17-
- Workload Identity for Azure authentication
19+
- Workload Identity for GCP authentication
1820
- Secret management with External Secrets
1921
- TLS everywhere with cert-manager
20-
- Configuration stored securely in Azure Key Vault
22+
- Configuration stored securely in GCP Secret Manager
2123

2224
### 3. Developer Experience
2325

@@ -33,6 +35,7 @@ This guide demonstrates the key features and capabilities of the CNOE Azure Refe
3335
- Centralized configuration management
3436

3537
<!-- omit from toc -->
38+
3639
## Table of Contents
3740

3841
- [Prerequisites](#prerequisites)
@@ -51,15 +54,15 @@ This guide demonstrates the key features and capabilities of the CNOE Azure Refe
5154
## Prerequisites
5255

5356
- Complete installation following the instructions in the [README.md](../README.md) file
54-
- All prerequisite Azure resources (AKS cluster, DNS zone, Key Vault) are properly configured
57+
- All prerequisite GCP resources (GKE cluster, Cloud DNS zone, Secret Manager) are properly configured
5558
- Access to Backstage UI at your configured domain
5659
- Default user (`user1`) credentials from Keycloak
5760

5861
## Getting Started: Explore the Platform
5962

6063
After you installed the platform, before performing any operations/scenarios we recommend you first explore the platform.
6164

62-
This section will provide you with instructions on you can access the UI for each component for you to explore.
65+
This section will provide you with instructions on you can access the UI for each component for you to explore.
6366

6467
To begin the `task get:urls` command can be used to fetch all the URLs.
6568

@@ -123,7 +126,7 @@ See the [Backstage Documentation](https://backstage.io/docs/) for more informati
123126

124127
### Scenario 1: Creating a New Application from Template
125128

126-
@TODO creating templates for Azure is still to be completed [link to issue to be attached]
129+
@TODO creating templates for GCP is still to be completed [link to issue to be attached]
127130

128131
## Reading Material
129132

@@ -134,7 +137,7 @@ Previously linked reading material and more:
134137
- [Argo Workflows Examples](https://github.com/argoproj/argo-workflows/tree/master/examples)
135138
- [Crossplane Documentation](https://docs.crossplane.io/)
136139
- [CNOE Project](https://cnoe.io/)
137-
- [Azure Workload Identity](https://azure.github.io/azure-workload-identity/)
140+
- [GCP Workload Identity](https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity)
138141

139142
## Feedback and Contributions
140143

0 commit comments

Comments
 (0)