Giter Club home page Giter Club logo

istio-operator's Introduction

Docker Automated build CircleCI Go Report Card license

Istio-operator

Istio-operator is a Kubernetes operator to deploy and manage Istio resources for a Kubernetes cluster.

Overview

Istio is an open platform to connect, manage, and secure microservices and it is emerging as the standard for building service meshes on Kubernetes. It is built out on multiple components and a rather complex deployment scheme (20+ CRDs). Installing, upgrading and operating these components requires deep understanding of Istio.

The goal of the Istio-operator is to automate and simplify these and enable popular service mesh use cases (multi cluster federation, multiple gateways support, resource reconciliation, etc) by introducing easy higher level abstractions.

Istio Operator

Istio operator vs Backyards

Backyards is Banzai Cloud's production ready Istio distribution. The Banzai Cloud Istio operator is a core part of Backyards, which helps with installing, upgrading and managing an Istio mesh, but Backyards provides many other components to conveniently secure, operate and observe Istio as well.

The differences are presented in this table:

Istio operator Backyards
Install Istio ✔️ ✔️
Manage Istio ✔️ ✔️
Upgrade Istio ✔️ ✔️
Uninstall Istio ✔️ ✔️
Multi cluster support ✔️ ✔️
Multiple gateways support ✔️ ✔️
Prometheus ✔️
Grafana ✔️
Jaeger ✔️
Cert manager ✔️
Dashboard ✔️
CLI ✔️
Enhanced observability ✔️
Topology graph ✔️
Live access logs ✔️
mTLS management ✔️
Gateway management ✔️
Sidecar management ✔️
Routing ✔️
Circuit Breaking ✔️
Fault Injection ✔️
Mirroring ✔️
Canary releases ✔️
Validations ✔️

For a complete list of Backyards features please check out the features page.

Istio operator installation

The operator (release-1.7 branch) installs the 1.7.0 version of Istio, and can run on Minikube v1.1.1+ and Kubernetes 1.15.0+.

As a pre-requisite it needs a Kubernetes cluster (you can create one using Pipeline).

  1. Set KUBECONFIG pointing towards your cluster
  2. Run make deploy (deploys the operator in the istio-system namespace to the cluster)
  3. Set your Istio configurations in a Kubernetes custom resource (sample: config/samples/istio_v1beta1_istio.yaml) and run this command to deploy the Istio components:
kubectl create -n istio-system -f config/samples/istio_v1beta1_istio.yaml

Installation with Backyards

Go grab and install Istio with the Backyards CLI tool.

curl https://getbackyards.sh | sh && backyards istio install

Installation with Helm

Alternatively, if you just can’t let go of Helm completely, you can deploy the operator using a Helm chart, which is available in the Banzai Cloud stable Helm repo:

helm repo add banzaicloud-stable https://kubernetes-charts.banzaicloud.com/
helm install --name=istio-operator --namespace=istio-system banzaicloud-stable/istio-operator

Installation with Kustomize

You can also have your own kustomization.yaml file with a reference to Istio operator as a base without the need to clone the repo. See more info in the Kustomize usage doc.

bases:
  - github.com/banzaicloud/istio-operator/config?ref=release-1.7
  - github.com/banzaicloud/istio-operator/config/overlays/auth-proxy-enabled?ref=release-1.7

Istio upgrade

Check out the upgrade docs to see how to upgrade between minor or major Istio versions.

Multi-cluster federation

Check out the multi-cluster federation docs.

Development

Check out the developer docs.

Uninstall

To remove Istio and Istio operator completely from your cluster execute the following steps:

  1. Delete the Istio configuration custom resource you have created earlier (Istio operator will take care of deleting all Istio resources from your cluster after the custom resource is deleted)
  2. Delete the istio-system namespace to delete Istio operator itself
kubectl delete -n istio-system -f config/samples/istio_v1beta1_istio.yaml
kubectl delete namespace istio-system

Issues, feature requests and roadmap

Please note that the Istio operator is constantly under development and new releases might introduce breaking changes. We are striving to keep backward compatibility as much as possible while adding new features at a fast pace. Issues, new features or bugs are tracked on the projects GitHub page - please feel free to add yours!

To track some of the significant features and future items from the roadmap, please visit the roadmap doc.

Contributing

If you find this project useful here's how you can help:

  • Send a pull request with your new features and bug fixes
  • Help new users with issues they may encounter
  • Support the development of this project and star this repo!

Community

If you have any questions about the Istio operator, and would like to talk to us and the other members of the Banzai Cloud community, please join our #istio-operator channel on Slack.

We also frequently write blog posts about Istio itself and the Istio operator.

License

Copyright (c) 2017-2020 Banzai Cloud, Inc.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

istio-operator's People

Contributors

ahma avatar asdwsda avatar baluchicken avatar filipcieker avatar khernyo avatar laci21 avatar martonsereg avatar matyix avatar mousavian avatar pepov avatar qvicksilver avatar rdeusser avatar res0nat0r avatar sagikazarmark avatar satishmane avatar tanjunchen avatar truongnh1992 avatar turip avatar waynz0r avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.