Skip to content

A Stack to Deploy Mesh Apps on Kubernetes Cluster via Helm Charts i.e. Istio etc.

Notifications You must be signed in to change notification settings

stakater-archive/StakaterMeshStack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Stakater Mesh Stack

Overview

This document provide guideline regarding the installation and usage of Istio on kubernetes cluster for creating service mesh.

Installation

This section provides step by step guideline regarding istio installation.

  • Create a namespace using the manifest given below in which istio and its dependencies will be installed:
{ 
  "kind": "Namespace", 
  "apiVersion": "v1", 
  "metadata": { 
    "name": "mesh", 
    "labels": { 
      "name": "mesh" 
    }
  }
}

Create the namespace using the command given below:

$ sudo kubectl apply -f namespace-creation-manifest.yaml
  • Istio can be installed in two ways:

    • Method 1: Follow the guidelines given in this link to install istio using kubernetes manifests.

    • Method 2: By using HelmRelease, its manifest is given below:

apiVersion: flux.weave.works/v1beta1
kind: HelmRelease
metadata:
  name: istio
  namespace: mesh
spec:
  releaseName: istio
  chart:
    repository: https://gcsweb.istio.io/gcs/istio-prerelease/daily-build/release-1.1-latest-daily/charts/
    name: istio
    version: 1.1.0
  values:
    prometheus:
      enabled: false

    mixer:
      telemetry:
        resources:
          requests:
            cpu: 100m
            memory: 500m

Currently, this chart is being used for Istio deployment.

Notes

This section explain the problems that has been faced during installation, deployment and usage of Istio.

Nginx-ingress Controller

  • Initially, we tried to use nginx-ingress controller to enable ingress for istio services(like jaeger) but the problem was with the traces because the requests done through nginx-ingress was not able to generate traces and no way was found on how to configure nginx-ingress controller with Istio.

    Although, we were able to get traces by using Istio ingress gateway on jaeger.

Proxy(sidecar) Container Injection

There are two ways to inject sidecar(proxy) container:

  • To manually inject sidecar use the instruction given on this link.

  • Istio by default monitors all namespaces but it only add sidecars(envoy) to those namespaces that have this label istio-injection:enabled assigned. To assign this label to a namespace use the command given below:

Disable sidecar injection in a pod

  • By default istio inserts sidecar containers in each pods(only if namespace has istio-injection: enabled) automatically, to disable sidecar injection in a pod add this annotation sidecarInjectorWebhook.enabled: "false" to pod annotations of a deployment.
$ sudo kubectl label namespace <namespace-name> istio-injection=enabled

CRD deletion issue

  • Sometimes due to ungraceful deletion of istio helm release CRDs will not be removed. There are two ways to delete remaining CRDs.

    • Method-1: Use the command given below to get all the CRDs and delete them one by one:
    $ sudo kubectl get crd
    
    $ sudo kubectl delete crd <crd-name>
    • Method-2: In this method we will use the manifest for crd creation to delete all the corresponding CRDs. First of all down the istio release. Move inside this folder (istio-X/install/kubernetes/helm/istio-init/files/) and run the command given below on each file:
    $ sudo kubectl delete -f <filename>.yaml

About

A Stack to Deploy Mesh Apps on Kubernetes Cluster via Helm Charts i.e. Istio etc.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •