{"id":16878779,"url":"https://github.com/peterj/snowcamp","last_synced_at":"2026-04-18T12:03:25.566Z","repository":{"id":145601239,"uuid":"159379717","full_name":"peterj/snowcamp","owner":"peterj","description":"Istio Workshop Material for Snowcamp 2019","archived":false,"fork":false,"pushed_at":"2019-01-24T09:29:25.000Z","size":2796,"stargazers_count":0,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-30T19:18:26.363Z","etag":null,"topics":["istio","kubernetes","minikube","snowcamp","workshop"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/peterj.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":"2018-11-27T18:17:41.000Z","updated_at":"2019-01-24T09:29:26.000Z","dependencies_parsed_at":null,"dependency_job_id":"a38f0fb2-61cf-490f-8820-999481bfbb78","html_url":"https://github.com/peterj/snowcamp","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/peterj/snowcamp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterj%2Fsnowcamp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterj%2Fsnowcamp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterj%2Fsnowcamp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterj%2Fsnowcamp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/peterj","download_url":"https://codeload.github.com/peterj/snowcamp/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterj%2Fsnowcamp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31967993,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T00:39:45.007Z","status":"online","status_checked_at":"2026-04-18T02:00:07.018Z","response_time":103,"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":["istio","kubernetes","minikube","snowcamp","workshop"],"created_at":"2024-10-13T15:51:21.883Z","updated_at":"2026-04-18T12:03:25.542Z","avatar_url":"https://github.com/peterj.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Service Mesh Patterns Workshop (snowcamp.io)\n\nPlease go through the instructions below to create a Kubernetes cluster with Istio installed. Alternatively, you can use any other cloud providers Kubernetes cluster offering. \n\nIf you're having issues installing Minikube and getting it to work, you should try Docker for Mac/Windows instead.\n\n## Setup Minikube with Istio\n\nThese instructions will help you set up and run a Kubernetes cluster using Minikube on your computer. When that's set up, we will download and install Istio on that cluster and at the end of this walkthrough, you will have a working Kubernetes cluster with Istio running on it.\n\n### Installing Prerequisites\n\nIn this section we will follow the steps to enable virtualization (if needed) and install all necessary prerequisites for running a Kubernetes cluster on your computer.\n\n#### Enable virtualization\nA prerequisite to running Minikube is to ensure that virtualization is enabled in your computer's BIOS. If you are running a Windows OS, you will have to reboot your computer, enter BIOS and enable a feature that's either called `Intel Virtualization Technology (Intel VT)` or `AMD-V`, depending on the brand of the processor. For MacOS, virtualizaiton is already enabled.\n\n#### Install Hypervisor\nWe will use VirtualBox hypervisor to run Minikube. VirtualBox can be installed on computers with Windows, Linux or MacOS.\n\n1. Download VirtualBox for your platform: \n    - [VirtualBox for Windows](https://download.virtualbox.org/virtualbox/5.2.22/VirtualBox-5.2.22-126460-Win.exe)\n    - [VirtualBox for OS X](https://download.virtualbox.org/virtualbox/5.2.22/VirtualBox-5.2.22-126460-OSX.dmg)\n    - [VirtualBox for Linux Distributions](https://www.virtualbox.org/wiki/Linux_Downloads)\n1. Run the install package and follow the instructions to install it.\n\n\n#### Install Minikube\n\n**MacOS**\n\nUse the following command that downloads the binary, makes is executable and puts it in your path by copying it to `/usr/local/bin`. Finally, it deletes the originally downloaded file:\n\n```bash\ncurl -Lo minikube https://storage.googleapis.com/minikube/releases/v0.30.0/minikube-darwin-amd64 \u0026\u0026 chmod +x minikube \u0026\u0026 sudo cp minikube /usr/local/bin/ \u0026\u0026 rm minikube\n```\n\nAlternatively, if you use Brew, run:\n```bash\nbrew cask install minikube\n```\n\n**Windows**\n\nDownload the executable from [here](https://github.com/kubernetes/minikube/releases/download/v0.30.0/minikube-windows-amd64), rename it to `minikube.exe` and add it to your path. Alternatively, you can try using the [installer](https://github.com/kubernetes/minikube/releases/download/v0.30.0/minikube-installer.exe) (experimental)\n\n**Linux**\n\nUse the following command that downloads the binary, makes is executable and puts it in your path by copying it to `/usr/local/bin`. Finally, it deletes the originally downloaded file:\n\n```bash\ncurl -Lo minikube https://storage.googleapis.com/minikube/releases/v0.30.0/minikube-linux-amd64 \u0026\u0026 chmod +x minikube \u0026\u0026 sudo cp minikube /usr/local/bin/ \u0026\u0026 rm minikube\n```\n\n#### Install Kubernetes CLI\n\nKubernetes CLI (`kubectl`) is a tool we will use to control the Kubernetes cluster. Version of the latest CLI at the time of writing this was `v1.12.0`. Kubernetes CLI uses a config file (located in `./kube/config`) that defines the different contexts and Kubernetes clusters. Once we install Minikube in the next section, you will use the `kubectl` to switch to the `minikube` cluster and basically tell the CLI that's the cluster we want to run our commands against. \n\n**MacOS**\n\n- Using curl (download the binary, make it executable and copy to path): \n    ```\n    curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/darwin/amd64/kubectl \u0026\u0026 chmod +x kubectl \u0026\u0026 sudo mv kubectl /usr/local/bin/kubectl\n    ```\n\n- Using Homebrew:\n    ```\n    brew install kubernetes-cli\n    ```\n\n**Windows**\n\nDownload the executable from [here](https://storage.googleapis.com/kubernetes-release/release/v1.12.0/bin/windows/amd64/kubectl.exe) and copy it to your path.\n\n**Linux**\n\nDownload the binary, make it executable and move it to the path:\n```bash\ncurl -LO https://storage.googleapis.com/kubernetes-release/release/v1.12.0/bin/linux/amd64/kubectl \u0026\u0026 chmod +x kubectl \u0026\u0026 sudo mv kubectl /usr/local/bin/kubectl\n```\n\n##### Verify the installation\nTo check the installation, simply run `kubectl version` and you should get see a response similar to this:\n\n```bash\n$ kubectl version\nClient Version: version.Info{Major:\"1\", Minor:\"10\", GitVersion:\"v1.10.0\", GitCommit:\"fc32d2f3698e36b93322a3465f63a14e9f0eaead\", GitTreeState:\"clean\", BuildDate:\"2018-03-26T16:55:54Z\", GoVersion:\"go1.9.3\", Compiler:\"gc\", Platform:\"darwin/amd64\"}\n```\n\n\u003eNote: there might be an error in the response as well, but that's because we don't have a running cluster to talk to yet.\n\n### Starting Minikube\n\nWith all prerequisites installed, it's time to start Minikube. Open the terminal/console window and type in the following command to start Minikube:\n\n```bash\nminikube start --memory=8192 --cpus=4 --vm-driver=\"virtualbox\"\n```\n\u003eNote: the above command might take some time as it will download the Minikube ISO and install/start everything needed to run Kubernetes.\n\nThe output from the start command should look something like this:\n```bash\n$ minikube start --memory=8192 --cpus=4\nStarting local Kubernetes v1.12.4 cluster...\nStarting VM...\nGetting VM IP address...\nMoving files into cluster...\nSetting up certs...\nConnecting to cluster...\nSetting up kubeconfig...\nStarting cluster components...\nKubectl is now configured to use the cluster.\nLoading cached images from config file.\n```\n\nWhen the above command finishes, you can run `minikube status` to ensure the cluster is up and running. You should get an output similar to this one: \n\n```bash\n$ minikube status\nminikube: Running\ncluster: Running\nkubectl: Correctly Configured: pointing to minikube-vm at 192.168.99.101\n```\n\nNext, we will use `kubectl` to switch to the `minikube` context, so we can talk to the cluster: \n```\nkubectl config use-context minikube\n```\n\u003eNote: alternatively, you can use a tool called [`kubectx`](https://github.com/ahmetb/kubectx) to quickly switch between contexts.\n\nFinally, run `minikube dashboard` to open the Kubernetes dashboard and confirm Kubernetes cluster is up and running (hint: click on the `Nodes` link on the left to see the information about the cluster).\n\nA couple of useful Minikube commands:\n\n- `minikube start` - starts the Kubernetes cluster\n- `minikube delete` - deletes the Kubernetes cluster, everything running in your cluster will be lost. Run this command if you want to start from a clean, empty cluster\n- `minikube stop` - stops the Kubernetes cluster\n- `minikube dashboard` - opens the Kubernetes dashboard in the browser\n- `minikube tunnel` - creates a tunnel, so you can access Services with LoadBalancer type by their actual IPs\n\n\n### Download and install Istio\n\nNow that we have the Kubernetes cluster set up, we can download and install Istio. \n\n**MacOS and Linux**\n\nDownload and install the latest Istio release: \n```\ncurl -L https://git.io/getLatestIstio | sh -\n```\n\u003eWarning: never blindly pipe any scripts to the shell. Always check the contents of the script before doing this.\n\nThe above script will download and extract the contents to the `istio-1.0.5` folder. This folder contains the installation files for Kubernetes, samples and the `istioctl` binary.\n\nLet's start by creating a symbolic link for `istioctl` (alternatively, you can copy the binary to `/usr/local/bin`). Open the `/istio-1.0.5/bin` folder in your terminal/console and run:\n\n```bash\nln -s $PWD/istioctl /usr/local/bin/istioctl\n```\n\n**Windows**\n\nDownload the executable from [here](https://github.com/istio/istio/releases/download/1.1.0-snapshot.3/istio-1.1.0-snapshot.3-win.zip) and extract the contents. Make sure the path to `istioctl` is in your `PATH` variable, so you can run it from anywhere.\n\n##### Verify the installation \nRun `istioctl version` and check that you get an output similar to this:\n```bash\nVersion: 1.0.5\nGitRevision: a44d4c8bcb427db16ca4a439adfbd8d9361b8ed3\nUser: root@0ead81bba27d\nHub: docker.io/istio\nGolangVersion: go1.10.4\nBuildStatus: Clean\n```\n\n#### Install Istio on the cluster\n\n1. Open the `istio-1.0.5` folder in your terminal/console.\n1. Install Istio custom resource definitions and wait for about a minute or so for the CRDs to get applied.\n    ```bash\n    kubectl apply -f install/kubernetes/helm/istio/templates/crds.yaml\n    ```\n1. Install Istio with mutual TLS authentication:\n    ```bash\n    kubectl apply -f install/kubernetes/istio-demo-auth.yaml\n    ```\n1. Wait for all pods to start (i.e. status changes to `Running` or `Completed`). Note that this can take a while as all images need to be downloaded and containers started. You can run the command below to check the status of pods:\n    ```bash\n    kubectl get pods -n istio-system \n    ```\n\nOnce you see output similar to the one below, you have successfully installed Istio on a Minikube Kubernetes cluster.\n\n```bash\n$ kubectl get pods -n istio-system\nNAME                                      READY     STATUS      RESTARTS   AGE\ngrafana-9cfc9d4c9-85fhm                   1/1       Running     0          20m\nistio-citadel-6d7f9c545b-j5g57            1/1       Running     0          20m\nistio-cleanup-secrets-dj2vp               0/1       Completed   0          20m\nistio-egressgateway-75dbb8f95d-vpbtx      1/1       Running     0          20m\nistio-galley-6d74549bb9-2qdbh             1/1       Running     0          20m\nistio-grafana-post-install-lqxdh          0/1       Completed   0          20m\nistio-ingressgateway-6bd4957bc-942th      1/1       Running     0          20m\nistio-pilot-7f8c49bbd8-55nd8              2/2       Running     0          20m\nistio-policy-6c65d8cff4-jtvzw             2/2       Running     0          20m\nistio-security-post-install-7w8cn         0/1       Completed   0          20m\nistio-sidecar-injector-74855c54b9-tp2xv   1/1       Running     0          20m\nistio-telemetry-65cdd46d6c-7jvpr          2/2       Running     0          20m\nistio-tracing-ff94688bb-df7jq             1/1       Running     0          20m\nprometheus-f556886b8-t4tvk                1/1       Running     0          20m\nservicegraph-778f94d6f8-45kcf             1/1       Running     0          20m\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpeterj%2Fsnowcamp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpeterj%2Fsnowcamp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpeterj%2Fsnowcamp/lists"}