Skip to content

Commit 810a4d2

Browse files
Merge pull request #201 from microsoft/v2
feat: introduce v2
2 parents e79d9ec + db11d70 commit 810a4d2

384 files changed

Lines changed: 41426 additions & 51199 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,37 @@
1+
# Include any files or directories that you don't want to be copied to your
2+
# container here (e.g., local build artifacts, temporary files, etc.).
3+
#
4+
# For more help, visit the .dockerignore file reference guide at
5+
# https://docs.docker.com/engine/reference/builder/#dockerignore-file
6+
7+
**/.DS_Store
8+
**/__pycache__
9+
**/.venv
10+
**/.classpath
11+
**/.dockerignore
12+
**/.env
13+
**/.git
14+
**/.gitignore
15+
**/.project
16+
**/.settings
17+
**/.toolstarget
18+
**/.vs
19+
**/.vscode
20+
**/*.*proj.user
21+
**/*.dbmdl
22+
**/*.jfm
23+
**/bin
24+
**/charts
25+
**/docker-compose*
26+
**/compose*
27+
**/Dockerfile*
28+
**/node_modules
29+
**/npm-debug.log
30+
**/obj
31+
**/secrets.dev.yaml
32+
**/values.dev.yaml
33+
LICENSE
34+
README.md
135
# UV and Python cache directories
236
**/__pycache__/
337
**/*.py[cod]

.flake8

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
max-line-length = 88
33
extend-ignore = E501
44
exclude = .venv, frontend
5-
ignore = E722,E203, W503, G004, G200, F,E711
5+
ignore = E722,E203, W503, G004, G200, F,E711,E704

.github/workflows/docker-build-and-push.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ jobs:
7171
DATE="${{ steps.date.outputs.date }}"
7272
GITHUB_RUN_NUMBER="${{ github.run_number }}"
7373
if [[ "$BRANCH" == "main" ]]; then
74-
BASE_TAG="latest"
74+
BASE_TAG="latest_v2"
7575
elif [[ "$BRANCH" == "dev" ]]; then
7676
BASE_TAG="dev"
7777
elif [[ "$BRANCH" == "demo" ]]; then

.github/workflows/job-deploy.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -427,17 +427,17 @@ jobs:
427427
428428
# Determine image tag based on branch
429429
if [[ "$BRANCH_NAME" == "main" ]]; then
430-
IMAGE_TAG="latest"
431-
echo "Using main branch - image tag: latest"
430+
IMAGE_TAG="latest_v2"
431+
echo "Using main branch - image tag: latest_v2"
432432
elif [[ "$BRANCH_NAME" == "dev" ]]; then
433433
IMAGE_TAG="dev"
434434
echo "Using dev branch - image tag: dev"
435435
elif [[ "$BRANCH_NAME" == "demo" ]]; then
436436
IMAGE_TAG="demo"
437437
echo "Using demo branch - image tag: demo"
438438
else
439-
IMAGE_TAG="latest"
440-
echo "Using default for branch '$BRANCH_NAME' - image tag: latest"
439+
IMAGE_TAG="latest_v2"
440+
echo "Using default for branch '$BRANCH_NAME' - image tag: latest_v2"
441441
fi
442442
443443
echo "Using existing Docker image tag: $IMAGE_TAG"

.vscode/settings.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"chat.tools.terminal.autoApprove": {
3+
"/^cd H:\\\\Works\\\\Code-Migration\\\\Container-Migration-Solution-Accelerator\\\\src\\\\backend-api ; python -m ruff check src/ --fix 2>&1$/": {
4+
"approve": true,
5+
"matchCommandLine": true
6+
},
7+
"npx eslint": true
8+
}
9+
}

README.md

Lines changed: 218 additions & 55 deletions
Large diffs are not rendered by default.

TRANSPARENCY_FAQ.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## What is the Container Migration Solution Accelerator?
44

5-
This solution accelerator is an open-source GitHub Repository designed to streamline the migration of Kubernetes workloads from various container platforms (EKS, GKE, etc.) to Azure Kubernetes Service (AKS). It automates the analysis, design, configuration transformation, and documentation generation processes to enhance the speed and accuracy of container platform migrations. The solution is built using Azure OpenAI Service, Semantic Kernel Process Framework, Model Context Protocol (MCP) servers, and Azure services integration.
5+
This solution accelerator is an open-source GitHub Repository designed to streamline the migration of Kubernetes workloads from various container platforms (EKS, GKE, etc.) to Azure Kubernetes Service (AKS). It automates the analysis, design, configuration transformation, and documentation generation processes to enhance the speed and accuracy of container platform migrations. The solution is built using Azure OpenAI Service, Microsoft Agent Framework (workflow + group chat orchestration), Model Context Protocol (MCP) servers, and Azure services integration.
66

77
## What can the Container Migration Solution Accelerator do?
88

@@ -40,7 +40,7 @@ The solution was evaluated using multiple approaches:
4040

4141
3. **Migration Coverage**: Testing across different source platforms (EKS, GKE) and various workload types (stateless applications, databases, monitoring systems, etc.).
4242

43-
4. **Process Framework Reliability**: Evaluation of the Semantic Kernel Process Framework's error handling, retry mechanisms, and failure recovery capabilities.
43+
4. **Process Framework Reliability**: Evaluation of the Agent Framework workflow's error handling, retry mechanisms, and failure recovery capabilities.
4444

4545
5. **Documentation Quality**: Assessment of generated documentation for completeness, accuracy, and actionability.
4646

docs/AgenticArchitecture.md

Lines changed: 73 additions & 106 deletions
Original file line numberDiff line numberDiff line change
@@ -1,110 +1,84 @@
11
# Agentic Architecture - Container Migration Solution Accelerator
22

3-
Based on your actual implementation, here's the comprehensive agentic architecture that mirrors the style of your reference image:
3+
High-level view of how the 4-step orchestration works (executors, group chat orchestrators, and tools).
44

55
## Architecture Overview
66

77
```mermaid
8-
graph TB
9-
subgraph "Entry Layer"
10-
WEB[Web App/Queue]
11-
SERVICE[Migration Service]
8+
flowchart LR
9+
%% Top-level orchestration + telemetry
10+
TELEM["Agent & Process Status<br/>(telemetry)"]
11+
COSMOS[("Cosmos DB<br/>telemetry/state")]
12+
PROC["Process Orchestration<br/>Agent Framework WorkflowBuilder"]
13+
14+
TELEM --> COSMOS
15+
PROC --- TELEM
16+
17+
%% Step lanes
18+
subgraph S1["Step 1: Analysis"]
19+
direction TB
20+
S1EXEC["Analysis Executor"] --> S1ORCH["Analysis Chat Orchestrator<br/>(GroupChatOrchestrator)"] --> S1AGENTS["Agents:<br/>Chief Architect<br/>AKS Expert<br/>Platform experts (EKS/GKE/OpenShift/Rancher/Tanzu/OnPremK8s)"]
1221
end
1322
14-
subgraph "Process Engine"
15-
PROC[Process Orchestrator<br/>Semantic Kernel]
23+
subgraph S2["Step 2: Design"]
24+
direction TB
25+
S2EXEC["Design Executor"] --> S2ORCH["Design Chat Orchestrator<br/>(GroupChatOrchestrator)"] --> S2AGENTS["Agents:<br/>Chief Architect<br/>AKS Expert<br/>Platform experts (EKS/GKE/OpenShift/Rancher/Tanzu/OnPremK8s)"]
1626
end
1727
18-
subgraph "Migration Steps"
19-
ANALYSIS[Analysis Step<br/>Platform Discovery]
20-
DESIGN[Design Step<br/>Azure Architecture]
21-
YAML[YAML Step<br/>Configuration Transform]
22-
DOCS[Documentation Step<br/>Report Generation]
28+
subgraph S3["Step 3: YAML Conversion"]
29+
direction TB
30+
S3EXEC["Convert Executor"] --> S3ORCH["YAML Chat Orchestrator<br/>(GroupChatOrchestrator)"] --> S3AGENTS["Agents:<br/>YAML Expert<br/>Azure Architect<br/>AKS Expert<br/>QA Engineer<br/>Chief Architect"]
2331
end
2432
25-
subgraph "AI Agents (7 Specialists)"
26-
AGENTS[Multi-Agent System<br/>• Technical Architect<br/>• Azure Expert<br/>• EKS/GKE Experts<br/>• QA Engineer<br/>• Technical Writer<br/>• YAML Expert]
33+
subgraph S4["Step 4: Documentation"]
34+
direction TB
35+
S4EXEC["Documentation Executor"] --> S4ORCH["Documentation Chat Orchestrator<br/>(GroupChatOrchestrator)"] --> S4AGENTS["Agents:<br/>Technical Writer<br/>Azure Architect<br/>AKS Expert<br/>Chief Architect<br/>Platform experts (EKS/GKE/OpenShift/Rancher/Tanzu/OnPremK8s)"]
2736
end
2837
29-
subgraph "Tool Layer"
30-
MCP[MCP Servers<br/>• Blob Storage<br/>• Microsoft Docs<br/>• DateTime Utils]
31-
end
32-
33-
subgraph "Storage Layer"
34-
STORAGE[Azure Services<br/>• Blob Storage<br/>• Cosmos DB<br/>• OpenAI GPT o3]
35-
end
38+
PROC --> S1
39+
S1 -->|Analysis Result| S2
40+
S2 -->|Design Result| S3
41+
S3 -->|YAML Converting Result| S4
3642
37-
%% Main Flow
38-
WEB --> SERVICE
39-
SERVICE --> PROC
40-
PROC --> ANALYSIS
41-
ANALYSIS --> DESIGN
42-
DESIGN --> YAML
43-
YAML --> DOCS
44-
45-
%% AI Integration
46-
ANALYSIS -.-> AGENTS
47-
DESIGN -.-> AGENTS
48-
YAML -.-> AGENTS
49-
DOCS -.-> AGENTS
50-
51-
%% Tool Access
52-
AGENTS -.-> MCP
53-
MCP -.-> STORAGE
54-
55-
%% Styling for better readability
56-
classDef entryLayer fill:#e3f2fd,stroke:#1976d2,stroke-width:3px,color:#000
57-
classDef processLayer fill:#fff3e0,stroke:#f57c00,stroke-width:3px,color:#000
58-
classDef stepLayer fill:#f3e5f5,stroke:#7b1fa2,stroke-width:3px,color:#000
59-
classDef agentLayer fill:#e8f5e8,stroke:#388e3c,stroke-width:3px,color:#000
60-
classDef toolLayer fill:#fce4ec,stroke:#c2185b,stroke-width:3px,color:#000
61-
classDef storageLayer fill:#e1f5fe,stroke:#0288d1,stroke-width:3px,color:#000
62-
63-
class WEB,SERVICE entryLayer
64-
class PROC processLayer
65-
class ANALYSIS,DESIGN,YAML,DOCS stepLayer
66-
class AGENTS agentLayer
67-
class MCP toolLayer
68-
class STORAGE storageLayer
6943
```
7044

7145
## Agent Specialization by Phase
7246

7347
### Analysis Phase Agents
7448

75-
- **Technical Architect**: Leads overall analysis strategy and coordination
76-
- **EKS Expert**: Identifies AWS EKS-specific patterns and configurations
77-
- **GKE Expert**: Identifies Google GKE-specific patterns and configurations
49+
- **Chief Architect**: Leads overall analysis strategy and coordination
50+
- **AKS Expert**: Reviews for AKS/Azure migration readiness
51+
- **Platform experts**: Registry-loaded participants (EKS/GKE/OpenShift/Rancher/Tanzu/OnPremK8s); coordinator keeps non-matching experts quiet
7852

7953
### Design Phase Agents
8054

81-
- **Technical Architect**: Defines migration architecture patterns
82-
- **Azure Expert**: Designs Azure service mappings and optimizations
83-
- **EKS Expert**: Provides source platform context for AWS workloads
84-
- **GKE Expert**: Provides source platform context for GCP workloads
55+
- **Chief Architect**: Defines migration architecture patterns and reconciles trade-offs
56+
- **AKS Expert**: Ensures AKS-specific conventions and constraints are applied
57+
- **Platform experts**: Provide source-platform context and constraints for the detected platform
8558

8659
### YAML Conversion Phase Agents
8760

8861
- **YAML Expert**: Performs configuration transformations and syntax optimization
89-
- **Azure Expert**: Ensures Azure service integration and compliance
62+
- **Azure Architect**: Ensures Azure service integration and compliance
63+
- **AKS Expert**: Ensures converted manifests align with AKS expectations
9064
- **QA Engineer**: Validates converted configurations and tests
91-
- **Technical Writer**: Documents conversion decisions and generates reports
65+
- **Chief Architect**: Provides overall review and integration
9266

9367
### Documentation Phase Agents
9468

95-
- **Technical Architect**: Provides architectural documentation and migration summary
96-
- **Azure Expert**: Documents Azure-specific configurations and optimizations
97-
- **EKS/GKE Experts**: Document source platform analysis and transformation logic
98-
- **QA Engineer**: Provides validation reports and testing documentation
9969
- **Technical Writer**: Creates comprehensive migration documentation
70+
- **Azure Architect**: Documents Azure-specific configurations and optimizations
71+
- **AKS Expert**: Documents AKS-focused implementation guidance and caveats
72+
- **Chief Architect**: Provides architectural documentation and migration summary
73+
- **Platform experts**: Document source platform analysis and transformation logic
10074

10175
## Data Flow Architecture
10276

10377
### Input Processing
10478

105-
1. **Queue Service** receives migration requests from web app or direct API
106-
2. **Migration Service** processes queue messages and initiates migration process
107-
3. **Process Orchestrator** manages step-by-step execution with event routing
79+
1. **Web app** creates a migration request
80+
2. **Queue worker service** receives the migration request from **Azure Storage Queue**
81+
3. **Migration Processor** runs the end-to-end workflow (analysis → design → yaml → documentation)
10882

10983
### Step Execution Pattern
11084

@@ -121,11 +95,13 @@ Each step follows this pattern:
12195

12296
### MCP Server Integration
12397

124-
All agents have access to Model Context Protocol (MCP) servers via Semantic Kernel plugin:
98+
All agents have access to Model Context Protocol (MCP) servers via Microsoft Agent Framework tool abstractions:
12599

126100
- **Blob Operations**: File reading/writing to Azure Blob Storage
127101
- **Microsoft Docs**: Azure documentation lookup and best practices
128102
- **DateTime Utilities**: Timestamp generation and time-based operations
103+
- **Fetch**: URL fetching for validation (e.g., verifying references)
104+
- **YAML Inventory**: Enumerate converted YAML objects for runbooks
129105

130106
## Key Architectural Principles
131107

@@ -140,22 +116,27 @@ Each step has a focused objective:
140116

141117
### Event-Driven Orchestration
142118

143-
Steps communicate through Semantic Kernel events:
144-
145-
- `StartMigration` → Analysis Step
146-
- `AnalysisCompleted` → Design Step
147-
- `DesignCompleted` → YAML Step
148-
- `YamlCompleted` → Documentation Step
119+
Steps are executed as a directed workflow (with start node and edges) using the Agent Framework workflow engine.
120+
The processor emits workflow/executor events for observability and telemetry.
149121

150122
### Multi-Agent Collaboration
151123

152-
Within each step, specialized agents collaborate through GroupChat orchestration:
124+
Within each step, specialized agents collaborate through group chat orchestration:
153125

154126
- Structured conversation patterns
155127
- Domain expertise contribution
156128
- Consensus building on decisions
157129
- Quality validation and review
158130

131+
### Evaluation and Quality Checks
132+
133+
The processor uses multiple quality signals to reduce regressions and increase reliability:
134+
135+
- **Typed step outputs**: workflow executors and orchestrators exchange typed models per step (analysis → design → yaml → documentation).
136+
- **QA sign-offs**: the QA agent focuses on validation steps and flags missing/unsafe transformations.
137+
- **Tool-backed validation**: steps can call validation tools via MCP (e.g., Mermaid validation, YAML inventory grounding, docs lookups).
138+
- **Unit tests**: processor unit tests live under [src/processor/src/tests/unit/](../src/processor/src/tests/unit/).
139+
159140
### Tool-Enabled Intelligence
160141

161142
Agents access external capabilities through MCP servers:
@@ -176,41 +157,27 @@ Comprehensive tracking throughout the process:
176157
## File Location Mapping
177158

178159
```text
179-
src/
180-
├── main_service.py # Queue Service Entry Point
181-
├── services/migration_service.py # Migration Orchestration
182-
├── libs/processes/
183-
│ └── aks_migration_process.py # Process Framework Definition
184-
├── libs/steps/
185-
│ ├── analysis_step.py # Analysis Step Implementation
186-
│ ├── design_step.py # Design Step Implementation
187-
│ ├── yaml_step.py # YAML Step Implementation
188-
│ └── documentation_step.py # Documentation Step Implementation
189-
├── libs/steps/orchestration/
190-
│ ├── analysis_orchestration.py # Analysis Agent Orchestration
191-
│ ├── design_orchestration.py # Design Agent Orchestration
192-
│ ├── yaml_orchestration.py # YAML Agent Orchestration
193-
│ └── documentation_orchestration.py # Documentation Agent Orchestration
194-
├── agents/
195-
│ ├── technical_architect/agent_info.py
196-
│ ├── azure_expert/agent_info.py
197-
│ ├── eks_expert/agent_info.py
198-
│ ├── gke_expert/agent_info.py
199-
│ ├── qa_engineer/agent_info.py
200-
│ ├── technical_writer/agent_info.py
201-
│ └── yaml_expert/agent_info.py
202-
└── plugins/mcp_server/
203-
├── MCPBlobIOPlugin.py # Azure Blob Storage MCP Server
204-
├── MCPMicrosoftDocs.py # Microsoft Docs MCP Server
205-
└── MCPDatetimePlugin.py # DateTime Utilities MCP Server
160+
src/processor/src/
161+
├── main_service.py # Queue worker entry point
162+
├── services/queue_service.py # Azure Storage Queue consumer
163+
├── services/control_api.py # Control API (health/kill)
164+
├── services/process_control.py # Process control store/manager
165+
├── steps/migration_processor.py # WorkflowBuilder + step chaining
166+
├── steps/analysis/workflow/analysis_executor.py
167+
├── steps/design/workflow/design_executor.py
168+
├── steps/convert/workflow/yaml_convert_executor.py
169+
└── steps/documentation/
170+
├── orchestration/documentation_orchestrator.py
171+
├── workflow/documentation_executor.py
172+
└── agents/ # Agent prompt files
206173
```
207174

208175
## Summary
209176

210177
This architecture implements a sophisticated agentic system that combines:
211178

212-
- **Semantic Kernel Process Framework** for structured workflow execution
213-
- **Multi-Agent GroupChat Orchestration** for domain expertise collaboration
179+
- **Microsoft Agent Framework Workflow** for structured workflow execution
180+
- **Multi-Agent Group Chat Orchestration** for domain expertise collaboration
214181
- **Model Context Protocol (MCP)** for tool integration and external system access
215182
- **Azure Cloud Services** for scalable storage and data management
216183
- **Event-Driven Architecture** for loose coupling and reliability

0 commit comments

Comments
 (0)