Add comprehensive guides for gcloud setups;
include instructions for cluster creation, smoke testing, and infrastructure management.
This commit is contained in:
parent
0240a32266
commit
2804824444
13 changed files with 403 additions and 0 deletions
95
src/content/docs/guides/3. gcloud/020-create-gcloud-infra.md
Normal file
95
src/content/docs/guides/3. gcloud/020-create-gcloud-infra.md
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
---
|
||||
title: Create gcloud infrastructure
|
||||
description: A guide to creating gcloud infrastructure.
|
||||
---
|
||||
|
||||
Clone the `infctl` repo if you have not yet done so. We will work on the assumption that we are working in a home directory called `projects`.
|
||||
|
||||
```bash
|
||||
cd ~/projects
|
||||
|
||||
if [ ! -d "infctl-cli" ]; then
|
||||
git clone https://codeberg.org/headshed/infctl-cli
|
||||
cd infctl-cli
|
||||
else
|
||||
cd infctl-cli
|
||||
fi
|
||||
```
|
||||
|
||||
we need to configure some environment variables to let our build know some things about our project.
|
||||
|
||||
```bash
|
||||
cp .env.gcloud-example .env
|
||||
```
|
||||
|
||||
edit our newly created `.env` file and give it values that are appropriate to our gcloud account, for example:
|
||||
|
||||
```
|
||||
PROJECT_NAME="my-very-own-dev-lab"
|
||||
EMAIL="your.email@mailsomewhere.com"
|
||||
APP_DOMAIN_NAME="atestdr.yourdomain.com"
|
||||
```
|
||||
|
||||
where each of these variables represent:
|
||||
* your project name, often called the project id in gcloud
|
||||
* your email that you wish to be identified with for DNS and TLS encryption
|
||||
* the domain name you want to use for this project when it is on line
|
||||
|
||||
Activate these in the current shell with:
|
||||
|
||||
```bash
|
||||
source .env
|
||||
```
|
||||
|
||||
Before we go any further, we need to confirm we have our gcloud environment ready and configured:
|
||||
|
||||
```bash
|
||||
gcloud compute instances list --project="$PROJECT_NAME" \
|
||||
&& gcloud compute disks list --project="$PROJECT_NAME" \
|
||||
&& gcloud compute firewall-rules list --project="$PROJECT_NAME" \
|
||||
&& gcloud storage buckets list --project="$PROJECT_NAME"
|
||||
```
|
||||
|
||||
We should see pretty much an empty list but for default rules assigned for us by Google to our project to accept SSH, RDP and ICMP traffic - 4 lines in all.
|
||||
|
||||
To build the infrastructure :
|
||||
|
||||
```bash
|
||||
LOGFORMAT=none infctl -f gcloud/tf/scripts/build-gcloud-k3s-pipeline.json
|
||||
```
|
||||
You should see a successful build ending with something like:
|
||||
|
||||
```bash
|
||||
Apply complete! Resources: 0 added, 0 changed, 0 destroyed.
|
||||
|
||||
Outputs:
|
||||
k3s_vm_public_ip = "xxx.xxx.xxx.xxx"
|
||||
project_number = "..233434.."
|
||||
✅ Step completed: run tofu
|
||||
✅ 🚀 Pipeline completed successfully
|
||||
```
|
||||
|
||||
Take a note of public IP address assigned to your VM as in `xxx.xxx.xxx.xxx` in the above example.
|
||||
|
||||
You need to create an `A record` in your DNS console to point to this address, using the environment name you set for your app earlier
|
||||
|
||||
```bash
|
||||
echo $APP_DOMAIN_NAME
|
||||
<whatever you set your application full domain name to>
|
||||
```
|
||||
|
||||
### Setting an A Record in your chosen or Cloudflare DNS
|
||||
|
||||
If you are using Cloudflare DNS, you can follow the below or use as a guide for your chosen DNS console...
|
||||
|
||||
1. Log in to your Cloudflare dashboard.
|
||||
2. Select your domain.
|
||||
3. Go to the **DNS** tab.
|
||||
4. Click **Add record**.
|
||||
5. Choose **A** as the record type.
|
||||
6. Enter your subdomain (e.g., `atestdr`) in the **Name** field.
|
||||
7. Enter your VM's public IP address in the **IPv4 address** field.
|
||||
8. Set the record to be DNS only and a low TTL, for example 5 min.
|
||||
9. Click **Save**.
|
||||
|
||||
Your domain should now point to your VM's public IP.
|
||||
Loading…
Add table
Add a link
Reference in a new issue