# Set Up and Configure a Cloud Environment in Google Cloud

### **Task 1: Create development VPC manually**

```
gcloud compute networks create griffin-dev-vpc --subnet-mode custom
```

```
gcloud compute networks subnets create griffin-dev-wp --network=griffin-dev-vpc --region us-east1 --range=192.168.16.0/20
```

```
gcloud compute networks subnets create griffin-dev-mgmt --network=griffin-dev-vpc --region us-east1 --range=192.168.32.0/20
```

### **Task 2: Create production VPC using Deployment Manager**

```
gsutil cp -r gs://cloud-training/gsp321/dm .
```

```
cd dm
```

```
sed -i s/SET_REGION/us-east1/g prod-network.yaml
```

```
gcloud deployment-manager deployments create prod-network \
    --config=prod-network.yaml
```

### **Task 3: Create bastion host**

```
cd ..
```

```
gcloud compute instances create bastion --network-interface=network=griffin-dev-vpc,subnet=griffin-dev-mgmt  --network-interface=network=griffin-prod-vpc,subnet=griffin-prod-mgmt --tags=ssh --zone=us-east1-b
```

```
gcloud compute firewall-rules create fw-ssh-dev --source-ranges=0.0.0.0/0 --target-tags ssh --allow=tcp:22 --network=griffin-dev-vpc
```

```
gcloud compute firewall-rules create fw-ssh-prod --source-ranges=0.0.0.0/0 --target-tags ssh --allow=tcp:22 --network=griffin-prod-vpc
```

### **Task 4: Create and configure Cloud SQL Instance**

```
gcloud sql instances create griffin-dev-db --root-password password --region=us-east1
```

```
gcloud sql connect griffin-dev-db (Enter password: password)
```

```
CREATE DATABASE wordpress;
GRANT ALL PRIVILEGES ON wordpress.* TO "wp_user"@"%" IDENTIFIED BY "stormwind_rules";
FLUSH PRIVILEGES;
```

```
exit;
```

### **Task 5: Create Kubernetes cluster**

```
gcloud container clusters create griffin-dev \
  --network griffin-dev-vpc \
  --subnetwork griffin-dev-wp \
  --machine-type n1-standard-4 \
  --num-nodes 2  \
  --zone us-east1-b
```

```
gcloud container clusters get-credentials griffin-dev --zone us-east1-b
```

### **Task 6: Prepare the Kubernetes cluster**

```
gsutil cp -r gs://cloud-training/gsp321/wp-k8s .
```

```
cd wp-k8s
```

```
sed -i s/username_goes_here/wp_user/g wp-env.yaml
```

```
sed -i s/password_goes_here/stormwind_rules/g wp-env.yaml
```

```
kubectl create -f wp-env.yaml
```

```
gcloud iam service-accounts keys create key.json \
    --iam-account=cloud-sql-proxy@$GOOGLE_CLOUD_PROJECT.iam.gserviceaccount.com
```

```
kubectl create secret generic cloudsql-instance-credentials \
    --from-file key.json
```

### **Task 7: Create a WordPress deployment**

```
cd ~/wp-k8s edit wp-deployment.yaml
```

```
Replace YOUR_SQL_INSTANCE with griffin-dev-db
```

```
kubectl create -f wp-deployment.yaml
```

```
kubectl create -f wp-service.yaml
```

### **Task 8: Enable monitoring**

1. Go to OPERATIONS > Monitoring

   a. Wait for the workspace creation to complete
2. Go to Uptime checks > CREATE UPTIME CHECKS
3. Now enter the info as below:

```
Title: WordPress Uptime
Check Type: HTTP
Resource Type: URL
Hostname: YOUR-WORDPRESS_ENDPOINT
Path: /
```

### **Task 9: Provide access for an additional engineer**

1. Go to IAM & Admin > ADD
2. Enter the second username and give him Project > Editor access in Role

*
*
* thub.com/gdsc-pdeu
* LinkedIn: <https://linkedin.com/company/developer-student-clubs-pdeu>
* Instagram: <https://www.instagram.com/dsc.pdeu/>

**GDSC Lead - Jay Gohil:**

* Website: <https://jay-gohil.me/>
* LinkedIn: <https://www.linkedin.com/in/jay--gohil/>
* GitHub: <https://github.com/gohil-jay>
* Instagram: <https://www.instagram.com/\\_jay.gohil/>

**GCP Facilitator - Jay Patel:**

* Website: <http://pateljay.me/>
* LinkedIn: <https://www.linkedin.com/in/--jaypatel--/>
* GitHub: <https://github.com/jaypatel31>
* Instagram: <https://www.instagram.com/jaypatel98196/>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://dailyjournal.gitbook.io/cloud-computing/qwiklabs-challenge-labs/set-up-and-configure-a-cloud-environment-in-google-cloud.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
