Google Cloud (GCP) Icons

Drawlib provides over 250 high-resolution (512×512) Google Cloud Platform (GCP) architecture icons via drawlib.icons.gcp, natively authored in Drawlib. Every service defaults to the unified 3-Tone Blue (variant="default") technical palette so full-stack topologies remain visually cohesive, while 19 Core Products and 26 Category icons also offer the Google 4-Color (variant="modern") palette.


1. Categorized GCP Icon Showcase

Every GCP service is available as gcp.<service_name>(xy, width, *, style, variant="default"):

gcp_1
Google Cloud Architecture Icons Across Core Categories (Default 3-Tone Blue Palette)
Source Code
from drawlib.canvas import save, setup
from drawlib.icons import gcp
from drawlib.shapes import rectangle
from drawlib.styles import Styles
from drawlib.text import text

setup(width=132, height=66)

row1 = [
    ("Compute (GCE)", "Compute", gcp.compute_engine, Styles.Neutral),
    ("GKE Cluster", "Containers", gcp.google_kubernetes_engine, Styles.PrimaryNeutral),
    ("Cloud Run", "Serverless", gcp.cloud_run, Styles.Neutral),
    ("Storage (GCS)", "Storage", gcp.cloud_storage, Styles.SecondaryNeutral),
]

row2 = [
    ("Cloud SQL", "Databases", gcp.cloud_sql, Styles.Neutral),
    ("Load Balancer", "Networking", gcp.cloud_load_balancing, Styles.Neutral),
    ("BigQuery", "Analytics", gcp.bigquery, Styles.SecondaryNeutral),
    ("Vertex AI", "AI / ML", gcp.vertex_ai, Styles.PrimaryNeutral),
]

for row_idx, items in enumerate([row1, row2]):
    cy = 48 if row_idx == 0 else 18
    for col_idx, (title, cat, icon_fn, card_st) in enumerate(items):
        cx = 19.5 + col_idx * 31
        rectangle((cx, cy), width=28.5, height=26, style=card_st.patch(shape_r=2))
        icon_fn((cx, cy + 5.0), width=8.5, style=Styles.Primary)
        text((cx, cy - 3.2), title, style=Styles.DarkBold.patch(text_size=10.0))
        text((cx, cy - 8.5), cat, style=Styles.Muted.patch(text_size=10.0))

save()

1.1. Major GCP Icon Categories

Category Representative drawlib.icons.gcp Functions
Compute compute_engine, app_engine, batch, bare_metal_solutions, vmware_engine
Containers & Serverless google_kubernetes_engine, cloud_run, cloud_functions, anthos
Storage cloud_storage, filestore, persistent_disk, hyperdisk
Databases cloud_sql, cloud_spanner, alloydb, bigtable, firestore, memorystore
Networking virtual_private_cloud, cloud_load_balancing, cloud_cdn, cloud_dns, cloud_nat, cloud_interconnect
Data & Analytics bigquery, pubsub, dataflow, dataproc, cloud_composer, looker
AI & Machine Learning vertex_ai, ai_hypercomputer, automl, document_ai, cloud_vision_api, speech_to_text
Security & Operations cloud_armor, identity_and_access_management, secret_manager, key_management_service, security_command_center, cloud_monitoring, cloud_logging, cloud_build, artifact_registry

1.2. Color Variants: variant="default" (3-Tone Blue) vs. variant="modern" (4-Color)

All 250 GCP icons provide variant="default" (unified 3-tone blue #4285F4 / #669DF6 / #AECBFA), which is recommended when combining core services with networking, security, or specialized services so the entire diagram shares a consistent color language. For the 19 Core Products and 26 Category icons, you can pass variant="modern" to render the Google 4-color multi-color artwork:

from drawlib.canvas import save, setup
from drawlib.icons import gcp
from drawlib.shapes import rectangle
from drawlib.styles import Styles
from drawlib.text import text

setup(width=132, height=62)

services = [
    ("Compute Engine", gcp.compute_engine),
    ("GKE", gcp.google_kubernetes_engine),
    ("Cloud Run", gcp.cloud_run),
    ("BigQuery", gcp.bigquery),
]

for col_idx, (label, icon_fn) in enumerate(services):
    cx = 19.5 + col_idx * 31
    # Top row: default (3-tone blue)
    rectangle((cx, 45), width=28.5, height=24, style=Styles.Neutral.patch(shape_r=2))
    icon_fn((cx, 49.5), width=8.5, style=Styles.Primary, variant="default")
    text((cx, 38.0), f"{label}", style=Styles.DarkBold.patch(text_size=9.5))
    text((cx, 34.2), 'variant="default"', style=Styles.Muted.patch(text_size=8.5))

    # Bottom row: modern (4-color)
    rectangle((cx, 17), width=28.5, height=24, style=Styles.PrimaryNeutral.patch(shape_r=2))
    icon_fn((cx, 21.5), width=8.5, style=Styles.Primary, variant="modern")
    text((cx, 10.0), f"{label}", style=Styles.DarkBold.patch(text_size=9.5))
    text((cx, 6.2), 'variant="modern"', style=Styles.PrimaryBold.patch(text_size=8.5))

save()
gcp_2
Comparing variant='default' (3-Tone Blue) and variant='modern' (Google 4-Color) Across Core GCP Products

1.3. Dynamic Icon Lookup by Name (gcp_icon)

When the icon name is determined dynamically at runtime (for example, loaded from a configuration file or dictionary), you can invoke the low-level gcp_icon() helper or resolve functions from drawlib.icons.gcp:

from drawlib.icons import gcp, gcp_icon
from drawlib.styles import Styles

# Render a GCP service icon by string identifier (and optional variant)
gcp_icon((50, 25), width=10.0, name="bigquery", style=Styles.Primary, variant="modern")

# Or look up the generated service function dynamically on the gcp module
getattr(gcp, "compute_engine")((80, 25), width=10.0, style=Styles.Primary, variant="default")

2. Sizing, Opacity, Tinting & Border Framing (style.image_*)

Because gcp.<service_name>(xy, width, *, style) renders normalized 512×512 RGBA PNG assets through the canvas image() engine, it supports all image_* styling and transform attributes on Style:

Style Attribute Type Default Visual Effect on GCP Icon
alpha float 1.0 Fades the icon opacity (0.35 is ideal for standby/decommissioned replicas).
image_tint_color Color | tuple | str None Fills transparent background pixels behind the icon artwork with a solid color (Dimage.fill()).
image_border_color Color | tuple | str (0, 0, 0) Stroke color of the rectangular border frame around the icon bounding box.
image_border_width float 0 Border stroke width in points (> 0 draws a frame around the icon).
image_border_style "solid" | "dashed" | "dotted" | "dashdot" "solid" Dash pattern of the icon border frame.
angle, halign, valign float, str, str 0.0, "center", "center" Rotates or shifts the icon anchor point on the canvas.
Diagram Role Recommended width Typical Styling
Primary Gateway / Hero Service 11.0 – 14.0 units style=Styles.Primary inside a Styles.PrimaryNeutral card
Standard Service Node 8.5 – 10.5 units style=Styles.Primary inside a Styles.Neutral card
Embedded Pod / Sub-Node 7.0 – 8.0 units style=Styles.Primary inside a compact subnet card
Decommissioned / Standby Node 8.5 – 10.0 units style=Styles.Primary.patch(alpha=0.35)
from drawlib.canvas import save, setup
from drawlib.icons import gcp
from drawlib.shapes import rectangle
from drawlib.styles import Colors, Styles
from drawlib.text import text

setup(width=132, height=48)

# 1. Compact Size (width=7.5)
rectangle((18, 24), width=26, height=36, style=Styles.Neutral.patch(shape_r=2))
gcp.cloud_run((18, 29.5), width=7.5, style=Styles.Primary)
text((18, 13), "Compact (7.5)", style=Styles.DarkBold.patch(text_size=10.0))

# 2. Hero Size (width=12.0)
rectangle((48, 24), width=26, height=36, style=Styles.PrimaryNeutral.patch(shape_r=2))
gcp.cloud_run((48, 30.0), width=12.0, style=Styles.Primary)
text((48, 13), "Hero (12.0)", style=Styles.DarkBold.patch(text_size=10.0))

# 3. Standby Opacity (alpha=0.35)
rectangle((78, 24), width=26, height=36, style=Styles.Neutral.patch(shape_r=2))
gcp.cloud_run((78, 29.5), width=9.5, style=Styles.Primary.patch(alpha=0.35))
text((78, 13), "alpha=0.35", style=Styles.DarkBold.patch(text_size=10.0))

# 4. Background Tint + Dashed Border (image_tint_color & image_border_*)
rectangle((110, 24), width=30, height=36, style=Styles.SecondaryNeutral.patch(shape_r=2))
framed_style = Styles.Primary.patch(
    image_tint_color=Colors.Primary1,
    image_border_color=Colors.Primary,
    image_border_width=1.5,
    image_border_style="dashed",
)
gcp.cloud_run((110, 29.5), width=10.5, style=framed_style)
text((110, 13), "Tint + Border", style=Styles.DarkBold.patch(text_size=10.0))

save()
gcp_3
GCP Icon Sizing Tiers, Opacity (alpha), Background Tint (image_tint_color), and Border Framing (image_border_*)

3. Using GCP Icons in Diagrams

You can integrate GCP icons into technical illustrations at three levels of abstraction depending on your layout needs:

Approach Best For How Icons Are Placed
1. Standalone gcp.<service>() Custom canvas layouts, bespoke cards, annotations Call gcp.<service>((x, y), width=...) directly over rectangle() cards.
2. Paired with GridLayout Tiered architecture matrices, service catalogs Draw matrix background cells with GridLayout, then overlay gcp.<service>() at cell centers.
3. Inside ArchitectureDiagram Connected VPC topologies, subnets, fan-out routing Pass icon=GcpIcon.<SERVICE> to Node(...) for automatic card layout and orthogonal wire routing.

3.1. Overlaying GCP Icons on GridLayout Matrix Tiers

from drawlib.canvas import save, setup
from drawlib.icons import gcp
from drawlib.smartarts import GridLayout
from drawlib.styles import Styles

setup(width=120, height=56)

# 1. Draw a 3-column x 2-row GridLayout matrix
grid = GridLayout(
    num_column=3,
    num_row=2,
    style=Styles.Neutral.patch(shape_r=2),
    text_style=Styles.DarkBold.patch(text_size=10.5),
)
# Top header row spanning all 3 columns
grid.add(
    position=(0, 1),
    width=3,
    height=1,
    text="Global Cloud Load Balancing & CDN Edge",
    style=Styles.PrimaryNeutral.patch(shape_r=2),
    text_style=Styles.DarkBold.patch(text_size=11.0, xy_shift=(6, 0)),
)
# Bottom 3 service cells (shift labels down to make room for icons)
lbl_style = Styles.DarkBold.patch(text_size=10.5, xy_shift=(0, -5.5))
grid.add(position=(0, 0), width=1, height=1, text="GKE Workloads", text_style=lbl_style)
grid.add(
    position=(1, 0),
    width=1,
    height=1,
    text="Cloud SQL HA",
    style=Styles.SecondaryNeutral.patch(shape_r=2),
    text_style=lbl_style,
)
grid.add(position=(2, 0), width=1, height=1, text="BigQuery DW", text_style=lbl_style)

grid.draw(xy=(8, 6), width=104, height=44, margin=2.0)

# 2. Overlay GCP icons onto the grid cells
gcp.cloud_load_balancing((26, 39.5), width=7.5, style=Styles.Primary)
gcp.google_kubernetes_engine((25, 20.5), width=8.0, style=Styles.Primary)
gcp.cloud_sql((60, 20.5), width=8.0, style=Styles.Primary)
gcp.bigquery((95, 20.5), width=8.0, style=Styles.Primary)

save()
gcp_4
Overlaying GCP Icons on a GridLayout Tier Matrix

3.2. High-Level ArchitectureDiagram (Node & GcpIcon)

When connecting services with routed arrows and VPC/subnet boundary boxes, use ArchitectureDiagram with Node(..., icon=GcpIcon.<SERVICE>):

from drawlib.canvas import clear, save, setup
from drawlib.diagrams.architecture import ArchitectureDiagram, GcpIcon, Node, NodeGroup
from drawlib.styles import Styles

clear()
setup(width=136, height=64)

d = ArchitectureDiagram(
    node_style=Styles.Primary,
    node_text_style=Styles.DarkBold.patch(text_size=10.0),
    edge_style=Styles.DarkBold,
    edge_text_style=Styles.DarkBold.patch(text_size=10.0),
    node_card_style=Styles.Neutral,
    title="Serverless GCP Microservice Topology",
)

vpc = d.add(NodeGroup(title="Production VPC", padding=5.0), xy=(4.0, 4.0))
lb = vpc.add(
    Node("Cloud Load\nBalancing", width=25, height=18, icon=GcpIcon.CLOUD_LOAD_BALANCING, icon_size=7.5),
    xy=(12.0, 18.0),
)
run = vpc.add(
    Node(
        "Cloud Run\nAPI",
        width=25,
        height=18,
        icon=GcpIcon.CLOUD_RUN,
        icon_size=7.5,
        card_style=Styles.PrimaryNeutral,
    ),
    xy=(56.0, 18.0),
)
sql = vpc.add(
    Node(
        "Cloud SQL",
        width=25,
        height=18,
        icon=GcpIcon.CLOUD_SQL,
        icon_size=7.5,
        card_style=Styles.SecondaryNeutral,
    ),
    xy=(98.0, 28.0),
)
gcs = vpc.add(
    Node("Cloud Storage", width=25, height=18, icon=GcpIcon.CLOUD_STORAGE, icon_size=7.5),
    xy=(98.0, 8.0),
)

d.connect(lb, run, label="HTTPS", padding=1.5)
run.fork([sql, gcs], at_x=88.0, padding=1.5)

d.draw(xy=(4.0, 4.0))
save()
gcp_5
Mini GCP Topology Using ArchitectureDiagram and GcpIcon

[!TIP] For AWS (drawlib.icons.aws), Azure (drawlib.icons.azure), and Multi-Cloud & Original Cloud (drawlib.icons.cloud / original_cloud), see Icons Overview.