Skip to content

Commit 546ce46

Browse files
Merge pull request openshift-service-mesh#135 from openshift-service-mesh-bot/none-main-merge_upstream_main-38a843ce
Automator: merge upstream changes to openshift-service-mesh/sail-operator@main
2 parents d1f362a + b0f6c83 commit 546ce46

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed

docs/README.md

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
- [Installing through the web console](#installing-through-the-web-console)
1515
- [Installing using the CLI](#installing-using-the-cli)
1616
- [Installation from Source](#installation-from-source)
17+
- [Migrating from Istio in-cluster Operator](#migrating-from-istio-in-cluster-operator)
1718
- [Gateways](#gateways)
1819
- [Update Strategy](#update-strategy)
1920
- [InPlace](#inplace)
@@ -64,6 +65,8 @@ spec:
6465
memory: 1024Mi
6566
```
6667
68+
Istio uses a ConfigMap for its global configuration, called the MeshConfig. All of its settings are available through `spec.meshConfig`.
69+
6770
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.
6871

6972
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.
187190

188191
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).
189192

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+
190244
## Gateways
191245

192246
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

Comments
 (0)