diff --git a/public/images/blog/agents-on-every-cloud/kagent-ui-chat.png b/public/images/blog/agents-on-every-cloud/kagent-ui-chat.png new file mode 100644 index 00000000..47c1948b Binary files /dev/null and b/public/images/blog/agents-on-every-cloud/kagent-ui-chat.png differ diff --git a/src/app/blog/authors.ts b/src/app/blog/authors.ts index dc680bf9..854ce526 100644 --- a/src/app/blog/authors.ts +++ b/src/app/blog/authors.ts @@ -63,6 +63,13 @@ export const authors: Author[] = [ photo: "/images/authors/yanivmn.jpg", bio: "Passionate about cloud-native technologies and Kubernetes.", }, + { + id: "petrmcallister", + name: "Petr McAllister", + title: "Engineer at Solo.io", + photo: "", + bio: "Petr, Engineer at Solo.io, comes from a background as a solution architect and developer, now focusing on Service Mesh technologies with public clouds.", + }, ]; export const getAuthorById = (id: string): Author | undefined => { diff --git a/src/app/blog/page.tsx b/src/app/blog/page.tsx index bf75ba0e..5dd2c636 100644 --- a/src/app/blog/page.tsx +++ b/src/app/blog/page.tsx @@ -14,6 +14,13 @@ function shortDate(date: string) { } const posts = [ + { + slug: 'agents-on-every-cloud', + publishDate: '2026-08-27', + title: 'Agents on Every Cloud', + description: 'The open source distributions of kagent and agentgateway are now on the AWS, Azure, and Google Cloud marketplaces. Deploy both and connect them: from install to an agent served through agentgateway over A2A.', + authorId: 'petrmcallister', + }, { slug: 'dnb-kagent-agentgateway', publishDate: '2026-07-13', diff --git a/src/blogContent/agents-on-every-cloud.mdx b/src/blogContent/agents-on-every-cloud.mdx new file mode 100644 index 00000000..a534ff38 --- /dev/null +++ b/src/blogContent/agents-on-every-cloud.mdx @@ -0,0 +1,247 @@ +export const metadata = { + title: "Agents on Every Cloud", + publishDate: "2026-08-27T10:00:00Z", + description: "The open source distributions of kagent and agentgateway are now on the AWS, Azure, and Google Cloud marketplaces. Deploy both from your cloud's marketplace and connect them: from install to an agent served through agentgateway over A2A.", + author: "Petr McAllister", +} + +# Agents on Every Cloud + +Solo.io has published the open source distributions of [kagent](https://kagent.dev/) and [agentgateway](https://agentgateway.dev/) on all three major cloud marketplaces: AWS Marketplace, Microsoft Azure Marketplace, and Google Cloud Marketplace. Both are free to deploy, and both install into your cluster the same way you already consume other cloud services: subscribe, pick a cluster, done. No Helm repo setup, no copying manifests from a README, and the deployment shows up in your cloud account alongside everything else you run there. + +A quick word on the projects themselves. Both started at Solo.io and both were donated to open foundations: kagent is a CNCF project, and agentgateway is part of the Linux Foundation. kagent is a Kubernetes-native framework for building and running AI agents. You declare agents, model configurations, and MCP tools as Kubernetes resources, and the kagent controller runs them, with a web UI on top and pluggable LLM providers (OpenAI, Anthropic, Azure OpenAI, Gemini, Ollama). agentgateway is an AI-native data plane built on the [Kubernetes Gateway API](https://kubernetes.io/docs/concepts/services-networking/gateway/). It speaks the protocols agents actually use, MCP and A2A, and adds LLM routing and failover, prompt guards, and observability for agent traffic. + +Each one is useful on its own. Together, one extends the other: kagent gives you agents running in your cluster, and agentgateway extends them with a real network edge, so agents and tools stop being cluster-internal experiments and become services you can expose, secure, and observe like anything else in production. In the walkthrough below we deploy both from the marketplace and connect them. + +Here is where you can find the listings today: + +| | kagent | agentgateway | +|--------|--------|--------------| +| AWS Marketplace | [listing](https://aws.amazon.com/marketplace/pp/prodview-uhpbd45w7lk6e) | [listing](https://aws.amazon.com/marketplace/pp/prodview-i4d6q4pxvksz2) | +| Azure Marketplace | [listing](https://marketplace.microsoft.com/en-us/product/sologloo.kagent?tab=Overview) | [listing](https://marketplace.microsoft.com/en-us/product/sologloo.agentgateway?tab=Overview) | +| Google Cloud Marketplace | [listing](https://console.cloud.google.com/marketplace/product/solo-io/kagent) | [listing](https://console.cloud.google.com/marketplace/product/solo-io/agentgateway) | + +The exact install flow differs per cloud (EKS add-on or Helm on AWS, a Kubernetes application on Azure, click-to-deploy on Google Cloud), and each one has a dedicated walkthrough: + +- [Installing kagent and agentgateway from AWS Marketplace](https://www.solo.io/blog/installing-kagent-and-agentgateway-from-aws-marketplace) (EKS add-on and Helm) +- [Installing kagent and agentgateway from Azure Marketplace](https://www.solo.io/blog/installing-kagent-and-agentgateway-from-azure-marketplace) +- [Installing kagent and agentgateway from Google Cloud Marketplace](https://www.solo.io/blog/installing-kagent-and-agentgateway-from-google-cloud-marketplace) + +The rest of this post is the part that is the same everywhere: what you get after the marketplace install, and how the two products work together. Everything below was run on real marketplace installs across the three clouds with both products installed. + +## From marketplace install to a running agent + +You need a Kubernetes cluster, kubectl access to it, and an LLM provider API key (we use OpenAI here). kagent does not run any agents until a provider is configured, so the key is the one real prerequisite. + +agentgateway builds on the upstream Kubernetes Gateway API, so its only prerequisite is the standard CRDs: + +```bash +kubectl apply --server-side -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.5.0/standard-install.yaml +``` + +Install both products from your cloud's marketplace (steps in the per-cloud posts above). agentgateway lands in the `agentgateway-system` namespace and kagent in the `kagent` namespace. Whichever cloud you used, the result looks the same: + +```bash +$ kubectl get pods -n agentgateway-system +NAME READY STATUS RESTARTS AGE +agentgateway-cdd8744df-4rb7k 1/1 Running 0 2m + +$ kubectl get pods -n kagent +NAME READY STATUS RESTARTS AGE +kagent-controller-7974bb886-ch8v7 1/1 Running 0 5m +kagent-kmcp-controller-manager-bc49969c4-crhjv 1/1 Running 0 5m +kagent-postgresql-85d75cbd57-knpqf 1/1 Running 0 5m +kagent-tools-6cb4449d6b-hzfsr 1/1 Running 0 5m +kagent-ui-75f8449979-96km2 1/1 Running 0 5m +``` + +That is the whole platform: the kagent controller and UI, kmcp for serving MCP tools, a bundled PostgreSQL for state, and the agentgateway control plane watching for Gateway API resources. (Exact resource names vary a little per platform: on AKS, for example, they carry the extension instance name you chose at install, so `kagent-controller` becomes `-controller`.) kagent also registers a set of CRDs that make agents ordinary Kubernetes resources: + +```bash +$ kubectl get crd | grep kagent.dev +agentharnesses.kagent.dev +agents.kagent.dev +mcpservers.kagent.dev +memories.kagent.dev +modelconfigs.kagent.dev +modelproviderconfigs.kagent.dev +remotemcpservers.kagent.dev +sandboxagents.kagent.dev +toolservers.kagent.dev +``` + +## Configure a model provider + +Deployed on Google Cloud? Skip this section: the deploy form already collected your provider choice and created the `ModelConfig` (and secret, if the provider uses a key), so jump straight to creating an agent. + +On AWS and Azure, give kagent an LLM to talk to. Create a secret with your API key and a `ModelConfig` that references it: + +```bash +kubectl create secret generic kagent-openai -n kagent \ + --from-literal=OPENAI_API_KEY=$OPENAI_API_KEY +``` + +```bash +kubectl apply -f - < + +## Put agentgateway in front of it + +So far the agent lives inside the cluster, reachable through a port-forward. That is fine for a demo and not fine for anything real: other teams, other agents, and external callers need a governed way in, and you need to see and control that traffic. This is where agentgateway extends kagent. + +kagent exposes every agent over A2A (Agent2Agent), the open protocol for agent-to-agent communication, served by the kagent controller at `/api/a2a//`. agentgateway understands A2A natively, so exposing the agent is a plain Gateway API exercise: + +```bash +kubectl apply -f - <