istio.io/istio@v0.0.0-20240520182934-d79c90f27776/manifests/charts/gateway/README.md (about) 1 # Istio Gateway Helm Chart 2 3 This chart installs an Istio gateway deployment. 4 5 ## Setup Repo Info 6 7 ```console 8 helm repo add istio https://istio-release.storage.googleapis.com/charts 9 helm repo update 10 ``` 11 12 _See [helm repo](https://helm.sh/docs/helm/helm_repo/) for command documentation._ 13 14 ## Installing the Chart 15 16 To install the chart with the release name `istio-ingressgateway`: 17 18 ```console 19 helm install istio-ingressgateway istio/gateway 20 ``` 21 22 ## Uninstalling the Chart 23 24 To uninstall/delete the `istio-ingressgateway` deployment: 25 26 ```console 27 helm delete istio-ingressgateway 28 ``` 29 30 ## Configuration 31 32 To view support configuration options and documentation, run: 33 34 ```console 35 helm show values istio/gateway 36 ``` 37 38 ### Profiles 39 40 Istio Helm charts have a concept of a `profile`, which is a bundled collection of value presets. 41 These can be set with `--set profile=<profile>`. 42 For example, the `demo` profile offers a preset configuration to try out Istio in a test environment, with additional features enabled and lowered resource requirements. 43 44 For consistency, the same profiles are used across each chart, even if they do not impact a given chart. 45 46 Explicitly set values have highest priority, then profile settings, then chart defaults. 47 48 As an implementation detail of profiles, the default values for the chart are all nested under `defaults`. 49 When configuring the chart, you should not include this. 50 That is, `--set some.field=true` should be passed, not `--set defaults.some.field=true`. 51 52 ### OpenShift 53 54 When deploying the gateway in an OpenShift cluster, use the `openshift` profile to override the default values, for example: 55 56 ```console 57 helm install istio-ingressgateway istio/gateway --set profile=openshift 58 ``` 59 60 ### `image: auto` Information 61 62 The image used by the chart, `auto`, may be unintuitive. 63 This exists because the pod spec will be automatically populated at runtime, using the same mechanism as [Sidecar Injection](istio.io/latest/docs/setup/additional-setup/sidecar-injection). 64 This allows the same configurations and lifecycle to apply to gateways as sidecars. 65 66 Note: this does mean that the namespace the gateway is deployed in must not have the `istio-injection=disabled` label. 67 See [Controlling the injection policy](https://istio.io/latest/docs/setup/additional-setup/sidecar-injection/#controlling-the-injection-policy) for more info. 68 69 ### Examples 70 71 #### Egress Gateway 72 73 Deploying a Gateway to be used as an [Egress Gateway](https://istio.io/latest/docs/tasks/traffic-management/egress/egress-gateway/): 74 75 ```yaml 76 service: 77 # Egress gateways do not need an external LoadBalancer IP 78 type: ClusterIP 79 ``` 80 81 #### Multi-network/VM Gateway 82 83 Deploying a Gateway to be used as a [Multi-network Gateway](https://istio.io/latest/docs/setup/install/multicluster/) for network `network-1`: 84 85 ```yaml 86 networkGateway: network-1 87 ``` 88 89 ### Migrating from other installation methods 90 91 Installations from other installation methods (such as istioctl, Istio Operator, other helm charts, etc) can be migrated to use the new Helm charts 92 following the guidance below. 93 If you are able to, a clean installation is simpler. However, this often requires an external IP migration which can be challenging. 94 95 WARNING: when installing over an existing deployment, the two deployments will be merged together by Helm, which may lead to unexpected results. 96 97 #### Legacy Gateway Helm charts 98 99 Istio historically offered two different charts - `manifests/charts/gateways/istio-ingress` and `manifests/charts/gateways/istio-egress`. 100 These are replaced by this chart. 101 While not required, it is recommended all new users use this chart, and existing users migrate when possible. 102 103 This chart has the following benefits and differences: 104 * Designed with Helm best practices in mind (standardized values options, values schema, values are not all nested under `gateways.istio-ingressgateway.*`, release name and namespace taken into account, etc). 105 * Utilizes Gateway injection, simplifying upgrades, allowing gateways to run in any namespace, and avoiding repeating config for sidecars and gateways. 106 * Published to official Istio Helm repository. 107 * Single chart for all gateways (Ingress, Egress, East West). 108 109 #### General concerns 110 111 For a smooth migration, the resource names and `Deployment.spec.selector` labels must match. 112 113 If you install with `helm install istio-gateway istio/gateway`, resources will be named `istio-gateway` and the `selector` labels set to: 114 115 ```yaml 116 app: istio-gateway 117 istio: gateway # the release name with leading istio- prefix stripped 118 ``` 119 120 If your existing installation doesn't follow these names, you can override them. For example, if you have resources named `my-custom-gateway` with `selector` labels 121 `foo=bar,istio=ingressgateway`: 122 123 ```yaml 124 name: my-custom-gateway # Override the name to match existing resources 125 labels: 126 app: "" # Unset default app selector label 127 istio: ingressgateway # override default istio selector label 128 foo: bar # Add the existing custom selector label 129 ``` 130 131 #### Migrating an existing Helm release 132 133 An existing helm release can be `helm upgrade`d to this chart by using the same release name. For example, if a previous 134 installation was done like: 135 136 ```console 137 helm install istio-ingress manifests/charts/gateways/istio-ingress -n istio-system 138 ``` 139 140 It could be upgraded with 141 142 ```console 143 helm upgrade istio-ingress manifests/charts/gateway -n istio-system --set name=istio-ingressgateway --set labels.app=istio-ingressgateway --set labels.istio=ingressgateway 144 ``` 145 146 Note the name and labels are overridden to match the names of the existing installation. 147 148 Warning: the helm charts here default to using port 80 and 443, while the old charts used 8080 and 8443. 149 If you have AuthorizationPolicies that reference port these ports, you should update them during this process, 150 or customize the ports to match the old defaults. 151 See the [security advisory](https://istio.io/latest/news/security/istio-security-2021-002/) for more information. 152 153 #### Other migrations 154 155 If you see errors like `rendered manifests contain a resource that already exists` during installation, you may need to forcibly take ownership. 156 157 The script below can handle this for you. Replace `RELEASE` and `NAMESPACE` with the name and namespace of the release: 158 159 ```console 160 KINDS=(service deployment) 161 RELEASE=istio-ingressgateway 162 NAMESPACE=istio-system 163 for KIND in "${KINDS[@]}"; do 164 kubectl --namespace $NAMESPACE --overwrite=true annotate $KIND $RELEASE meta.helm.sh/release-name=$RELEASE 165 kubectl --namespace $NAMESPACE --overwrite=true annotate $KIND $RELEASE meta.helm.sh/release-namespace=$NAMESPACE 166 kubectl --namespace $NAMESPACE --overwrite=true label $KIND $RELEASE app.kubernetes.io/managed-by=Helm 167 done 168 ``` 169 170 You may ignore errors about resources not being found.