|
14 | 14 | - [Installing through the web console](#installing-through-the-web-console) |
15 | 15 | - [Installing using the CLI](#installing-using-the-cli) |
16 | 16 | - [Installation from Source](#installation-from-source) |
| 17 | +- [Migrating from Istio in-cluster Operator](#migrating-from-istio-in-cluster-operator) |
17 | 18 | - [Gateways](#gateways) |
18 | 19 | - [Update Strategy](#update-strategy) |
19 | 20 | - [InPlace](#inplace) |
|
64 | 65 | memory: 1024Mi |
65 | 66 | ``` |
66 | 67 |
|
| 68 | +Istio uses a ConfigMap for its global configuration, called the MeshConfig. All of its settings are available through `spec.meshConfig`. |
| 69 | + |
67 | 70 | To support canary updates of the control plane, Sail Operator includes support for multiple Istio versions. You can select a version by setting the `version` field in the `spec` to the version you would like to install, prefixed with a `v`. You can then update to a new version just by changing this field. |
68 | 71 |
|
69 | 72 | Sail Operator supports two different update strategies for your control planes: `InPlace` and `RevisionBased`. When using `InPlace`, the operator will immediately replace your existing control plane resources with the ones for the new version, whereas `RevisionBased` uses Istio's canary update mechanism by creating a second control plane to which you can migrate your workloads to complete the update. |
@@ -187,6 +190,57 @@ is installed. `Succeeded` should appear in the **Status** column. |
187 | 190 |
|
188 | 191 | If you're not using OpenShift or simply want to install from source, follow the [instructions in the Contributor Documentation](../README.md#deploying-the-operator). |
189 | 192 |
|
| 193 | +## Migrating from Istio in-cluster Operator |
| 194 | + |
| 195 | +If you're planning to migrate from the [now-deprecated Istio in-cluster operator](https://istio.io/latest/blog/2024/in-cluster-operator-deprecation-announcement/) to the Sail Operator, you will have to make some adjustments to your Kubernetes Resources. While direct usage of the IstioOperator resource is not possible with the Sail Operator, you can very easily transfer all your settings to the respective Sail Operator APIs. As shown in the [Concepts](#concepts) section, every API resource has a `spec.values` field which accepts the same input as the `IstioOperator`'s `spec.values` field. Also, the [Istio resource](#istio-resource) provides a `spec.meshConfig` field, just like IstioOperator does. |
| 196 | + |
| 197 | +Another important distinction between the two operators is that Sail Operator can manage and install different versions of Istio and its components, whereas the in-cluster operator always installs the version of Istio that it was released with. This makes managing control plane upgrades much easier, as the operator update is disconnected from the control plane update. |
| 198 | + |
| 199 | +So for a simple Istio deployment, the transition will be very easy: |
| 200 | + |
| 201 | +```yaml |
| 202 | +apiVersion: install.istio.io/v1alpha1 |
| 203 | +kind: IstioOperator |
| 204 | +spec: |
| 205 | + meshConfig: |
| 206 | + accessLogFile: /dev/stdout |
| 207 | + values: |
| 208 | + pilot: |
| 209 | + traceSampling: 0.1 |
| 210 | +``` |
| 211 | + |
| 212 | +becomes |
| 213 | + |
| 214 | +```yaml |
| 215 | +apiVersion: sailoperator.io/v1alpha1 |
| 216 | +kind: Istio |
| 217 | +spec: |
| 218 | + meshConfig: |
| 219 | + accessLogFile: /dev/stdout |
| 220 | + values: |
| 221 | + pilot: |
| 222 | + traceSampling: 0.1 |
| 223 | + version: v1.23.0 |
| 224 | +``` |
| 225 | + |
| 226 | +Note that the only field that was added is the `spec.version` field. There are a few situations however where the APIs are different and require different approaches to achieve the same outcome. |
| 227 | + |
| 228 | +### Gateways |
| 229 | + |
| 230 | +Sail Operator does not support deploying Gateways using `spec.values.gateways`, only Gateway Injection and Gateway API are currently supported. See the [Gateways](#gateways) section for more information. |
| 231 | + |
| 232 | +### components field |
| 233 | + |
| 234 | +Sail Operator's Istio resource does not have a `spec.components` field. Instead, you can enable and disable components directly by setting `spec.values.<component>.enabled: true/false`. Other functionality exposed through `spec.components` like the k8s overlays is not currently available. |
| 235 | + |
| 236 | +### CNI |
| 237 | + |
| 238 | +The CNI plugin's lifecycle is managed separately from the control plane. You will have to create a [IstioCNI resource](#istiocni-resource) to use CNI. |
| 239 | + |
| 240 | +### istiod-remote |
| 241 | + |
| 242 | +The functionality of the istiod-remote chart is exposed through the [RemoteIstio resource](#remoteistio-resource). |
| 243 | + |
190 | 244 | ## Gateways |
191 | 245 |
|
192 | 246 | The Sail Operator does not manage Gateways. You can deploy a gateway manually either through [gateway-api](https://istio.io/latest/docs/tasks/traffic-management/ingress/gateway-api/) or through [gateway injection](https://istio.io/latest/docs/setup/additional-setup/gateway/#deploying-a-gateway). As you are following the gateway installation instructions, skip the step to install Istio since this is handled by the Sail Operator. |
|
0 commit comments