Six exciting enhancements in Istio 1.4.0
Istio 1.4.0 was released on November 14th, and it came with a lot of new features and enhancements. Here are my favorite six changes - most of them relate to installation and deployment. Note that there were a bunch of other changes introduced, so make sure you check the release notes.
1. Check if your cluster is ready for Istio
The new verify-install
command is a helpful thing you should run before you start installing Istio. By default, the command checks your cluster and reports whether your cluster is ready for Istio installation.
It checks the Kubernetes API, version and ensures it can create necessary resources, needed as part of the Istio installation.
In addition to the pre-check feature, you can also use the verify-install
command to check whether your Istio deployment matches a custom deployment configuration (i.e. a YAML file). The verify-install
command checks everything in the provided YAML file matches the actual deployment on your cluster. If it doesn't, it will let you know - for example:
istioctl verify-install -f istio-install.yaml
ClusterRole: istio-reader-istio-system.default checked successfully
ClusterRoleBinding: istio-reader-istio-system.default checked successfully
...
ClusterRoleBinding: istio-galley-admin-role-binding-istio-system.default checked successfully
Error: Istio installation failed, incomplete or does not match "test.yaml" - the required ConfigMap:galley-envoy-config is not ready due to: configmaps "galley-envoy-config" not found
2. Simplified installation with manifest command
Remember manually applying Istio CRDs? How about waiting for CRDs to get applied? Or using Helm to render the YAML? Well, guess what - no need for that anymore!
Istio 1.4.0 introduced a CLI command called manifest
. You can use the manifest command to generate, apply, diff, or migrate Istio manifests. Here's a one-liner for installing Istio 1.4.0 with Demo profile:
istioctl manifest apply --set profile=demo
If you're using a different profile, change the profile
variable value to one of these:
- minimal
- remote
- sds
- default
- demo
Also, no need to memorize these names; just run istioctl profile list
.
3. Installing with Istio operator (Experimental)
If you want to get more experimental, you can try out the Istio operator. You will have to install the operator first, by running:
kubectl apply -f https://istio.io/operator.yaml
The above command creates an istio-operator
namespace and deploys the operator. With the operator deployed, you can apply the IstioControlPlane
resource to install Istio with the demo profile:
cat <<EOF | kubectl apply -f -
apiVersion: install.istio.io/v1alpha2
kind: IstioControlPlane
metadata:
namespace: istio-operator
name: my-istio-control-plane
spec:
profile: demo
EOF
Once the Istio controller detects the new IstioControlPlane
resource, it begins installing Istio.
The nice thing about the operator is that you don't need to deal with the complex YAML installation files. Instead, you are dealing with simplified YAML file for the IstioControlPlane
resource. For example, to make updates or changes to the current installation of Istio, you need to modify and re-deploy the IstioControlPlane
resource - move from demo
to minimal
installation:
cat <<EOF | kubectl apply -f -
apiVersion: install.istio.io/v1alpha2
kind: IstioControlPlane
metadata:
namespace: istio-operator
name: my-istio-control-plane
spec:
profile: demo
EOF
You can check out the full list of available options for the Istio operator here.
4. Quickly open dashboards
No need for custom aliases anymore. With the dashboard
command you can quickly open Web UIs of any deployed dashboards:
istioctl dashboard grafana
Or even shorter command:
istioctl d prometheus
5. Mirror percentage of the traffic
The traffic mirroring or shadowing feature has been available in Istio for a while now. The percentage of the traffic that as going to the mirrored destination was always hardcoded to 100%. With the new mirror_percent
field, you can specify how much of the incoming traffic you want to mirror:
mirror:
host: my-service
subset: v2
mirror_percent: 40
6. Client libraries for Golang
If you're interacting with Istio programmatically, you'll probably welcome this change. The Golang Client Library for Istio APIs allows you to talk to Istio resources in your Kubernetes cluster.
Top comments (0)