{"id":19906053,"url":"https://github.com/sdake/multicloud","last_synced_at":"2025-08-04T05:36:11.708Z","repository":{"id":140555311,"uuid":"189782104","full_name":"sdake/multicloud","owner":"sdake","description":"A multicloud demonstration presented at KubeCon 2019 EU featuring the Hipster Shop across AKS, GKE, and On-Premises","archived":false,"fork":false,"pushed_at":"2019-11-19T18:31:48.000Z","size":147,"stargazers_count":13,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-03T01:47:53.971Z","etag":null,"topics":["aks","aws","azure","demo","eks","gke","googlecloudplatform","istio","multicloud","on-premises","servicemesh"],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sdake.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-06-01T22:15:54.000Z","updated_at":"2022-09-28T22:05:04.000Z","dependencies_parsed_at":null,"dependency_job_id":"221d5129-fbd5-4100-ba79-3d754dd64ab5","html_url":"https://github.com/sdake/multicloud","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sdake/multicloud","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sdake%2Fmulticloud","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sdake%2Fmulticloud/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sdake%2Fmulticloud/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sdake%2Fmulticloud/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sdake","download_url":"https://codeload.github.com/sdake/multicloud/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sdake%2Fmulticloud/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268654991,"owners_count":24285127,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-04T02:00:09.867Z","response_time":79,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aks","aws","azure","demo","eks","gke","googlecloudplatform","istio","multicloud","on-premises","servicemesh"],"created_at":"2024-11-12T20:35:17.893Z","updated_at":"2025-08-04T05:36:11.699Z","avatar_url":"https://github.com/sdake.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Istio Three (3) Cluster Multicloud Demo\n\nThis is a demonstration of the [Hipster Shop](https://github.com/GoogleCloudPlatform/microservices-demo) running across three Kubernetes environments\n(Azure, GKE, and On-premises) using [Istio](https://istio.io).  The\ndemonstration was originally given to the audience at\n[KubeCon EU 2019](https://sched.co/MPbL):\n\n- [Reinventing Networking: A Deep Dive into Istio's Multicluster Gateways - Steve Dake, Independent](https://youtu.be/-t2BfT59zJA)\n\nFor those that want to skip ahead, the\n[demo is here](https://youtu.be/-t2BfT59zJA?t=982).\n\nThe objective of this repository is to teach new contributors how multicloud\nworks with [Istio](https://istio.io).  As such, nothing all that advanced\nis used beyond `bash`, `helm`, and `kubectl` commands.  Once you are up\nto speed, come [join us](https://istio.io/about/community/join/)\ndevelop `#multicloud` in the [Istio](https://github.com/istio) project.\n\n## Architecture\n\nThe Hipster Shop includes 10 microservices.  Full details of the architecture\nand implementation of the Hipster Shop are available in that project.  This\narchitecture diagram shows how the Hipster shop is split across 3 clouds.\n\n\u003cimg src=\"./assets/Kubecon 2019 EU - Hipster Architecture Diagram.svg\"\u003e\n\n\n## Files in this repository\n\n| Component | Description |\n| --- | --- |\n| `license_header.txt` | A license header placed at the front of every K8s manifest |\n| `make-manifests.sh` | Creates K8s manifests from a git clone of `../microservices-demo` |\n| `manifests` | Manifests generated from the `make-manifests.sh` script |\n| `onprem` | Scripts to install docker, kubeadm/kubelet, and deploy Kubernetes |\n\n## Deploying the three (3) Kubernetes environments:\n\nThese steps are incomplete.  This text will be removed when the steps are\naccurate and confirmed.\n\n### Prequisities\n\n- There must be at minimum one Kubernetes control plane node and 1 Kubernetes\n  worker node.  Most kubernetes cloud controllers suffer from\n  [an issue](https://github.com/kubernetes/kubeadm/issues/425)\n  that does not permit the scheduling of services of type load balancer to an\n  `all-in-one` deployment.\n- For On-Premises clusters using\n  [metallb](https://metallb.universe.tf/installation/), `all-in-one`\n  deployments Of Kubernetes and Istio work well.\n- Three clusters are needed.  This demo uses Azure AKS, Google Cloud's GKE,\n  and Kubernetes deployed on-premesis.  The demo works equally well in one cloud\n  provider or many.  To demonstrate the full power of [Istio](https://istio.io)\n  the most challenging deployment scenario was chosen.\n- Each cluster must implement a proper load balancer.  Network load balancers\n  are the optimal choice, although others can be made to work with some\n  specific hacks, err, `systems engineering`.\n- One load balancer must be available in the quota of the cloud provider.\n- Sufficient security group rules quota must be available for Istio and the\n  demonstration app.  I have found through experimentation this number is\n  at most 200 rules per cluster.  Amazon Web Services defaults to 60 security\n  groups per VPC, so you will need to request a quota increase to run\n  this demo against AWS.\n- Each cluster must meet the minimum requirements below to launch the demo\n  properly.  The CPU/Memory requests have been set to their minimums for Istio\n  in the Istio manifests.\n\n| CPU | Memory |\n| --- | --- |\n| 10 vCPU | 16.0 GiB |\n\n### Deploy an AKS cluster\n\nPlease follow the 5 minute quickstart for [Azure CLI](https://docs.microsoft.com/en-us/azure/aks/kubernetes-walkthrough) or [Azure Portal](https://docs.microsoft.com/en-us/azure/aks/kubernetes-walkthrough-portal) to deploy a properly sized K8s cluster.\n\n### Deploy a GKE cluster\n\nPlease follow the [GKE How-To](https://cloud.google.com/kubernetes-engine/docs/how-to/creating-a-cluster) to deploy a properly sized K8s cluster.\n\n### Deploy an On-Premises cluster\n\nPlease install Kubernetes and kubeadm and deploy an `all-in-one` cluster with\n[metallb](https://metallb.universe.tf/installation/).\n\nThere are several helper scripts in the `onprem` directory to install Kubernetes\nand depooy Kubernetes 1.14.2 with metallb.  I recommend using these if you don't\nalready have Kubernetes up and running.\n\nIn any event, it is mandatory to intall a Load Balancer provider.  Typically\nthis is provided by an internal or external cloud provider, however, in the\ncase of bare metal, metallb works well for this purpose.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsdake%2Fmulticloud","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsdake%2Fmulticloud","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsdake%2Fmulticloud/lists"}