container-superposition 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (327) hide show
  1. package/README.md +843 -0
  2. package/dist/scripts/init.d.ts +3 -0
  3. package/dist/scripts/init.d.ts.map +1 -0
  4. package/dist/scripts/init.js +1190 -0
  5. package/dist/scripts/init.js.map +1 -0
  6. package/dist/scripts/migrate-to-manifests.d.ts +12 -0
  7. package/dist/scripts/migrate-to-manifests.d.ts.map +1 -0
  8. package/dist/scripts/migrate-to-manifests.js +230 -0
  9. package/dist/scripts/migrate-to-manifests.js.map +1 -0
  10. package/dist/tool/questionnaire/composer.d.ts +6 -0
  11. package/dist/tool/questionnaire/composer.d.ts.map +1 -0
  12. package/dist/tool/questionnaire/composer.js +1232 -0
  13. package/dist/tool/questionnaire/composer.js.map +1 -0
  14. package/dist/tool/readme/markdown-parser.d.ts +30 -0
  15. package/dist/tool/readme/markdown-parser.d.ts.map +1 -0
  16. package/dist/tool/readme/markdown-parser.js +139 -0
  17. package/dist/tool/readme/markdown-parser.js.map +1 -0
  18. package/dist/tool/readme/readme-generator.d.ts +9 -0
  19. package/dist/tool/readme/readme-generator.d.ts.map +1 -0
  20. package/dist/tool/readme/readme-generator.js +422 -0
  21. package/dist/tool/readme/readme-generator.js.map +1 -0
  22. package/dist/tool/schema/custom-loader.d.ts +17 -0
  23. package/dist/tool/schema/custom-loader.d.ts.map +1 -0
  24. package/dist/tool/schema/custom-loader.js +149 -0
  25. package/dist/tool/schema/custom-loader.js.map +1 -0
  26. package/dist/tool/schema/overlay-loader.d.ts +47 -0
  27. package/dist/tool/schema/overlay-loader.d.ts.map +1 -0
  28. package/dist/tool/schema/overlay-loader.js +252 -0
  29. package/dist/tool/schema/overlay-loader.js.map +1 -0
  30. package/dist/tool/schema/types.d.ts +212 -0
  31. package/dist/tool/schema/types.d.ts.map +1 -0
  32. package/dist/tool/schema/types.js +5 -0
  33. package/dist/tool/schema/types.js.map +1 -0
  34. package/docs/README.md +308 -0
  35. package/docs/architecture.md +233 -0
  36. package/docs/creating-overlays.md +549 -0
  37. package/docs/custom-patches.md +540 -0
  38. package/docs/dependencies.md +279 -0
  39. package/docs/examples/custom-patches-example.md +85 -0
  40. package/docs/examples.md +576 -0
  41. package/docs/messaging-comparison.md +265 -0
  42. package/docs/messaging-quick-start.md +385 -0
  43. package/docs/observability-workflow.md +537 -0
  44. package/docs/overlay-manifest-refactoring.md +214 -0
  45. package/docs/overlay-metadata-archive.md +54 -0
  46. package/docs/overlays.md +523 -0
  47. package/docs/presets-architecture.md +498 -0
  48. package/docs/presets.md +366 -0
  49. package/docs/publishing.md +476 -0
  50. package/docs/quick-reference.md +326 -0
  51. package/docs/ux.md +170 -0
  52. package/features/README.md +85 -0
  53. package/features/cross-distro-packages/README.md +146 -0
  54. package/features/cross-distro-packages/devcontainer-feature.json +20 -0
  55. package/features/cross-distro-packages/install.sh +58 -0
  56. package/features/local-secrets-manager/devcontainer-feature.json +18 -0
  57. package/features/local-secrets-manager/install.sh +127 -0
  58. package/features/project-scaffolder/devcontainer-feature.json +24 -0
  59. package/features/project-scaffolder/install.sh +100 -0
  60. package/features/team-conventions/devcontainer-feature.json +24 -0
  61. package/features/team-conventions/install.sh +93 -0
  62. package/overlays/.registry/README.md +14 -0
  63. package/overlays/.registry/base-images.yml +26 -0
  64. package/overlays/.registry/base-templates.yml +7 -0
  65. package/overlays/README.md +155 -0
  66. package/overlays/alertmanager/.env.example +5 -0
  67. package/overlays/alertmanager/README.md +465 -0
  68. package/overlays/alertmanager/alert-rules.yml +56 -0
  69. package/overlays/alertmanager/alertmanager.yml +42 -0
  70. package/overlays/alertmanager/devcontainer.patch.json +12 -0
  71. package/overlays/alertmanager/docker-compose.yml +20 -0
  72. package/overlays/alertmanager/overlay.yml +17 -0
  73. package/overlays/alertmanager/setup.sh +53 -0
  74. package/overlays/alertmanager/verify.sh +31 -0
  75. package/overlays/aws-cli/README.md +473 -0
  76. package/overlays/aws-cli/devcontainer.patch.json +13 -0
  77. package/overlays/aws-cli/overlay.yml +13 -0
  78. package/overlays/azure-cli/README.md +551 -0
  79. package/overlays/azure-cli/devcontainer.patch.json +8 -0
  80. package/overlays/azure-cli/overlay.yml +13 -0
  81. package/overlays/bun/README.md +312 -0
  82. package/overlays/bun/devcontainer.patch.json +41 -0
  83. package/overlays/bun/overlay.yml +16 -0
  84. package/overlays/bun/setup.sh +79 -0
  85. package/overlays/bun/verify.sh +30 -0
  86. package/overlays/codex/README.md +128 -0
  87. package/overlays/codex/devcontainer.patch.json +3 -0
  88. package/overlays/codex/overlay.yml +14 -0
  89. package/overlays/codex/setup.sh +24 -0
  90. package/overlays/codex/verify.sh +30 -0
  91. package/overlays/commitlint/README.md +333 -0
  92. package/overlays/commitlint/devcontainer.patch.json +8 -0
  93. package/overlays/commitlint/overlay.yml +16 -0
  94. package/overlays/commitlint/setup.sh +234 -0
  95. package/overlays/direnv/README.md +504 -0
  96. package/overlays/direnv/devcontainer.patch.json +6 -0
  97. package/overlays/direnv/overlay.yml +13 -0
  98. package/overlays/direnv/setup.sh +139 -0
  99. package/overlays/docker-in-docker/README.md +534 -0
  100. package/overlays/docker-in-docker/devcontainer.patch.json +10 -0
  101. package/overlays/docker-in-docker/overlay.yml +13 -0
  102. package/overlays/docker-sock/README.md +256 -0
  103. package/overlays/docker-sock/devcontainer.patch.json +9 -0
  104. package/overlays/docker-sock/docker-compose.yml +8 -0
  105. package/overlays/docker-sock/overlay.yml +13 -0
  106. package/overlays/dotnet/README.md +147 -0
  107. package/overlays/dotnet/devcontainer.patch.json +51 -0
  108. package/overlays/dotnet/global-tools.txt +24 -0
  109. package/overlays/dotnet/overlay.yml +13 -0
  110. package/overlays/dotnet/setup.sh +51 -0
  111. package/overlays/dotnet/verify.sh +26 -0
  112. package/overlays/gcloud/README.md +269 -0
  113. package/overlays/gcloud/devcontainer.patch.json +14 -0
  114. package/overlays/gcloud/overlay.yml +14 -0
  115. package/overlays/gcloud/verify.sh +52 -0
  116. package/overlays/git-helpers/README.md +168 -0
  117. package/overlays/git-helpers/devcontainer.patch.json +33 -0
  118. package/overlays/git-helpers/overlay.yml +15 -0
  119. package/overlays/git-helpers/setup.sh +91 -0
  120. package/overlays/go/README.md +293 -0
  121. package/overlays/go/devcontainer.patch.json +43 -0
  122. package/overlays/go/overlay.yml +15 -0
  123. package/overlays/go/setup.sh +33 -0
  124. package/overlays/go/verify.sh +40 -0
  125. package/overlays/grafana/.env.example +9 -0
  126. package/overlays/grafana/README.md +462 -0
  127. package/overlays/grafana/dashboard-provider.yml +11 -0
  128. package/overlays/grafana/dashboards/observability-overview.json +263 -0
  129. package/overlays/grafana/devcontainer.patch.json +12 -0
  130. package/overlays/grafana/docker-compose.yml +27 -0
  131. package/overlays/grafana/grafana-datasources.yml +57 -0
  132. package/overlays/grafana/overlay.yml +21 -0
  133. package/overlays/grafana/verify.sh +34 -0
  134. package/overlays/jaeger/.env.example +7 -0
  135. package/overlays/jaeger/README.md +867 -0
  136. package/overlays/jaeger/devcontainer.patch.json +12 -0
  137. package/overlays/jaeger/docker-compose.yml +17 -0
  138. package/overlays/jaeger/overlay.yml +19 -0
  139. package/overlays/java/README.md +267 -0
  140. package/overlays/java/devcontainer.patch.json +44 -0
  141. package/overlays/java/overlay.yml +16 -0
  142. package/overlays/java/setup.sh +41 -0
  143. package/overlays/java/verify.sh +42 -0
  144. package/overlays/just/README.md +443 -0
  145. package/overlays/just/devcontainer.patch.json +3 -0
  146. package/overlays/just/overlay.yml +13 -0
  147. package/overlays/just/setup.sh +182 -0
  148. package/overlays/kubectl-helm/README.md +660 -0
  149. package/overlays/kubectl-helm/devcontainer.patch.json +10 -0
  150. package/overlays/kubectl-helm/overlay.yml +13 -0
  151. package/overlays/loki/.env.example +5 -0
  152. package/overlays/loki/README.md +1156 -0
  153. package/overlays/loki/devcontainer.patch.json +12 -0
  154. package/overlays/loki/docker-compose.yml +18 -0
  155. package/overlays/loki/loki-config.yaml +45 -0
  156. package/overlays/loki/overlay.yml +17 -0
  157. package/overlays/minio/.env.example +9 -0
  158. package/overlays/minio/README.md +639 -0
  159. package/overlays/minio/devcontainer.patch.json +30 -0
  160. package/overlays/minio/docker-compose.yml +28 -0
  161. package/overlays/minio/overlay.yml +18 -0
  162. package/overlays/minio/setup.sh +61 -0
  163. package/overlays/minio/verify.sh +64 -0
  164. package/overlays/mkdocs/README.md +309 -0
  165. package/overlays/mkdocs/devcontainer.patch.json +24 -0
  166. package/overlays/mkdocs/overlay.yml +15 -0
  167. package/overlays/modern-cli-tools/README.md +556 -0
  168. package/overlays/modern-cli-tools/devcontainer.patch.json +3 -0
  169. package/overlays/modern-cli-tools/overlay.yml +13 -0
  170. package/overlays/modern-cli-tools/setup.sh +153 -0
  171. package/overlays/mongodb/.env.example +9 -0
  172. package/overlays/mongodb/README.md +481 -0
  173. package/overlays/mongodb/devcontainer.patch.json +32 -0
  174. package/overlays/mongodb/docker-compose.yml +44 -0
  175. package/overlays/mongodb/overlay.yml +17 -0
  176. package/overlays/mongodb/verify.sh +48 -0
  177. package/overlays/mysql/.env.example +11 -0
  178. package/overlays/mysql/README.md +542 -0
  179. package/overlays/mysql/devcontainer.patch.json +34 -0
  180. package/overlays/mysql/docker-compose.yml +55 -0
  181. package/overlays/mysql/overlay.yml +16 -0
  182. package/overlays/mysql/verify.sh +48 -0
  183. package/overlays/nats/.env.example +5 -0
  184. package/overlays/nats/README.md +762 -0
  185. package/overlays/nats/devcontainer.patch.json +24 -0
  186. package/overlays/nats/docker-compose.yml +31 -0
  187. package/overlays/nats/overlay.yml +18 -0
  188. package/overlays/nats/verify.sh +50 -0
  189. package/overlays/ngrok/README.md +503 -0
  190. package/overlays/ngrok/devcontainer.patch.json +3 -0
  191. package/overlays/ngrok/overlay.yml +14 -0
  192. package/overlays/ngrok/setup.sh +125 -0
  193. package/overlays/nodejs/README.md +192 -0
  194. package/overlays/nodejs/devcontainer.patch.json +49 -0
  195. package/overlays/nodejs/global-packages.txt +16 -0
  196. package/overlays/nodejs/overlay.yml +14 -0
  197. package/overlays/nodejs/setup.sh +46 -0
  198. package/overlays/nodejs/verify.sh +32 -0
  199. package/overlays/otel-collector/.env.example +9 -0
  200. package/overlays/otel-collector/README.md +1257 -0
  201. package/overlays/otel-collector/devcontainer.patch.json +28 -0
  202. package/overlays/otel-collector/docker-compose.yml +22 -0
  203. package/overlays/otel-collector/otel-collector-config.yaml +68 -0
  204. package/overlays/otel-collector/overlay.yml +21 -0
  205. package/overlays/otel-collector/setup.sh +49 -0
  206. package/overlays/otel-demo-nodejs/.env.example +2 -0
  207. package/overlays/otel-demo-nodejs/Dockerfile-otel-demo-nodejs +17 -0
  208. package/overlays/otel-demo-nodejs/README.md +409 -0
  209. package/overlays/otel-demo-nodejs/devcontainer.patch.json +12 -0
  210. package/overlays/otel-demo-nodejs/docker-compose.yml +19 -0
  211. package/overlays/otel-demo-nodejs/overlay.yml +23 -0
  212. package/overlays/otel-demo-nodejs/package-otel-demo-nodejs.json +20 -0
  213. package/overlays/otel-demo-nodejs/server-otel-demo-nodejs.js +259 -0
  214. package/overlays/otel-demo-nodejs/tracing-otel-demo-nodejs.js +57 -0
  215. package/overlays/otel-demo-nodejs/verify.sh +31 -0
  216. package/overlays/otel-demo-python/.env.example +2 -0
  217. package/overlays/otel-demo-python/Dockerfile-otel-demo-python +16 -0
  218. package/overlays/otel-demo-python/README.md +82 -0
  219. package/overlays/otel-demo-python/app-otel-demo-python.py +208 -0
  220. package/overlays/otel-demo-python/devcontainer.patch.json +12 -0
  221. package/overlays/otel-demo-python/docker-compose.yml +19 -0
  222. package/overlays/otel-demo-python/overlay.yml +23 -0
  223. package/overlays/otel-demo-python/requirements-otel-demo-python.txt +4 -0
  224. package/overlays/otel-demo-python/verify.sh +31 -0
  225. package/overlays/playwright/README.md +629 -0
  226. package/overlays/playwright/devcontainer.patch.json +9 -0
  227. package/overlays/playwright/overlay.yml +13 -0
  228. package/overlays/postgres/.env.example +6 -0
  229. package/overlays/postgres/README.md +602 -0
  230. package/overlays/postgres/devcontainer.patch.json +21 -0
  231. package/overlays/postgres/docker-compose.yml +22 -0
  232. package/overlays/postgres/overlay.yml +15 -0
  233. package/overlays/postgres/verify.sh +45 -0
  234. package/overlays/powershell/README.md +314 -0
  235. package/overlays/powershell/devcontainer.patch.json +22 -0
  236. package/overlays/powershell/overlay.yml +13 -0
  237. package/overlays/powershell/setup.sh +29 -0
  238. package/overlays/powershell/verify.sh +38 -0
  239. package/overlays/pre-commit/README.md +263 -0
  240. package/overlays/pre-commit/devcontainer.patch.json +9 -0
  241. package/overlays/pre-commit/overlay.yml +16 -0
  242. package/overlays/pre-commit/setup.sh +129 -0
  243. package/overlays/presets/docs-site.yml +118 -0
  244. package/overlays/presets/fullstack.yml +181 -0
  245. package/overlays/presets/microservice.yml +118 -0
  246. package/overlays/presets/web-api.yml +109 -0
  247. package/overlays/prometheus/.env.example +5 -0
  248. package/overlays/prometheus/README.md +1246 -0
  249. package/overlays/prometheus/devcontainer.patch.json +12 -0
  250. package/overlays/prometheus/docker-compose.yml +22 -0
  251. package/overlays/prometheus/overlay.yml +17 -0
  252. package/overlays/prometheus/prometheus.yml +12 -0
  253. package/overlays/prometheus/verify.sh +34 -0
  254. package/overlays/promtail/.env.example +2 -0
  255. package/overlays/promtail/README.md +357 -0
  256. package/overlays/promtail/devcontainer.patch.json +5 -0
  257. package/overlays/promtail/docker-compose.yml +16 -0
  258. package/overlays/promtail/overlay.yml +17 -0
  259. package/overlays/promtail/promtail-config.yaml +60 -0
  260. package/overlays/promtail/verify.sh +31 -0
  261. package/overlays/pulumi/README.md +472 -0
  262. package/overlays/pulumi/devcontainer.patch.json +13 -0
  263. package/overlays/pulumi/overlay.yml +14 -0
  264. package/overlays/pulumi/verify.sh +31 -0
  265. package/overlays/python/README.md +919 -0
  266. package/overlays/python/devcontainer.patch.json +41 -0
  267. package/overlays/python/overlay.yml +12 -0
  268. package/overlays/python/requirements-overlay.txt +13 -0
  269. package/overlays/python/setup.sh +47 -0
  270. package/overlays/python/verify.sh +32 -0
  271. package/overlays/rabbitmq/.env.example +7 -0
  272. package/overlays/rabbitmq/README.md +680 -0
  273. package/overlays/rabbitmq/devcontainer.patch.json +28 -0
  274. package/overlays/rabbitmq/docker-compose.yml +30 -0
  275. package/overlays/rabbitmq/overlay.yml +18 -0
  276. package/overlays/rabbitmq/verify.sh +41 -0
  277. package/overlays/redis/.env.example +4 -0
  278. package/overlays/redis/README.md +776 -0
  279. package/overlays/redis/devcontainer.patch.json +21 -0
  280. package/overlays/redis/docker-compose.yml +21 -0
  281. package/overlays/redis/overlay.yml +15 -0
  282. package/overlays/redis/verify.sh +41 -0
  283. package/overlays/redpanda/.env.example +10 -0
  284. package/overlays/redpanda/README.md +703 -0
  285. package/overlays/redpanda/devcontainer.patch.json +37 -0
  286. package/overlays/redpanda/docker-compose.yml +67 -0
  287. package/overlays/redpanda/overlay.yml +21 -0
  288. package/overlays/redpanda/verify.sh +48 -0
  289. package/overlays/rust/README.md +299 -0
  290. package/overlays/rust/devcontainer.patch.json +39 -0
  291. package/overlays/rust/overlay.yml +15 -0
  292. package/overlays/rust/setup.sh +36 -0
  293. package/overlays/rust/verify.sh +51 -0
  294. package/overlays/sqlite/README.md +584 -0
  295. package/overlays/sqlite/devcontainer.patch.json +14 -0
  296. package/overlays/sqlite/overlay.yml +15 -0
  297. package/overlays/sqlite/setup.sh +27 -0
  298. package/overlays/sqlite/verify.sh +43 -0
  299. package/overlays/sqlserver/.env.example +6 -0
  300. package/overlays/sqlserver/README.md +592 -0
  301. package/overlays/sqlserver/devcontainer.patch.json +22 -0
  302. package/overlays/sqlserver/docker-compose.yml +32 -0
  303. package/overlays/sqlserver/overlay.yml +17 -0
  304. package/overlays/sqlserver/verify.sh +30 -0
  305. package/overlays/tempo/.env.example +5 -0
  306. package/overlays/tempo/README.md +273 -0
  307. package/overlays/tempo/devcontainer.patch.json +12 -0
  308. package/overlays/tempo/docker-compose.yml +20 -0
  309. package/overlays/tempo/overlay.yml +20 -0
  310. package/overlays/tempo/tempo-config.yaml +32 -0
  311. package/overlays/tempo/verify.sh +31 -0
  312. package/overlays/terraform/README.md +389 -0
  313. package/overlays/terraform/devcontainer.patch.json +15 -0
  314. package/overlays/terraform/overlay.yml +14 -0
  315. package/overlays/terraform/verify.sh +63 -0
  316. package/package.json +74 -0
  317. package/templates/README.md +285 -0
  318. package/templates/compose/.devcontainer/devcontainer.json +46 -0
  319. package/templates/compose/.devcontainer/docker-compose.yml +12 -0
  320. package/templates/compose/README.md +20 -0
  321. package/templates/plain/.devcontainer/devcontainer.json +35 -0
  322. package/templates/plain/README.md +21 -0
  323. package/tool/README.md +281 -0
  324. package/tool/schema/base-images.schema.json +43 -0
  325. package/tool/schema/base-templates.schema.json +34 -0
  326. package/tool/schema/config.schema.json +71 -0
  327. package/tool/schema/overlay-manifest.schema.json +86 -0
@@ -0,0 +1,269 @@
1
+ # Google Cloud SDK Overlay
2
+
3
+ Adds Google Cloud SDK (gcloud) with comprehensive tooling for GCP development.
4
+
5
+ ## Features
6
+
7
+ - **gcloud CLI** - Google Cloud command-line interface
8
+ - **gsutil** - Cloud Storage management
9
+ - **bq** - BigQuery command-line tool
10
+ - **GKE gcloud auth plugin** - For Kubernetes cluster authentication
11
+ - **VS Code Extension:** Cloud Code (googlecloudtools.cloudcode)
12
+
13
+ ## Authentication
14
+
15
+ ### Interactive Login (Development)
16
+
17
+ ```bash
18
+ # Login with browser-based OAuth
19
+ gcloud auth login
20
+
21
+ # Set default project
22
+ gcloud config set project YOUR_PROJECT_ID
23
+
24
+ # Verify authentication
25
+ gcloud auth list
26
+ ```
27
+
28
+ ### Service Account (CI/CD)
29
+
30
+ ```bash
31
+ # Using service account JSON key
32
+ gcloud auth activate-service-account \
33
+ --key-file=/path/to/service-account-key.json
34
+
35
+ # Or via environment variable
36
+ export GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account-key.json
37
+ gcloud auth activate-service-account \
38
+ --key-file="${GOOGLE_APPLICATION_CREDENTIALS}"
39
+ ```
40
+
41
+ ### Application Default Credentials (ADC)
42
+
43
+ For applications using Google Cloud client libraries:
44
+
45
+ ```bash
46
+ # Set ADC for development
47
+ gcloud auth application-default login
48
+
49
+ # Verify ADC is configured
50
+ gcloud auth application-default print-access-token
51
+ ```
52
+
53
+ **Environment variable approach:**
54
+
55
+ ```bash
56
+ export GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account-key.json
57
+ ```
58
+
59
+ ## Common Commands
60
+
61
+ ### Project Management
62
+
63
+ ```bash
64
+ # List projects
65
+ gcloud projects list
66
+
67
+ # Set active project
68
+ gcloud config set project PROJECT_ID
69
+
70
+ # Get current project
71
+ gcloud config get-value project
72
+ ```
73
+
74
+ ### Compute Engine
75
+
76
+ ```bash
77
+ # List VM instances
78
+ gcloud compute instances list
79
+
80
+ # SSH into instance
81
+ gcloud compute ssh INSTANCE_NAME
82
+
83
+ # Create instance
84
+ gcloud compute instances create my-instance \
85
+ --zone=us-central1-a \
86
+ --machine-type=e2-medium
87
+ ```
88
+
89
+ ### Cloud Storage (gsutil)
90
+
91
+ ```bash
92
+ # List buckets
93
+ gsutil ls
94
+
95
+ # Create bucket
96
+ gsutil mb gs://my-bucket-name
97
+
98
+ # Copy files
99
+ gsutil cp file.txt gs://my-bucket/
100
+ gsutil cp gs://my-bucket/file.txt ./
101
+
102
+ # Sync directory
103
+ gsutil rsync -r ./local-dir gs://my-bucket/remote-dir
104
+ ```
105
+
106
+ ### GKE (Google Kubernetes Engine)
107
+
108
+ ```bash
109
+ # List clusters
110
+ gcloud container clusters list
111
+
112
+ # Get cluster credentials
113
+ gcloud container clusters get-credentials CLUSTER_NAME \
114
+ --zone=us-central1-a
115
+
116
+ # Verify kubectl context
117
+ kubectl config current-context
118
+ ```
119
+
120
+ ### BigQuery (bq)
121
+
122
+ ```bash
123
+ # List datasets
124
+ bq ls
125
+
126
+ # Query data
127
+ bq query --use_legacy_sql=false \
128
+ 'SELECT * FROM `project.dataset.table` LIMIT 10'
129
+
130
+ # Load data
131
+ bq load dataset.table data.csv schema.json
132
+ ```
133
+
134
+ ### Cloud Functions
135
+
136
+ ```bash
137
+ # List functions
138
+ gcloud functions list
139
+
140
+ # Deploy function
141
+ gcloud functions deploy my-function \
142
+ --runtime=nodejs20 \
143
+ --trigger-http \
144
+ --allow-unauthenticated
145
+ ```
146
+
147
+ ## Configuration
148
+
149
+ ### Set Defaults
150
+
151
+ ```bash
152
+ # Set default region
153
+ gcloud config set compute/region us-central1
154
+
155
+ # Set default zone
156
+ gcloud config set compute/zone us-central1-a
157
+
158
+ # View all config
159
+ gcloud config list
160
+ ```
161
+
162
+ ### Multiple Configurations
163
+
164
+ ```bash
165
+ # Create named configuration
166
+ gcloud config configurations create dev
167
+ gcloud config configurations create prod
168
+
169
+ # Switch configuration
170
+ gcloud config configurations activate dev
171
+
172
+ # List configurations
173
+ gcloud config configurations list
174
+ ```
175
+
176
+ ## Common Use Cases
177
+
178
+ ### GCP Development
179
+
180
+ - Deploy Cloud Functions
181
+ - Manage Cloud Run services
182
+ - Interact with GCS buckets
183
+
184
+ ### GKE Development
185
+
186
+ - Authenticate to GKE clusters
187
+ - Deploy containerized applications
188
+ - Manage Kubernetes resources
189
+
190
+ ### Data Engineering
191
+
192
+ - BigQuery queries and data loading
193
+ - Cloud Storage data pipelines
194
+ - Dataflow job management
195
+
196
+ ## Best Practices
197
+
198
+ 1. **Use service accounts** for automation and CI/CD
199
+ 2. **Store credentials securely** - Never commit service account keys
200
+ 3. **Use ADC** for local development with client libraries
201
+ 4. **Set default project** to avoid `--project` flags
202
+ 5. **Use configurations** for multi-environment workflows
203
+
204
+ ## Security Considerations
205
+
206
+ ### Service Account Keys
207
+
208
+ ⚠️ **Never commit service account keys to version control**
209
+
210
+ Use one of these secure methods:
211
+
212
+ - **Environment variables** in `.env` (excluded from git)
213
+ - **Secret management** (e.g., HashiCorp Vault)
214
+ - **Cloud-based secrets** (e.g., Secret Manager)
215
+ - **Workload Identity** (for GKE)
216
+
217
+ ### Least Privilege
218
+
219
+ Grant minimal required permissions to service accounts:
220
+
221
+ ```bash
222
+ # Example: Grant Storage Object Viewer role
223
+ gcloud projects add-iam-policy-binding PROJECT_ID \
224
+ --member="serviceAccount:SA_EMAIL" \
225
+ --role="roles/storage.objectViewer"
226
+ ```
227
+
228
+ ## Troubleshooting
229
+
230
+ ### gcloud command not found
231
+
232
+ Rebuild container:
233
+
234
+ - **VS Code:** `Cmd+Shift+P` → "Dev Containers: Rebuild Container"
235
+
236
+ ### Authentication errors
237
+
238
+ ```bash
239
+ # Clear and re-authenticate
240
+ gcloud auth revoke
241
+ gcloud auth login
242
+ ```
243
+
244
+ ### Wrong project active
245
+
246
+ ```bash
247
+ # Check current project
248
+ gcloud config get-value project
249
+
250
+ # Switch project
251
+ gcloud config set project NEW_PROJECT_ID
252
+ ```
253
+
254
+ ### ADC not working
255
+
256
+ ```bash
257
+ # Re-establish ADC
258
+ gcloud auth application-default login
259
+
260
+ # Or set GOOGLE_APPLICATION_CREDENTIALS
261
+ export GOOGLE_APPLICATION_CREDENTIALS=/path/to/key.json
262
+ ```
263
+
264
+ ## Related Overlays
265
+
266
+ - **kubectl-helm** - Kubernetes management (works with GKE)
267
+ - **terraform** - Infrastructure as Code for GCP resources
268
+ - **pulumi** - Modern IaC with TypeScript/Python/Go
269
+ - **nodejs/python/dotnet** - For Cloud Functions/Run development
@@ -0,0 +1,14 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainer.base.schema.json",
3
+ "features": {
4
+ "ghcr.io/devcontainers/features/google-cloud-cli:1": {
5
+ "version": "latest",
6
+ "installGkeGcloudAuthPlugin": true
7
+ }
8
+ },
9
+ "customizations": {
10
+ "vscode": {
11
+ "extensions": ["googlecloudtools.cloudcode"]
12
+ }
13
+ }
14
+ }
@@ -0,0 +1,14 @@
1
+ id: gcloud
2
+ name: Google Cloud SDK
3
+ description: Google Cloud Platform command-line tools (gcloud, gsutil, bq)
4
+ category: cloud
5
+ supports: []
6
+ requires: []
7
+ suggests: []
8
+ conflicts: []
9
+ tags:
10
+ - cloud
11
+ - gcp
12
+ - google
13
+ - cli
14
+ ports: []
@@ -0,0 +1,52 @@
1
+ #!/bin/bash
2
+ # Verification script for gcloud overlay
3
+ # Confirms Google Cloud SDK is installed
4
+
5
+ set -e
6
+
7
+ echo "🔍 Verifying gcloud overlay..."
8
+ echo ""
9
+
10
+ # Check gcloud is installed
11
+ echo "1️⃣ Checking gcloud CLI..."
12
+ if command -v gcloud &> /dev/null; then
13
+ gcloud version | head -1
14
+ echo " ✅ gcloud CLI found"
15
+ else
16
+ echo " ❌ gcloud CLI not found"
17
+ exit 1
18
+ fi
19
+
20
+ # Check gsutil is installed
21
+ echo ""
22
+ echo "2️⃣ Checking gsutil..."
23
+ if command -v gsutil &> /dev/null; then
24
+ gsutil version -l | head -1
25
+ echo " ✅ gsutil found"
26
+ else
27
+ echo " ❌ gsutil not found"
28
+ exit 1
29
+ fi
30
+
31
+ # Check bq is installed
32
+ echo ""
33
+ echo "3️⃣ Checking bq (BigQuery CLI)..."
34
+ if command -v bq &> /dev/null; then
35
+ bq version | head -1
36
+ echo " ✅ bq found"
37
+ else
38
+ echo " ❌ bq not found"
39
+ exit 1
40
+ fi
41
+
42
+ # Check GKE auth plugin
43
+ echo ""
44
+ echo "4️⃣ Checking GKE gcloud auth plugin..."
45
+ if command -v gke-gcloud-auth-plugin &> /dev/null; then
46
+ echo " ✅ GKE auth plugin found"
47
+ else
48
+ echo " ⚠️ GKE auth plugin not found (may not be required for all use cases)"
49
+ fi
50
+
51
+ echo ""
52
+ echo "✅ gcloud overlay verification complete"
@@ -0,0 +1,168 @@
1
+ # Git Helpers Overlay
2
+
3
+ Comprehensive Git tooling with GPG/SSH support, Git LFS, and GitHub CLI.
4
+
5
+ ## What's Included
6
+
7
+ - **Git** - Latest version with enhanced configuration
8
+ - **Git LFS** - Large File Storage support
9
+ - **GitHub CLI (gh)** - GitHub command-line tool
10
+ - **SSH Agent Forwarding** - Mounts host SSH keys (read-only)
11
+ - **GPG Support** - Mounts host GPG keys for commit signing
12
+ - **VS Code Extensions**:
13
+ - GitLens - Enhanced Git visualization
14
+ - GitHub Pull Requests - PR management in VS Code
15
+ - Git Graph - Interactive git graph visualization
16
+
17
+ ## Configuration
18
+
19
+ ### SSH Keys (Optional Mount)
20
+
21
+ To use your host SSH keys in the container, add this mount to your `devcontainer.json`:
22
+
23
+ ```json
24
+ "mounts": [
25
+ "source=${localEnv:HOME}${localEnv:USERPROFILE}/.ssh,target=/home/vscode/.ssh,type=bind,consistency=cached,readOnly=true"
26
+ ]
27
+ ```
28
+
29
+ This allows you to:
30
+
31
+ - Push/pull from Git repositories using SSH
32
+ - Use SSH agent forwarding
33
+ - Maintain existing SSH configurations
34
+
35
+ **Note**: Keys are mounted read-only for security. Generate new keys inside the container if needed.
36
+
37
+ ### GPG Keys (Optional Mount)
38
+
39
+ To use your host GPG keys in the container, add this mount to your `devcontainer.json`:
40
+
41
+ ```json
42
+ "mounts": [
43
+ "source=${localEnv:HOME}${localEnv:USERPROFILE}/.gnupg,target=/home/vscode/.gnupg,type=bind,consistency=cached"
44
+ ]
45
+ ```
46
+
47
+ **Important**: Only add this mount if you have a `~/.gnupg` directory on your host machine. Otherwise, the container may fail to start.
48
+
49
+ ### GPG Commit Signing
50
+
51
+ GPG commit signing is supported but requires manual setup:
52
+
53
+ 1. Import your GPG keys into the container, or generate new ones:
54
+
55
+ ```bash
56
+ # Generate a new key
57
+ gpg --full-generate-key
58
+
59
+ # Or import from your host (copy your key ID first on host with: gpg --list-secret-keys)
60
+ # On host: gpg --export-secret-keys YOUR_KEY_ID > key.gpg
61
+ # In container: gpg --import key.gpg
62
+ ```
63
+
64
+ 2. Configure Git to use your signing key:
65
+
66
+ ```bash
67
+ git config --global user.signingkey YOUR_KEY_ID
68
+ git config --global commit.gpgsign true
69
+ git config --global tag.gpgsign true
70
+ ```
71
+
72
+ **Note**: GPG keys are not automatically mounted to avoid container startup failures when `~/.gnupg` doesn't exist on the host.
73
+
74
+ ### GitHub CLI Authentication
75
+
76
+ Authenticate with GitHub:
77
+
78
+ ```bash
79
+ gh auth login
80
+ ```
81
+
82
+ Follow the interactive prompts to authenticate via browser or token.
83
+
84
+ ## Git LFS
85
+
86
+ Git LFS is pre-installed. To use it in your repository:
87
+
88
+ ```bash
89
+ # Initialize in your repo
90
+ git lfs install
91
+
92
+ # Track large files (e.g., videos, datasets)
93
+ git lfs track "*.mp4"
94
+ git lfs track "*.zip"
95
+
96
+ # Commit the .gitattributes file
97
+ git add .gitattributes
98
+ git commit -m "Configure Git LFS"
99
+ ```
100
+
101
+ ## Useful Git Aliases
102
+
103
+ A sample `.gitconfig-devcontainer` is created with useful aliases:
104
+
105
+ - `git st` - Status
106
+ - `git co` - Checkout
107
+ - `git br` - Branch
108
+ - `git ci` - Commit
109
+ - `git unstage` - Unstage files
110
+ - `git last` - Show last commit
111
+ - `git visual` - Pretty graph visualization
112
+ - `git amend` - Amend last commit without editing message
113
+
114
+ Include it in your `.gitconfig`:
115
+
116
+ ```ini
117
+ [include]
118
+ path = ~/.gitconfig-devcontainer
119
+ ```
120
+
121
+ ## GitHub CLI Usage
122
+
123
+ ```bash
124
+ # Create a pull request
125
+ gh pr create
126
+
127
+ # Check out a PR locally
128
+ gh pr checkout 123
129
+
130
+ # View repository issues
131
+ gh issue list
132
+
133
+ # Create a new repository
134
+ gh repo create
135
+ ```
136
+
137
+ ## Troubleshooting
138
+
139
+ ### SSH Permissions
140
+
141
+ If you encounter SSH permission errors, the setup script automatically fixes permissions:
142
+
143
+ - `~/.ssh` directory: 700
144
+ - SSH key files: 600
145
+
146
+ ### GPG Agent Issues
147
+
148
+ If GPG signing fails, ensure the GPG agent is running:
149
+
150
+ ```bash
151
+ gpg-agent --daemon
152
+ ```
153
+
154
+ ### Git LFS Not Tracking Files
155
+
156
+ Verify LFS is initialized in your repository:
157
+
158
+ ```bash
159
+ git lfs install
160
+ git lfs ls-files # List tracked files
161
+ ```
162
+
163
+ ## Security Notes
164
+
165
+ - SSH keys are mounted **read-only** from your host
166
+ - GPG keys are mounted with restricted permissions (700/600)
167
+ - Never commit private keys to your repository
168
+ - Use SSH agent forwarding for secure remote access
@@ -0,0 +1,33 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainer.base.schema.json",
3
+ "features": {
4
+ "ghcr.io/devcontainers/features/git:1": {
5
+ "ppa": true,
6
+ "version": "os-provided"
7
+ },
8
+ "ghcr.io/devcontainers/features/git-lfs:1": {
9
+ "version": "latest"
10
+ },
11
+ "ghcr.io/devcontainers/features/github-cli:1": {
12
+ "version": "latest"
13
+ }
14
+ },
15
+ "customizations": {
16
+ "vscode": {
17
+ "extensions": [
18
+ "eamodio.gitlens",
19
+ "github.vscode-pull-request-github",
20
+ "mhutchie.git-graph"
21
+ ],
22
+ "settings": {
23
+ "git.enableCommitSigning": false,
24
+ "git.enableSmartCommit": true,
25
+ "git.confirmSync": false,
26
+ "git.autofetch": true
27
+ }
28
+ }
29
+ },
30
+ "postStartCommand": {
31
+ "enable-git-safe-directory": "git config --global --add safe.directory ${containerWorkspaceFolder}"
32
+ }
33
+ }
@@ -0,0 +1,15 @@
1
+ id: git-helpers
2
+ name: Git Helpers
3
+ description: Git LFS, GitHub CLI, GPG/SSH support for secure Git operations
4
+ category: dev
5
+ supports: []
6
+ requires: []
7
+ suggests: []
8
+ conflicts: []
9
+ tags:
10
+ - dev
11
+ - git
12
+ - security
13
+ - ssh
14
+ - gpg
15
+ ports: []
@@ -0,0 +1,91 @@
1
+ #!/bin/bash
2
+ # Git helpers setup script
3
+
4
+ set -e
5
+
6
+ echo "🔧 Setting up Git helpers..."
7
+
8
+ # Verify Git installation
9
+ if command -v git &> /dev/null; then
10
+ echo "✓ Git installed: $(git --version)"
11
+ else
12
+ echo "✗ Git not found"
13
+ exit 1
14
+ fi
15
+
16
+ # Verify Git LFS installation
17
+ if command -v git-lfs &> /dev/null; then
18
+ echo "✓ Git LFS installed: $(git-lfs version)"
19
+ # Initialize Git LFS for the user
20
+ git lfs install --skip-repo
21
+ else
22
+ echo "✗ Git LFS not found"
23
+ exit 1
24
+ fi
25
+
26
+ # Verify GitHub CLI installation
27
+ if command -v gh &> /dev/null; then
28
+ echo "✓ GitHub CLI installed: $(gh --version | head -n 1)"
29
+ else
30
+ echo "✗ GitHub CLI not found"
31
+ exit 1
32
+ fi
33
+
34
+ # Set up SSH permissions if .ssh directory exists
35
+ if [ -d "$HOME/.ssh" ]; then
36
+ chmod 700 "$HOME/.ssh"
37
+ chmod 600 "$HOME/.ssh"/* 2>/dev/null || true
38
+ echo "✓ SSH directory permissions configured"
39
+ fi
40
+
41
+ # Set up GPG permissions if .gnupg directory exists
42
+ if [ -d "$HOME/.gnupg" ]; then
43
+ chmod 700 "$HOME/.gnupg"
44
+ chmod 600 "$HOME/.gnupg"/* 2>/dev/null || true
45
+ echo "✓ GPG directory permissions configured"
46
+ fi
47
+
48
+ # Create sample .gitconfig-include if it doesn't exist
49
+ if [ ! -f "$HOME/.gitconfig-devcontainer" ]; then
50
+ cat > "$HOME/.gitconfig-devcontainer" << 'EOF'
51
+ # Git configuration for devcontainer
52
+ # Include this in your .gitconfig with:
53
+ # [include]
54
+ # path = ~/.gitconfig-devcontainer
55
+
56
+ [core]
57
+ autocrlf = input
58
+ filemode = false
59
+
60
+ [push]
61
+ default = current
62
+ autoSetupRemote = true
63
+
64
+ [pull]
65
+ rebase = true
66
+
67
+ [rebase]
68
+ autoStash = true
69
+
70
+ # Useful aliases
71
+ [alias]
72
+ st = status
73
+ co = checkout
74
+ br = branch
75
+ ci = commit
76
+ unstage = reset HEAD --
77
+ last = log -1 HEAD
78
+ visual = log --graph --oneline --all --decorate
79
+ amend = commit --amend --no-edit
80
+ EOF
81
+ echo "✓ Sample .gitconfig-devcontainer created"
82
+ fi
83
+
84
+ echo "✓ Git helpers setup complete"
85
+ echo ""
86
+ echo "💡 Tips:"
87
+ echo " - SSH keys are mounted from your host ~/.ssh directory (read-only)"
88
+ echo " - GPG keys are mounted from your host ~/.gnupg directory"
89
+ echo " - To enable commit signing, set git.enableCommitSigning in VS Code settings"
90
+ echo " - Authenticate with GitHub CLI: gh auth login"
91
+ echo " - Initialize Git LFS in your repo: git lfs install"