Google Cloud Platform & Billing Account Setup

This guide walks you through setting up your Google Cloud Platform (GCP) Billing Account, creating deployment projects, and configuring proper IAM permissions to support your Milesoft Platform applications.


1. Overview & Tenancy Model

Downstream applications running on the Milesoft Platform are architected to run within single-tenant or client-owned Google Cloud projects. This model guarantees data isolation, regulatory compliance, and direct ownership of cloud infrastructure.

Because your application leverages managed Google Cloud services (such as Secret Manager, Cloud Pub/Sub, Cloud Tasks, Cloud Run, and Vertex AI), your organization must have an active Google Cloud Billing Account linked to your deployment projects.

💡 Why do I need my own Google Cloud Billing Account? A lot of platforms try to middleman your cloud infrastructure — they'll handle the hosting for you, but wrap it in hidden fees, hefty markups, and complex tier pricing. We don't believe in that.

With Milesoft, your Google Cloud bill is exactly that: your Google Cloud bill, paid directly to Google. No markup, no hidden premiums, and absolute transparency.

⚠️ Prerequisite Alert: Google Cloud billing account setup is usually instant (within minutes) when registering with a standard credit or debit card, or when verifying a US bank account directly. However, if your account is flagged for manual identity verification/document review (typically completed in under 4 hours but can take 1–2 business days), or if you verify your bank account via trial deposits (takes 3–5 business days), there can be a delay. We strongly advise initiating this process early on Day One of onboarding to avoid deployment delays.


2. Setup Guide

2.1 Step 1: Establish your Google Cloud Billing Account

If your organization does not already have an established Google Cloud Billing relationship, you must set up a self-serve or enterprise billing profile:

2.2 Step 2: Create and Link GCP Projects

For clean environment isolation, we recommend creating separate GCP Projects for your sandbox/staging environment (e.g., company-app-sand) and your production environment (e.g., company-app-prod):

  1. Create and Link the Projects: Follow our step-by-step guide in Section 3: Creating a New GCP Project & Linking Billing to set up and bind your projects entirely via the gcloud CLI or the Google Cloud Console.

2.3 Step 3: Best Practice — Configure Budgets & Alerts

To prevent unexpected cloud costs during development, training, or scaling phases, we highly recommend setting up budget alerts immediately after project linkage:

2.4 Step 4: Grant Billing Permissions to Your Admins

Ensure your operations or development lead has the appropriate IAM permission role (Billing Account User) to assign projects to the billing account:


3. Creating a New GCP Project & Linking Billing

Creating a project and enabling billing is a hard requirement before provisioning any Milesoft infrastructure or running the CLI commands. Below is the primary CLI approach using gcloud (highly recommended), followed by a manual web portal fallback.

3.1 Naming Conventions & Environment Best Practices

To ensure clean isolation of data, configurations, and secrets, we strongly recommend establishing a multi-project isolation model:

  • Sandbox / Development: [organization]-[app-name]-sand (e.g., acme-portal-sand)
  • Production: [organization]-[app-name]-prod (e.g., acme-portal-prod)

Project ID Rules & Constraints:

  • Must be 6 to 30 characters long.
  • Must start with a lowercase letter.
  • Can only contain lowercase letters, digits, and hyphens (-).
  • Must be globally unique across all of Google Cloud.

3.2 Recommended Path: Creating via gcloud CLI (100% Terminal-Based)

If you have already installed and authenticated your gcloud CLI (see Prerequisites), you can provision and link your project directly from your terminal.

Step 1: Create the Project

Run the project creation command, substituting your globally unique Project ID:

gcloud projects create "your-gcp-project-id" --name="My Sandbox Project"

Step 2: Retrieve your Billing Account ID

To link your billing account, you must first find your billing account's unique identifier. Run:

gcloud beta billing accounts list

Copy the ACCOUNT_ID from the output (typically a format like 01A2B3-C4D5E6-F7G8H9).

Step 3: Link Billing to your New Project

Run the following command to link the new project to your billing account:

gcloud beta billing projects link "your-gcp-project-id" --billing-account="YOUR_BILLING_ACCOUNT_ID"

Verification: To confirm the project is active and correctly linked, run:

gcloud beta billing projects list --billing-account="YOUR_BILLING_ACCOUNT_ID"

3.3 Fallback Path: Creating via the Google Cloud Console (Web Portal)

If you do not have the gcloud CLI installed or prefer a visual portal interface, you can perform these actions in your web browser.

Step 1: Create the Project in the Console

  1. Navigate directly to the Google Cloud Create Project Page.
  2. Enter a user-friendly Project Name (e.g., My Sandbox Project).
  3. Click the Edit button next to Project ID to manually customize it according to our naming conventions (e.g., company-app-sand). Do not use the auto-generated random ID, as it breaks naming patterns!
  4. Select your Billing Account if prompted, or choose your Organization/Location if applicable.
  5. Click Create.

Step 2: Link your Billing Account

If billing wasn't assigned during creation:

  1. Navigate to the Google Cloud Billing Projects Management Console.
  2. Locate your newly created project in the list of projects.
  3. Click the three dots menu (Actions) at the far right of the project row, and select Change Billing.
  4. In the dropdown, select your active Billing Account, and click Set Account.

4. How to Find Your GCP Project ID

When running Milesoft commands or configuring properties (such as milesoft init gcp --project "your-gcp-project-id"), you must provide your GCP Project ID.

4.1 Understanding Project Identifiers

  • Project Name (Do Not Use): A user-friendly, customizable display name (e.g., "My Sandbox Project"). This is not unique and cannot be resolved by the CLI.
  • Project ID (Use This): A globally unique, permanent string (e.g., company-app-sand or acme-dev-123456). It consists of lowercase letters, digits, and dashes, and is assigned when the project is created.
  • Project Number (Do Not Use): An auto-generated all-digit identifier (e.g., 45910284759).

4.2 Finding the ID via the Google Cloud Console

  1. Navigate and log in to the Google Cloud Console.
  2. In the top navigation bar, click the Project Project selector dropdown (next to the Google Cloud logo).
  3. In the modal dialog that appears, find your project in the list.
  4. Copy the exact value listed under the ID column (e.g., acme-sandbox-987):
    +-----------------------+---------------------+
    | Name                  | ID                  |
    +-----------------------+---------------------+
    | My Sandbox Project    | acme-sandbox-987    |  <-- Copy this ID!
    +-----------------------+---------------------+
    

4.3 Finding the ID via the gcloud CLI

If you have already installed and authenticated your gcloud CLI tool (see Prerequisites), run this command in your terminal:

gcloud projects list

The output will list all accessible projects and their unique identifiers:

PROJECT_ID          NAME                PROJECT_NUMBER
acme-sandbox-987    My Sandbox Project  45910284759     <-- Use the PROJECT_ID column