Skip to content

Commit 7cd8f85

Browse files
Centralize icon definitions in icons.d2 file
Co-authored-by: reindervdw-cmi <200102462+reindervdw-cmi@users.noreply.github.com>
1 parent 81092af commit 7cd8f85

10 files changed

Lines changed: 127 additions & 25 deletions

File tree

diagrams/README.md

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,31 @@ This directory contains [D2](https://d2lang.com/) diagrams that document the Azu
77
The diagrams are organized into modular files, each representing a specific component of the architecture:
88

99
- **`main.d2`** - The main diagram that imports and connects all components
10+
- **`icons.d2`** - Centralized icon definitions for all Azure services
1011
- **`shared.d2`** - Shared resources (Container Registry)
1112
- **`network.d2`** - Virtual Network and subnets
1213
- **`database.d2`** - Cosmos PostgreSQL database with private endpoint
1314
- **`container_environment.d2`** - Container App Environment
1415
- **`container_apps.d2`** - All container applications (webapp, cloai_service, ctk_functions, languagetool)
1516
- **`supporting_services.d2`** - Supporting services (Key Vault, Storage Account, Log Analytics, Application Insights)
16-
- **`identity.d2`** - Azure Active Directory authentication
17+
- **`identity.d2`** - Microsoft Entra ID authentication
18+
19+
## Icon Management
20+
21+
All Azure service icons are defined centrally in `icons.d2` as classes. Each diagram file imports this file using `...@icons` and references icons via the `class` attribute. This approach:
22+
23+
- **Eliminates duplication** - Each icon URL is defined once
24+
- **Improves maintainability** - Update an icon in one place to change it everywhere
25+
- **Enhances consistency** - All diagrams use the same icon set
26+
27+
Example usage:
28+
```d2
29+
...@icons
30+
31+
my_resource: My Resource {
32+
class: resource_group
33+
}
34+
```
1735

1836
## Building Diagrams
1937

@@ -42,6 +60,7 @@ d2 diagrams/main.d2 diagrams/output/architecture.svg
4260
When making infrastructure changes:
4361

4462
1. Update the relevant D2 file(s) in this directory
45-
2. Commit and push your changes
46-
3. The workflow will automatically regenerate the diagram
47-
4. Review the updated diagram in the PR comment or workflow artifacts
63+
2. If adding a new Azure service, add its icon to `icons.d2` first
64+
3. Commit and push your changes
65+
4. The workflow will automatically regenerate the diagram
66+
5. Review the updated diagram in the PR comment or workflow artifacts

diagrams/container_apps.d2

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,21 @@
11
# Container Apps
22

3+
...@icons
4+
35
webapp: Web App\n(Container App) {
4-
icon: https://icons.terrastruct.com/azure%2FContainers%2F10103-icon-service-Container-Apps.svg
6+
class: container_app
57
}
68

79
cloai_service: CLO AI Service\n(Container App) {
8-
icon: https://icons.terrastruct.com/azure%2FContainers%2F10103-icon-service-Container-Apps.svg
10+
class: container_app
911
}
1012

1113
ctk_functions: CTK Functions\n(Container App) {
12-
icon: https://icons.terrastruct.com/azure%2FContainers%2F10103-icon-service-Container-Apps.svg
14+
class: container_app
1315
}
1416

1517
languagetool: LanguageTool\n(Container App) {
16-
icon: https://icons.terrastruct.com/azure%2FContainers%2F10103-icon-service-Container-Apps.svg
18+
class: container_app
1719
}
1820

1921
# Container app relationships

diagrams/container_environment.d2

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# Container App Environment
22

3+
...@icons
4+
35
container_app_env: Container App\nEnvironment {
4-
icon: https://icons.terrastruct.com/azure%2FContainers%2F10104-icon-service-Container-Apps-Environments.svg
6+
class: container_app_environment
57
}

diagrams/database.d2

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
11
# Cosmos PostgreSQL Database
22

3+
...@icons
4+
35
cosmos_postgres: Cosmos PostgreSQL\nCluster {
4-
icon: https://icons.terrastruct.com/azure%2FDatabases%2F10124-icon-service-Azure-Cosmos-DB.svg
6+
class: cosmos_db
57
shape: cylinder
68
}
79

810
private_endpoint: Private Endpoint\n(Database) {
9-
icon: https://icons.terrastruct.com/azure%2FNetworking%2F10064-icon-service-Private-Link.svg
11+
class: private_endpoint
1012
}
1113

1214
private_dns_zone: Private DNS Zone\n(postgres.cosmos.azure.com) {
13-
icon: https://icons.terrastruct.com/azure%2FNetworking%2F10065-icon-service-DNS-Zones.svg
15+
class: dns_zone
1416
}
1517

1618
# Database connections

diagrams/icons.d2

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
# Azure Icons
2+
# Centralized icon definitions for all D2 diagrams
3+
# Icons sourced from https://icons.terrastruct.com/
4+
5+
classes: {
6+
# General
7+
resource_group: {
8+
icon: https://icons.terrastruct.com/azure%2FGeneral%2F10002-icon-service-Resource-Groups.svg
9+
}
10+
11+
# Containers
12+
container_registry: {
13+
icon: https://icons.terrastruct.com/azure%2FContainers%2F10105-icon-service-Container-Registries.svg
14+
}
15+
container_app: {
16+
icon: https://icons.terrastruct.com/azure%2FContainers%2F10103-icon-service-Container-Apps.svg
17+
}
18+
container_app_environment: {
19+
icon: https://icons.terrastruct.com/azure%2FContainers%2F10104-icon-service-Container-Apps-Environments.svg
20+
}
21+
22+
# Networking
23+
virtual_network: {
24+
icon: https://icons.terrastruct.com/azure%2FNetworking%2F10061-icon-service-Virtual-Networks.svg
25+
}
26+
subnet: {
27+
icon: https://icons.terrastruct.com/azure%2FNetworking%2F10073-icon-service-Subnets.svg
28+
}
29+
private_endpoint: {
30+
icon: https://icons.terrastruct.com/azure%2FNetworking%2F10064-icon-service-Private-Link.svg
31+
}
32+
dns_zone: {
33+
icon: https://icons.terrastruct.com/azure%2FNetworking%2F10065-icon-service-DNS-Zones.svg
34+
}
35+
36+
# Databases
37+
cosmos_db: {
38+
icon: https://icons.terrastruct.com/azure%2FDatabases%2F10124-icon-service-Azure-Cosmos-DB.svg
39+
}
40+
41+
# Storage
42+
storage_account: {
43+
icon: https://icons.terrastruct.com/azure%2FStorage%2F10086-icon-service-Storage-Accounts.svg
44+
}
45+
46+
# Security
47+
key_vault: {
48+
icon: https://icons.terrastruct.com/azure%2FSecurity%2F10245-icon-service-Key-Vaults.svg
49+
}
50+
51+
# Monitor
52+
log_analytics: {
53+
icon: https://icons.terrastruct.com/azure%2FMonitor%2F00004-icon-service-Log-Analytics-Workspaces.svg
54+
}
55+
app_insights: {
56+
icon: https://icons.terrastruct.com/azure%2FMonitor%2F00009-icon-service-Application-Insights.svg
57+
}
58+
59+
# Identity
60+
entra_id: {
61+
icon: https://icons.terrastruct.com/azure%2FIdentity%2F10221-icon-service-Azure-Active-Directory.svg
62+
}
63+
users: {
64+
icon: https://icons.terrastruct.com/azure%2FIdentity%2F10215-icon-service-Users.svg
65+
}
66+
}

diagrams/identity.d2

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# Identity and Authentication
22

3+
...@icons
4+
35
azure_ad: Microsoft Entra ID\nApp Registration {
4-
icon: https://icons.terrastruct.com/azure%2FIdentity%2F10221-icon-service-Azure-Active-Directory.svg
6+
class: entra_id
57
}

diagrams/main.d2

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44

55
direction: right
66

7+
# Import icons first
8+
...@icons
9+
710
# Import all component diagrams
811
...@shared
912
...@network
@@ -15,12 +18,12 @@ direction: right
1518

1619
# Production Resource Group
1720
prod_rg: Resource Group\n(prod) {
18-
icon: https://icons.terrastruct.com/azure%2FGeneral%2F10002-icon-service-Resource-Groups.svg
21+
class: resource_group
1922
}
2023

2124
# External Users
2225
users: Users {
23-
icon: https://icons.terrastruct.com/azure%2FIdentity%2F10215-icon-service-Users.svg
26+
class: users
2427
shape: person
2528
}
2629

diagrams/network.d2

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
11
# Virtual Network and Subnets
22

3+
...@icons
4+
35
vnet: Virtual Network\n(prod) {
4-
icon: https://icons.terrastruct.com/azure%2FNetworking%2F10061-icon-service-Virtual-Networks.svg
6+
class: virtual_network
57

68
container_apps_subnet: Container Apps\nSubnet {
7-
icon: https://icons.terrastruct.com/azure%2FNetworking%2F10073-icon-service-Subnets.svg
9+
class: subnet
810
}
911

1012
database_subnet: Database\nSubnet {
11-
icon: https://icons.terrastruct.com/azure%2FNetworking%2F10073-icon-service-Subnets.svg
13+
class: subnet
1214
}
1315

1416
storage_subnet: Storage\nSubnet {
15-
icon: https://icons.terrastruct.com/azure%2FNetworking%2F10073-icon-service-Subnets.svg
17+
class: subnet
1618
}
1719
}

diagrams/shared.d2

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
# Shared Resources
22
# These resources are used by both dev and prod environments
33

4+
...@icons
5+
46
shared_rg: Resource Group\n(shared) {
5-
icon: https://icons.terrastruct.com/azure%2FGeneral%2F10002-icon-service-Resource-Groups.svg
7+
class: resource_group
68
}
79

810
acr: Azure Container Registry\n(acrctkshared) {
9-
icon: https://icons.terrastruct.com/azure%2FContainers%2F10105-icon-service-Container-Registries.svg
11+
class: container_registry
1012
shape: cylinder
1113
}
1214

diagrams/supporting_services.d2

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
11
# Supporting Services
22

3+
...@icons
4+
35
key_vault: Key Vault {
4-
icon: https://icons.terrastruct.com/azure%2FSecurity%2F10245-icon-service-Key-Vaults.svg
6+
class: key_vault
57
}
68

79
storage_account: Storage Account {
8-
icon: https://icons.terrastruct.com/azure%2FStorage%2F10086-icon-service-Storage-Accounts.svg
10+
class: storage_account
911
shape: cylinder
1012
}
1113

1214
log_analytics: Log Analytics\nWorkspace {
13-
icon: https://icons.terrastruct.com/azure%2FMonitor%2F00004-icon-service-Log-Analytics-Workspaces.svg
15+
class: log_analytics
1416
}
1517

1618
app_insights: Application Insights {
17-
icon: https://icons.terrastruct.com/azure%2FMonitor%2F00009-icon-service-Application-Insights.svg
19+
class: app_insights
1820
}
1921

2022
# Supporting service relationships

0 commit comments

Comments
 (0)