-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Loading status checks…
Update Istio charts 1.20.5+1 legacy (#65)
- istio-1.24.0-tetrate-v0
- istio-1.23.5-tetrate-v7
- istio-1.23.5-tetrate-v6
- istio-1.23.5-tetrate-v5
- istio-1.23.5-tetrate-v4
- istio-1.23.5-tetrate-v3
- istio-1.23.5-tetrate-v2
- istio-1.23.5-tetrate-v1
- istio-1.23.5-tetrate-v0
- istio-1.23.4-tetrate-v3
- istio-1.23.4-tetrate-v2
- istio-1.23.4-tetrate-v1
- istio-1.23.4-tetrate-v0
- istio-1.23.3-tetrate-v3
- istio-1.23.3-tetrate-v2
- istio-1.23.3-tetrate-v1
- istio-1.23.3-tetrate-v0
- istio-1.23.2-tetrate-v3
- istio-1.23.2-tetrate-v2
- istio-1.23.2-tetrate-v1
- istio-1.23.2-tetrate-v0
- istio-1.23.1-tetrate-v0
- istio-1.23.0-tetrate-v2
- istio-1.23.0-tetrate-v1
- istio-1.23.0-tetrate-v0
- istio-1.22.8-tetrate-v9
- istio-1.22.8-tetrate-v8
- istio-1.22.8-tetrate-v7
- istio-1.22.8-tetrate-v6
- istio-1.22.8-tetrate-v5
- istio-1.22.8-tetrate-v4
- istio-1.22.8-tetrate-v3
- istio-1.22.8-tetrate-v2
- istio-1.22.8-tetrate-v1
- istio-1.22.8-tetrate-v0
- istio-1.22.7-tetrate-v1
- istio-1.22.7-tetrate-v0
- istio-1.22.6-tetrate-v4
- istio-1.22.6-tetrate-v2
- istio-1.22.6-tetrate-v1
- istio-1.22.6-tetrate-v0
- istio-1.22.5-tetrate-v1
- istio-1.22.5-tetrate-v0
- istio-1.22.4-tetrate-v1
- istio-1.22.4-tetrate-v0
- istio-1.22.3-tetrate-v1
- istio-1.22.3-tetrate-v0
- istio-1.22.2-tetrate-v2
- istio-1.22.2-tetrate-v1
- istio-1.22.2-tetrate-v0
- istio-1.22.1-tetrate-v2
- istio-1.22.1-tetrate-v1
- istio-1.22.1-tetrate-v0
- istio-1.22.0-tetrate-v0
- istio-1.21.6-tetrate-v12
- istio-1.21.6-tetrate-v11
- istio-1.21.6-tetrate-v10
- istio-1.21.6-tetrate-v9
- istio-1.21.6-tetrate-v8
- istio-1.21.6-tetrate-v7
- istio-1.21.6-tetrate-v6
- istio-1.21.6-tetrate-v5
- istio-1.21.6-tetrate-v4
- istio-1.21.6-tetrate-v3
- istio-1.21.6-tetrate-v2
- istio-1.21.6-tetrate-v1
- istio-1.21.6-tetrate-v0
- istio-1.21.5-tetrate-v3
- istio-1.21.5-tetrate-v2
- istio-1.21.5-tetrate-v1
- istio-1.21.5-tetrate-v0
- istio-1.21.4-tetrate-v0
- istio-1.21.3-tetrate-v0
- istio-1.21.2-tetrate-v5
- istio-1.21.2-tetrate-v4
- istio-1.21.2-tetrate-v3
- istio-1.21.2-tetrate-v2
- istio-1.21.2-tetrate-v1
- istio-1.21.2-tetrate-v0
- istio-1.20.8-tetrate-v8
- istio-1.20.8-tetrate-v7
- istio-1.20.8-tetrate-v6
- istio-1.20.8-tetrate-v5
- istio-1.20.8-tetrate-v4
- istio-1.20.8-tetrate-v3
- istio-1.20.8-tetrate-v2
- istio-1.20.8-tetrate-v1
- istio-1.20.8-tetrate-v0
- istio-1.20.7-tetrate-v0
- istio-1.20.6-tetrate-v5
- istio-1.20.6-tetrate-v4
- istio-1.20.6-tetrate-v3
- istio-1.20.6-tetrate-v2
- istio-1.20.6-tetrate-v1
- istio-1.20.6-tetrate-v0
- istio-1.20.5-tetrate-v1
- istio-1.19.10-tetrate-v7
- istio-1.19.10-tetrate-v6
- istio-1.19.10-tetrate-v5
- istio-1.19.10-tetrate-v3
- istio-1.19.10-tetrate-v2
- istio-1.19.10-tetrate-v1
- istio-1.19.10-tetrate-v0
- istio-1.19.9-tetrate-v1
- istio-1.18.7-tetrate-v10
- istio-1.18.7-tetrate-v9
1 parent
d56cf05
commit 42b1fad
Showing
142 changed files
with
31,433 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,136 @@ | ||
# Istio Installer | ||
|
||
Note: If making any changes to the charts or values.yaml in this dir, first read [UPDATING-CHARTS.md](UPDATING-CHARTS.md) | ||
|
||
Istio installer is a modular, 'a-la-carte' installer for Istio. It is based on a | ||
fork of the Istio helm templates, refactored to increase modularity and isolation. | ||
|
||
Goals: | ||
- Improve upgrade experience: users should be able to gradually roll upgrades, with proper | ||
canary deployments for Istio components. It should be possible to deploy a new version while keeping the | ||
stable version in place and gradually migrate apps to the new version. | ||
|
||
- More flexibility: the new installer allows multiple 'environments', allowing applications to select | ||
a set of control plane settings and components. While the entire mesh respects the same APIs and config, | ||
apps may target different 'environments' which contain different instances and variants of Istio. | ||
|
||
- Better security: separate Istio components reside in different namespaces, allowing different teams or | ||
roles to manage different parts of Istio. For example, a security team would maintain the | ||
root CA and policy, a telemetry team may only have access to Prometheus, | ||
and a different team may maintain the control plane components (which are highly security sensitive). | ||
|
||
The install is organized in 'environments' - each environment consists of a set of components | ||
in different namespaces that are configured to work together. Regardless of 'environment', | ||
workloads can talk with each other and obey the Istio configuration resources, but each environment | ||
can use different Istio versions and different configuration defaults. | ||
|
||
`istioctl kube-inject` or the automatic sidecar injector are used to select the environment. | ||
In the case of the sidecar injector, the namespace label `istio-env: <NAME_OF_ENV>` is used instead | ||
of the conventional `istio-injected: true`. The name of the environment is defined as the namespace | ||
where the corresponding control plane components (config, discovery, auto-injection) are running. | ||
In the examples below, by default this is the `istio-control` namespace. Pod annotations can also | ||
be used to select a different 'environment'. | ||
|
||
## Installing | ||
|
||
The new installer is intended to be modular and very explicit about what is installed. It has | ||
far more steps than the Istio installer - but each step is smaller and focused on a specific | ||
feature, and can be performed by different people/teams at different times. | ||
|
||
It is strongly recommended that different namespaces are used, with different service accounts. | ||
In particular access to the security-critical production components (root CA, policy, control) | ||
should be locked down and restricted. The new installer allows multiple instances of | ||
policy/control/telemetry - so testing/staging of new settings and versions can be performed | ||
by a different role than the prod version. | ||
|
||
The intended users of this repo are users running Istio in production who want to select, tune | ||
and understand each binary that gets deployed, and select which combination to use. | ||
|
||
Note: each component can be installed in parallel with an existing Istio 1.0 or 1.1 installation in | ||
`istio-system`. The new components will not interfere with existing apps, but can interoperate, | ||
and it is possible to gradually move apps from Istio 1.0/1.1 to the new environments and | ||
across environments ( for example canary -> prod ) | ||
|
||
Note: there are still some cluster roles that may need to be fixed, most likely cluster permissions | ||
will need to move to the security component. | ||
|
||
## Everything is Optional | ||
|
||
Each component in the new installer is optional. Users can install the component defined in the new installer, | ||
use the equivalent component in `istio-system`, configured with the official installer, or use a different | ||
version or implementation. | ||
|
||
For example you may use your own Prometheus and Grafana installs, or you may use a specialized/custom | ||
certificate provisioning tool, or use components that are centrally managed and running in a different cluster. | ||
|
||
This is a work in progress - building on top of the multi-cluster installer. | ||
|
||
As an extreme, the goal is to be possible to run Istio workloads in a cluster without installing any Istio component | ||
in that cluster. Currently, the minimum we require is the security provider (node agent or citadel). | ||
|
||
### Install Istio CRDs | ||
|
||
This is the first step of the installation. Please do not remove or edit any CRD - config currently requires | ||
all CRDs to be present. On each upgrade it is recommended to reapply the file, to make sure | ||
you get all CRDs. CRDs are separated by release and by component type in the CRD directory. | ||
|
||
Istio has strong integration with certmanager. Some operators may want to keep their current certmanager | ||
CRDs in place and not have Istio modify them. In this case, it is necessary to apply CRD files individually. | ||
|
||
```bash | ||
kubectl apply -k github.com/istio/installer/base | ||
``` | ||
|
||
or | ||
|
||
```bash | ||
kubectl apply -f base/files | ||
``` | ||
|
||
### Install Istio-CNI | ||
|
||
This is an optional step - CNI must run in a dedicated namespace, it is a 'singleton' and extremely | ||
security sensitive. Access to the CNI namespace must be highly restricted. | ||
|
||
**NOTE:** The environment variable `ISTIO_CLUSTER_ISGKE` is assumed to be set to `true` if the cluster | ||
is a GKE cluster. | ||
|
||
```bash | ||
ISTIO_CNI_ARGS= | ||
# TODO: What k8s data can we use for this check for whether GKE? | ||
if [[ "${ISTIO_CLUSTER_ISGKE}" == "true" ]]; then | ||
ISTIO_CNI_ARGS="--set cni.cniBinDir=/home/kubernetes/bin" | ||
fi | ||
iop kube-system istio-cni $IBASE/istio-cni/ ${ISTIO_CNI_ARGS} | ||
``` | ||
|
||
TODO. It is possible to add Istio-CNI later, and gradually migrate. | ||
|
||
### Install Control plane | ||
|
||
This can run in any cluster. A mesh should have at least one cluster should run Pilot or equivalent XDS server, | ||
and it is recommended to have Pilot running in each region and in multiple availability zones for multi cluster. | ||
|
||
```bash | ||
iop istio-control istio-discovery $IBASE/istio-control/istio-discovery \ | ||
--set global.istioNamespace=istio-system | ||
|
||
# Second istio-discovery, using master version of istio | ||
TAG=latest HUB=gcr.io/istio-testing iop istio-master istio-discovery-master $IBASE/istio-control/istio-discovery \ | ||
--set policy.enable=false \ | ||
--set global.istioNamespace=istio-master | ||
``` | ||
|
||
### Gateways | ||
|
||
A cluster may use multiple Gateways, each with a different load balancer IP, domains and certificates. | ||
|
||
Since the domain certificates are stored in the gateway namespace, it is recommended to keep each | ||
gateway in a dedicated namespace and restrict access. | ||
|
||
For large-scale gateways it is optionally possible to use a dedicated pilot in the gateway namespace. | ||
|
||
### Additional test templates | ||
|
||
A number of helm test setups are general-purpose and should be installable in any cluster, to confirm | ||
Istio works properly and allow testing the specific installation. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
# Updating charts and values.yaml | ||
|
||
## Acceptable Pull Requests | ||
|
||
Helm charts `values.yaml` represent a complex user facing API that tends to grow uncontrollably over time | ||
due to design choices in Helm. | ||
The underlying Kubernetes resources we configure have 1000s of fields; given enough users and bespoke use cases, | ||
eventually someone will want to customize every one of those fields. | ||
If all fields are exposed in `values.yaml`, we end up with an massive API that is also likely worse than just using the Kubernetes API directly. | ||
|
||
To avoid this, the project attempts to minimize additions to the `values.yaml` API where possible. | ||
|
||
If the change is a dynamic runtime configuration, it probably belongs in the [MeshConfig API](https://github.com/istio/api/blob/master/mesh/v1alpha1/config.proto). | ||
This allows configuration without re-installing or restarting deployments. | ||
|
||
If the change is to a Kubernetes field (such as modifying a Deployment attribute), it will likely need to be install-time configuration. | ||
However, that doesn't necessarily mean a PR to add a value will be accepted. | ||
The `values.yaml` API is intended to maintain a *minimal core set of configuration* that most users will use. | ||
For bespoke use cases, [Helm Chart Customization](https://istio.io/latest/docs/setup/additional-setup/customize-installation-helm/#advanced-helm-chart-customization) can be used | ||
to allow arbitrary customizations. | ||
|
||
If the change truly is generally purpose, it is generally preferred to have broader APIs. For example, instead of providing | ||
direct access to each of the complex fields in [affinity](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/), just providing | ||
a single `affinity` field that is passed through as-is to the Kubernetes resource. | ||
This provides maximum flexibility with minimal API surface overhead. | ||
|
||
## Making changes | ||
|
||
## Step 1. Make changes in charts and values.yaml in `manifests` directory | ||
|
||
Be sure to provide sufficient documentation and example usage in values.yaml. | ||
If the chart has a `values.schema.json`, that should be updated as well. | ||
|
||
## Step 2. Update the istioctl/Operator values | ||
|
||
If you are modifying the `gateway` chart, you can stop here. | ||
All other charts, however, are exposed by `istioctl` and need to follow the steps below. | ||
|
||
The charts in the `manifests` directory are used in istioctl to generate an installation manifest. | ||
|
||
If `values.yaml` is changed, be sure to update corresponding values changes in [../profiles/default.yaml](../profiles/default.yaml) | ||
|
||
## Step 3. Update istioctl schema | ||
|
||
Istioctl uses a [schema](../../operator/pkg/apis/istio/v1alpha1/values_types.proto) to validate the values. Any changes to | ||
the schema must be added here, otherwise istioctl users will see errors. | ||
Once the schema file is updated, run: | ||
|
||
```bash | ||
$ make operator-proto | ||
``` | ||
|
||
This will regenerate the Go structs used for schema validation. | ||
|
||
## Step 4. Update the generated manifests | ||
|
||
Tests of istioctl use the auto-generated manifests to ensure that the istioctl binary has the correct version of the charts. | ||
To regenerate the manifests, run: | ||
|
||
```bash | ||
$ make copy-templates update-golden | ||
``` | ||
|
||
## Step 5. Create a PR using outputs from Steps 1 to 4 | ||
|
||
Your PR should pass all the checks if you followed these steps. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
apiVersion: v1 | ||
name: base | ||
# This version is never actually shipped. istio/release-builder will replace it at build-time | ||
# with the appropriate version | ||
version: 1.20.5-tetrate-v1 | ||
appVersion: 1.20.5-tetrate-v1 | ||
tillerVersion: ">=2.7.2" | ||
description: Helm chart for deploying Istio cluster resources and CRDs | ||
keywords: | ||
- istio | ||
sources: | ||
- https://github.com/istio/istio | ||
engine: gotpl | ||
icon: https://istio.io/latest/favicons/android-192x192.png |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
# Istio base Helm Chart | ||
|
||
This chart installs resources shared by all Istio revisions. This includes Istio CRDs. | ||
|
||
## Setup Repo Info | ||
|
||
```console | ||
helm repo add istio https://istio-release.storage.googleapis.com/charts | ||
helm repo update | ||
``` | ||
|
||
_See [helm repo](https://helm.sh/docs/helm/helm_repo/) for command documentation._ | ||
|
||
## Installing the Chart | ||
|
||
To install the chart with the release name `istio-base`: | ||
|
||
```console | ||
kubectl create namespace istio-system | ||
helm install istio-base istio/base -n istio-system | ||
``` |
8,287 changes: 8,287 additions & 0 deletions
8,287
charts/istio/1.20.5-tetrate-v1/base/crds/crd-all.gen.yaml
Large diffs are not rendered by default.
Oops, something went wrong.
48 changes: 48 additions & 0 deletions
48
charts/istio/1.20.5-tetrate-v1/base/crds/crd-operator.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
# SYNC WITH manifests/charts/istio-operator/templates | ||
apiVersion: apiextensions.k8s.io/v1 | ||
kind: CustomResourceDefinition | ||
metadata: | ||
name: istiooperators.install.istio.io | ||
labels: | ||
release: istio | ||
spec: | ||
conversion: | ||
strategy: None | ||
group: install.istio.io | ||
names: | ||
kind: IstioOperator | ||
listKind: IstioOperatorList | ||
plural: istiooperators | ||
singular: istiooperator | ||
shortNames: | ||
- iop | ||
- io | ||
scope: Namespaced | ||
versions: | ||
- additionalPrinterColumns: | ||
- description: Istio control plane revision | ||
jsonPath: .spec.revision | ||
name: Revision | ||
type: string | ||
- description: IOP current state | ||
jsonPath: .status.status | ||
name: Status | ||
type: string | ||
- description: 'CreationTimestamp is a timestamp representing the server time | ||
when this object was created. It is not guaranteed to be set in happens-before | ||
order across separate operations. Clients may not set this value. It is represented | ||
in RFC3339 form and is in UTC. Populated by the system. Read-only. Null for | ||
lists. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata' | ||
jsonPath: .metadata.creationTimestamp | ||
name: Age | ||
type: date | ||
subresources: | ||
status: {} | ||
name: v1alpha1 | ||
schema: | ||
openAPIV3Schema: | ||
type: object | ||
x-kubernetes-preserve-unknown-fields: true | ||
served: true | ||
storage: true | ||
--- |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
Istio base successfully installed! | ||
|
||
To learn more about the release, try: | ||
$ helm status {{ .Release.Name }} | ||
$ helm get all {{ .Release.Name }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
{{- if .Values.base.enableCRDTemplates }} | ||
{{ .Files.Get "crds/crd-all.gen.yaml" }} | ||
--- | ||
{{ .Files.Get "crds/crd-operator.yaml" }} | ||
{{- end }} |
48 changes: 48 additions & 0 deletions
48
charts/istio/1.20.5-tetrate-v1/base/templates/default.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
{{- if not (eq .Values.defaultRevision "") }} | ||
apiVersion: admissionregistration.k8s.io/v1 | ||
kind: ValidatingWebhookConfiguration | ||
metadata: | ||
name: istiod-default-validator | ||
labels: | ||
app: istiod | ||
release: {{ .Release.Name }} | ||
istio: istiod | ||
istio.io/rev: {{ .Values.defaultRevision }} | ||
webhooks: | ||
- name: validation.istio.io | ||
clientConfig: | ||
{{- if .Values.base.validationURL }} | ||
url: {{ .Values.base.validationURL }} | ||
{{- else }} | ||
service: | ||
{{- if (eq .Values.defaultRevision "default") }} | ||
name: istiod | ||
{{- else }} | ||
name: istiod-{{ .Values.defaultRevision }} | ||
{{- end }} | ||
namespace: {{ .Values.global.istioNamespace }} | ||
path: "/validate" | ||
{{- end }} | ||
rules: | ||
- operations: | ||
- CREATE | ||
- UPDATE | ||
apiGroups: | ||
- security.istio.io | ||
- networking.istio.io | ||
- telemetry.istio.io | ||
- extensions.istio.io | ||
{{- if .Values.base.validateGateway }} | ||
- gateway.networking.k8s.io | ||
{{- end }} | ||
apiVersions: | ||
- "*" | ||
resources: | ||
- "*" | ||
# Fail open until the validation webhook is ready. The webhook controller | ||
# will update this to `Fail` and patch in the `caBundle` when the webhook | ||
# endpoint is ready. | ||
failurePolicy: Ignore | ||
sideEffects: None | ||
admissionReviewVersions: ["v1beta1", "v1"] | ||
{{- end }} |
23 changes: 23 additions & 0 deletions
23
charts/istio/1.20.5-tetrate-v1/base/templates/endpoints.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
{{- if regexMatch "^([0-9]*\\.){3}[0-9]*$" .Values.global.remotePilotAddress }} | ||
# if the remotePilotAddress is an IP addr | ||
apiVersion: v1 | ||
kind: Endpoints | ||
metadata: | ||
{{- if .Values.pilot.enabled }} | ||
name: istiod{{- if .Values.revision }}-{{ .Values.revision}}{{- end }}-remote | ||
{{- else }} | ||
name: istiod{{- if .Values.revision }}-{{ .Values.revision}}{{- end }} | ||
{{- end }} | ||
namespace: {{ .Release.Namespace }} | ||
subsets: | ||
- addresses: | ||
- ip: {{ .Values.global.remotePilotAddress }} | ||
ports: | ||
- port: 15012 | ||
name: tcp-istiod | ||
protocol: TCP | ||
- port: 15017 | ||
name: tcp-webhook | ||
protocol: TCP | ||
--- | ||
{{- end }} |
16 changes: 16 additions & 0 deletions
16
charts/istio/1.20.5-tetrate-v1/base/templates/reader-serviceaccount.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
# This service account aggregates reader permissions for the revisions in a given cluster | ||
# Should be used for remote secret creation. | ||
apiVersion: v1 | ||
kind: ServiceAccount | ||
{{- if .Values.global.imagePullSecrets }} | ||
imagePullSecrets: | ||
{{- range .Values.global.imagePullSecrets }} | ||
- name: {{ . }} | ||
{{- end }} | ||
{{- end }} | ||
metadata: | ||
name: istio-reader-service-account | ||
namespace: {{ .Values.global.istioNamespace }} | ||
labels: | ||
app: istio-reader | ||
release: {{ .Release.Name }} |
37 changes: 37 additions & 0 deletions
37
charts/istio/1.20.5-tetrate-v1/base/templates/services.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
{{- if .Values.global.remotePilotAddress }} | ||
apiVersion: v1 | ||
kind: Service | ||
metadata: | ||
{{- if .Values.pilot.enabled }} | ||
# when local istiod is enabled, we can't use istiod service name to reach the remote control plane | ||
name: istiod{{- if .Values.revision }}-{{ .Values.revision}}{{- end }}-remote | ||
{{- else }} | ||
# when local istiod isn't enabled, we can use istiod service name to reach the remote control plane | ||
name: istiod{{- if .Values.revision }}-{{ .Values.revision}}{{- end }} | ||
{{- end }} | ||
namespace: {{ .Release.Namespace }} | ||
spec: | ||
ports: | ||
- port: 15012 | ||
name: tcp-istiod | ||
protocol: TCP | ||
- port: 443 | ||
targetPort: 15017 | ||
name: tcp-webhook | ||
protocol: TCP | ||
{{- if not (regexMatch "^([0-9]*\\.){3}[0-9]*$" .Values.global.remotePilotAddress) }} | ||
# if the remotePilotAddress is not an IP addr, we use ExternalName | ||
type: ExternalName | ||
externalName: {{ .Values.global.remotePilotAddress }} | ||
{{- end }} | ||
{{- if .Values.global.ipFamilyPolicy }} | ||
ipFamilyPolicy: {{ .Values.global.ipFamilyPolicy }} | ||
{{- end }} | ||
{{- if .Values.global.ipFamilies }} | ||
ipFamilies: | ||
{{- range .Values.global.ipFamilies }} | ||
- {{ . }} | ||
{{- end }} | ||
{{- end }} | ||
--- | ||
{{- end }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
global: | ||
|
||
# ImagePullSecrets for control plane ServiceAccount, list of secrets in the same namespace | ||
# to use for pulling any images in pods that reference this ServiceAccount. | ||
# Must be set for any cluster configured with private docker registry. | ||
imagePullSecrets: [] | ||
|
||
# Used to locate istiod. | ||
istioNamespace: istio-system | ||
|
||
istiod: | ||
enableAnalysis: false | ||
|
||
configValidation: true | ||
externalIstiod: false | ||
remotePilotAddress: "" | ||
|
||
# Platform where Istio is deployed. Possible values are: "openshift", "gcp". | ||
# An empty value means it is a vanilla Kubernetes distribution, therefore no special | ||
# treatment will be considered. | ||
platform: "" | ||
|
||
# Setup how istiod Service is configured. See https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services | ||
# This is intended only for use with external istiod. | ||
ipFamilyPolicy: "" | ||
ipFamilies: [] | ||
|
||
base: | ||
# Used for helm2 to add the CRDs to templates. | ||
enableCRDTemplates: false | ||
|
||
# Validation webhook configuration url | ||
# For example: https://$remotePilotAddress:15017/validate | ||
validationURL: "" | ||
|
||
# For istioctl usage to disable istio config crds in base | ||
enableIstioConfigCRDs: true | ||
|
||
defaultRevision: "default" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
apiVersion: v1 | ||
name: istio-default | ||
# This version is never actually shipped. istio/release-builder will replace it at build-time | ||
# with the appropriate version | ||
version: 1.20.5-tetrate-v1 | ||
appVersion: 1.20.5-tetrate-v1 | ||
description: Helm chart for istio default revision components. | ||
keywords: | ||
- istio | ||
sources: | ||
- https://github.com/istio/istio | ||
engine: gotpl | ||
icon: https://istio.io/latest/favicons/android-192x192.png |
122 changes: 122 additions & 0 deletions
122
charts/istio/1.20.5-tetrate-v1/default/templates/mutatingwebhook.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,122 @@ | ||
# Adapted from istio-discovery/templates/mutatingwebhook.yaml | ||
# Removed paths for legacy and default selectors since a revision tag | ||
# is inherently created from a specific revision | ||
{{/* Copy just what we need to avoid expensive deepCopy */}} | ||
{{- $whv := dict "revision" .Values.revision "injectionURL" .Values.istiodRemote.injectionURL "namespace" .Release.Namespace }} | ||
{{- define "core" }} | ||
- name: {{.Prefix}}sidecar-injector.istio.io | ||
clientConfig: | ||
{{- if .injectionURL }} | ||
url: {{ .injectionURL }} | ||
{{- else }} | ||
service: | ||
name: istiod{{- if not (eq .revision "") }}-{{ .revision }}{{- end }} | ||
namespace: {{ .namespace }} | ||
path: "/inject" | ||
{{- end }} | ||
sideEffects: None | ||
rules: | ||
- operations: [ "CREATE" ] | ||
apiGroups: [""] | ||
apiVersions: ["v1"] | ||
resources: ["pods"] | ||
failurePolicy: Fail | ||
admissionReviewVersions: ["v1beta1", "v1"] | ||
{{- end }} | ||
|
||
apiVersion: admissionregistration.k8s.io/v1 | ||
kind: MutatingWebhookConfiguration | ||
metadata: | ||
name: istio-revision-tag-default | ||
labels: | ||
istio.io/tag: "default" | ||
istio.io/rev: {{ .Values.revision | default "default" }} | ||
install.operator.istio.io/owning-resource: {{ .Values.ownerName | default "unknown" }} | ||
operator.istio.io/component: "Pilot" | ||
app: sidecar-injector | ||
release: {{ .Release.Name }} | ||
webhooks: | ||
{{- include "core" (mergeOverwrite (deepCopy $whv) (dict "Prefix" "rev.namespace.") ) }} | ||
namespaceSelector: | ||
matchExpressions: | ||
- key: istio.io/rev | ||
operator: In | ||
values: | ||
- "default" | ||
- key: istio-injection | ||
operator: DoesNotExist | ||
objectSelector: | ||
matchExpressions: | ||
- key: sidecar.istio.io/inject | ||
operator: NotIn | ||
values: | ||
- "false" | ||
{{- include "core" (mergeOverwrite (deepCopy $whv) (dict "Prefix" "rev.object.") ) }} | ||
namespaceSelector: | ||
matchExpressions: | ||
- key: istio.io/rev | ||
operator: DoesNotExist | ||
- key: istio-injection | ||
operator: DoesNotExist | ||
objectSelector: | ||
matchExpressions: | ||
- key: sidecar.istio.io/inject | ||
operator: NotIn | ||
values: | ||
- "false" | ||
- key: istio.io/rev | ||
operator: In | ||
values: | ||
- "default" | ||
|
||
{{- /* Case 1: Namespace selector enabled, and object selector is not injected */}} | ||
{{- include "core" (mergeOverwrite (deepCopy $whv) (dict "Prefix" "namespace.") ) }} | ||
namespaceSelector: | ||
matchExpressions: | ||
- key: istio-injection | ||
operator: In | ||
values: | ||
- enabled | ||
objectSelector: | ||
matchExpressions: | ||
- key: sidecar.istio.io/inject | ||
operator: NotIn | ||
values: | ||
- "false" | ||
|
||
{{- /* Case 2: no namespace label, but object selector is enabled (and revision label is not, which has priority) */}} | ||
{{- include "core" (mergeOverwrite (deepCopy $whv) (dict "Prefix" "object.") ) }} | ||
namespaceSelector: | ||
matchExpressions: | ||
- key: istio-injection | ||
operator: DoesNotExist | ||
- key: istio.io/rev | ||
operator: DoesNotExist | ||
objectSelector: | ||
matchExpressions: | ||
- key: sidecar.istio.io/inject | ||
operator: In | ||
values: | ||
- "true" | ||
- key: istio.io/rev | ||
operator: DoesNotExist | ||
|
||
{{- if .Values.sidecarInjectorWebhook.enableNamespacesByDefault }} | ||
{{- /* Special case 3: no labels at all */}} | ||
{{- include "core" (mergeOverwrite (deepCopy $whv) (dict "Prefix" "auto.") ) }} | ||
namespaceSelector: | ||
matchExpressions: | ||
- key: istio-injection | ||
operator: DoesNotExist | ||
- key: istio.io/rev | ||
operator: DoesNotExist | ||
- key: "kubernetes.io/metadata.name" | ||
operator: "NotIn" | ||
values: ["kube-system","kube-public","kube-node-lease","local-path-storage"] | ||
objectSelector: | ||
matchExpressions: | ||
- key: sidecar.istio.io/inject | ||
operator: DoesNotExist | ||
- key: istio.io/rev | ||
operator: DoesNotExist | ||
{{- end }} |
47 changes: 47 additions & 0 deletions
47
charts/istio/1.20.5-tetrate-v1/default/templates/validatingwebhook.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
apiVersion: admissionregistration.k8s.io/v1 | ||
kind: ValidatingWebhookConfiguration | ||
metadata: | ||
name: istiod-default-validator | ||
labels: | ||
app: istiod | ||
istio: istiod | ||
istio.io/rev: {{ .Values.revision | default "default" }} | ||
istio.io/tag: "default" | ||
# Required to make sure this resource is removed | ||
# when purging Istio resources | ||
operator.istio.io/component: Pilot | ||
webhooks: | ||
- name: validation.istio.io | ||
clientConfig: | ||
{{- if .Values.base.validationURL }} | ||
url: {{ .Values.base.validationURL }} | ||
{{- else }} | ||
service: | ||
name: istiod{{- if not (eq .Values.revision "") }}-{{ .Values.revision }}{{- end }} | ||
namespace: {{ .Values.global.istioNamespace }} | ||
path: "/validate" | ||
{{- end }} | ||
rules: | ||
- operations: | ||
- CREATE | ||
- UPDATE | ||
apiGroups: | ||
- security.istio.io | ||
- networking.istio.io | ||
- telemetry.istio.io | ||
- extensions.istio.io | ||
{{- if .Values.base.validateGateway }} | ||
- gateway.networking.k8s.io | ||
{{- end }} | ||
apiVersions: | ||
- "*" | ||
resources: | ||
- "*" | ||
failurePolicy: Ignore | ||
sideEffects: None | ||
admissionReviewVersions: ["v1beta1", "v1"] | ||
objectSelector: | ||
matchExpressions: | ||
- key: istio.io/rev | ||
operator: DoesNotExist | ||
--- |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
global: | ||
# Used to locate istiod. | ||
istioNamespace: "istio-system" | ||
|
||
base: | ||
# Validation webhook configuration url | ||
# For example: https://$remotePilotAddress:15017/validate | ||
validationURL: "" | ||
# If enabled, gateway-api types will be validated using the standard upstream validation logic. | ||
# This is an alternative to deploying the standalone validation server the project provides. | ||
# This is disabled by default, as the cluster may already have a validation server; while technically | ||
# it works to have multiple redundant validations, this adds complexity and operational risks. | ||
# Users should consider enabling this if they want full gateway-api validation but don't have other validation servers. | ||
validateGateway: false | ||
|
||
istiodRemote: | ||
# Sidecar injector mutating webhook configuration url | ||
# For example: https://$remotePilotAddress:15017/inject | ||
injectionURL: "" | ||
|
||
# Revision is set as 'version' label and part of the resource names when installing multiple control planes. | ||
revision: "" | ||
|
||
sidecarInjectorWebhook: | ||
# This enables injection of sidecar in all namespaces, | ||
enableNamespacesByDefault: false | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
apiVersion: v2 | ||
name: gateway | ||
description: Helm chart for deploying Istio gateways | ||
type: application | ||
# This version is never actually shipped. istio/release-builder will replace it at build-time | ||
# with the appropriate version | ||
version: 1.20.5-tetrate-v1 | ||
appVersion: 1.20.5-tetrate-v1 | ||
sources: | ||
- https://github.com/istio/istio | ||
icon: https://istio.io/latest/favicons/android-192x192.png | ||
keywords: | ||
- istio | ||
- gateways |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,156 @@ | ||
# Istio Gateway Helm Chart | ||
|
||
This chart installs an Istio gateway deployment. | ||
|
||
## Setup Repo Info | ||
|
||
```console | ||
helm repo add istio https://istio-release.storage.googleapis.com/charts | ||
helm repo update | ||
``` | ||
|
||
_See [helm repo](https://helm.sh/docs/helm/helm_repo/) for command documentation._ | ||
|
||
## Installing the Chart | ||
|
||
To install the chart with the release name `istio-ingressgateway`: | ||
|
||
```console | ||
helm install istio-ingressgateway istio/gateway | ||
``` | ||
|
||
## Uninstalling the Chart | ||
|
||
To uninstall/delete the `istio-ingressgateway` deployment: | ||
|
||
```console | ||
helm delete istio-ingressgateway | ||
``` | ||
|
||
## Configuration | ||
|
||
To view support configuration options and documentation, run: | ||
|
||
```console | ||
helm show values istio/gateway | ||
``` | ||
|
||
### OpenShift | ||
|
||
When deploying the gateway in an OpenShift cluster, use the `openshift-values.yaml` file to override the default values, for example: | ||
|
||
```console | ||
helm install istio-ingressgateway istio/gateway -f openshift-values.yaml | ||
``` | ||
|
||
### `image: auto` Information | ||
|
||
The image used by the chart, `auto`, may be unintuitive. | ||
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). | ||
This allows the same configurations and lifecycle to apply to gateways as sidecars. | ||
|
||
Note: this does mean that the namespace the gateway is deployed in must not have the `istio-injection=disabled` label. | ||
See [Controlling the injection policy](https://istio.io/latest/docs/setup/additional-setup/sidecar-injection/#controlling-the-injection-policy) for more info. | ||
|
||
### Examples | ||
|
||
#### Egress Gateway | ||
|
||
Deploying a Gateway to be used as an [Egress Gateway](https://istio.io/latest/docs/tasks/traffic-management/egress/egress-gateway/): | ||
|
||
```yaml | ||
service: | ||
# Egress gateways do not need an external LoadBalancer IP | ||
type: ClusterIP | ||
``` | ||
#### Multi-network/VM Gateway | ||
Deploying a Gateway to be used as a [Multi-network Gateway](https://istio.io/latest/docs/setup/install/multicluster/) for network `network-1`: | ||
|
||
```yaml | ||
networkGateway: network-1 | ||
``` | ||
|
||
### Migrating from other installation methods | ||
|
||
Installations from other installation methods (such as istioctl, Istio Operator, other helm charts, etc) can be migrated to use the new Helm charts | ||
following the guidance below. | ||
If you are able to, a clean installation is simpler. However, this often requires an external IP migration which can be challenging. | ||
|
||
WARNING: when installing over an existing deployment, the two deployments will be merged together by Helm, which may lead to unexpected results. | ||
|
||
#### Legacy Gateway Helm charts | ||
|
||
Istio historically offered two different charts - `manifests/charts/gateways/istio-ingress` and `manifests/charts/gateways/istio-egress`. | ||
These are replaced by this chart. | ||
While not required, it is recommended all new users use this chart, and existing users migrate when possible. | ||
|
||
This chart has the following benefits and differences: | ||
* 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). | ||
* Utilizes Gateway injection, simplifying upgrades, allowing gateways to run in any namespace, and avoiding repeating config for sidecars and gateways. | ||
* Published to official Istio Helm repository. | ||
* Single chart for all gateways (Ingress, Egress, East West). | ||
|
||
#### General concerns | ||
|
||
For a smooth migration, the resource names and `Deployment.spec.selector` labels must match. | ||
|
||
If you install with `helm install istio-gateway istio/gateway`, resources will be named `istio-gateway` and the `selector` labels set to: | ||
|
||
```yaml | ||
app: istio-gateway | ||
istio: gateway # the release name with leading istio- prefix stripped | ||
``` | ||
|
||
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 | ||
`foo=bar,istio=ingressgateway`: | ||
|
||
```yaml | ||
name: my-custom-gateway # Override the name to match existing resources | ||
labels: | ||
app: "" # Unset default app selector label | ||
istio: ingressgateway # override default istio selector label | ||
foo: bar # Add the existing custom selector label | ||
``` | ||
|
||
#### Migrating an existing Helm release | ||
|
||
An existing helm release can be `helm upgrade`d to this chart by using the same release name. For example, if a previous | ||
installation was done like: | ||
|
||
```console | ||
helm install istio-ingress manifests/charts/gateways/istio-ingress -n istio-system | ||
``` | ||
|
||
It could be upgraded with | ||
|
||
```console | ||
helm upgrade istio-ingress manifests/charts/gateway -n istio-system --set name=istio-ingressgateway --set labels.app=istio-ingressgateway --set labels.istio=ingressgateway | ||
``` | ||
|
||
Note the name and labels are overridden to match the names of the existing installation. | ||
|
||
Warning: the helm charts here default to using port 80 and 443, while the old charts used 8080 and 8443. | ||
If you have AuthorizationPolicies that reference port these ports, you should update them during this process, | ||
or customize the ports to match the old defaults. | ||
See the [security advisory](https://istio.io/latest/news/security/istio-security-2021-002/) for more information. | ||
|
||
#### Other migrations | ||
|
||
If you see errors like `rendered manifests contain a resource that already exists` during installation, you may need to forcibly take ownership. | ||
|
||
The script below can handle this for you. Replace `RELEASE` and `NAMESPACE` with the name and namespace of the release: | ||
|
||
```console | ||
KINDS=(service deployment) | ||
RELEASE=istio-ingressgateway | ||
NAMESPACE=istio-system | ||
for KIND in "${KINDS[@]}"; do | ||
kubectl --namespace $NAMESPACE --overwrite=true annotate $KIND $RELEASE meta.helm.sh/release-name=$RELEASE | ||
kubectl --namespace $NAMESPACE --overwrite=true annotate $KIND $RELEASE meta.helm.sh/release-namespace=$NAMESPACE | ||
kubectl --namespace $NAMESPACE --overwrite=true label $KIND $RELEASE app.kubernetes.io/managed-by=Helm | ||
done | ||
``` | ||
|
||
You may ignore errors about resources not being found. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
containerSecurityContext: | ||
capabilities: | ||
drop: | ||
- ALL | ||
allowPrivilegeEscalation: false | ||
privileged: false | ||
readOnlyRootFilesystem: true | ||
runAsNonRoot: true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
"{{ include "gateway.name" . }}" successfully installed! | ||
|
||
To learn more about the release, try: | ||
$ helm status {{ .Release.Name }} | ||
$ helm get all {{ .Release.Name }} | ||
|
||
Next steps: | ||
* Deploy an HTTP Gateway: https://istio.io/latest/docs/tasks/traffic-management/ingress/ingress-control/ | ||
* Deploy an HTTPS Gateway: https://istio.io/latest/docs/tasks/traffic-management/ingress/secure-ingress/ |
61 changes: 61 additions & 0 deletions
61
charts/istio/1.20.5-tetrate-v1/gateway/templates/_helpers.tpl
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
{{- define "gateway.name" -}} | ||
{{- if eq .Release.Name "RELEASE-NAME" -}} | ||
{{- .Values.name | default "istio-ingressgateway" -}} | ||
{{- else -}} | ||
{{- .Values.name | default .Release.Name | default "istio-ingressgateway" -}} | ||
{{- end -}} | ||
{{- end }} | ||
|
||
{{/* | ||
Create chart name and version as used by the chart label. | ||
*/}} | ||
{{- define "gateway.chart" -}} | ||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} | ||
{{- end }} | ||
|
||
{{- define "gateway.labels" -}} | ||
helm.sh/chart: {{ include "gateway.chart" . }} | ||
{{ include "gateway.selectorLabels" . }} | ||
{{- if .Chart.AppVersion }} | ||
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} | ||
{{- end }} | ||
app.kubernetes.io/managed-by: {{ .Release.Service }} | ||
app.kubernetes.io/name: {{ include "gateway.name" . }} | ||
{{- range $key, $val := .Values.labels }} | ||
{{- if not (or (eq $key "app") (eq $key "istio")) }} | ||
{{ $key | quote }}: {{ $val | quote }} | ||
{{- end }} | ||
{{- end }} | ||
{{- end }} | ||
|
||
{{- define "gateway.podLabels" -}} | ||
{{ include "gateway.selectorLabels" . }} | ||
{{- range $key, $val := .Values.labels }} | ||
{{- if not (or (eq $key "app") (eq $key "istio")) }} | ||
{{ $key | quote }}: {{ $val | quote }} | ||
{{- end }} | ||
{{- end }} | ||
{{- end }} | ||
|
||
{{- define "gateway.selectorLabels" -}} | ||
{{- if hasKey .Values.labels "app" }} | ||
{{- with .Values.labels.app }}app: {{.|quote}} | ||
{{- end}} | ||
{{- else }}app: {{ include "gateway.name" . }} | ||
{{- end }} | ||
{{- if hasKey .Values.labels "istio" }} | ||
{{- with .Values.labels.istio }} | ||
istio: {{.|quote}} | ||
{{- end}} | ||
{{- else }} | ||
istio: {{ include "gateway.name" . | trimPrefix "istio-" }} | ||
{{- end }} | ||
{{- end }} | ||
|
||
{{- define "gateway.serviceAccountName" -}} | ||
{{- if .Values.serviceAccount.create }} | ||
{{- .Values.serviceAccount.name | default (include "gateway.name" .) }} | ||
{{- else }} | ||
{{- .Values.serviceAccount.name | default "default" }} | ||
{{- end }} | ||
{{- end }} |
121 changes: 121 additions & 0 deletions
121
charts/istio/1.20.5-tetrate-v1/gateway/templates/deployment.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,121 @@ | ||
apiVersion: apps/v1 | ||
kind: {{ .Values.kind | default "Deployment" }} | ||
metadata: | ||
name: {{ include "gateway.name" . }} | ||
namespace: {{ .Release.Namespace }} | ||
labels: | ||
{{- include "gateway.labels" . | nindent 4}} | ||
annotations: | ||
{{- .Values.annotations | toYaml | nindent 4 }} | ||
spec: | ||
{{- if not .Values.autoscaling.enabled }} | ||
{{- with .Values.replicaCount }} | ||
replicas: {{ . }} | ||
{{- end }} | ||
{{- end }} | ||
selector: | ||
matchLabels: | ||
{{- include "gateway.selectorLabels" . | nindent 6 }} | ||
template: | ||
metadata: | ||
{{- with .Values.podAnnotations }} | ||
annotations: | ||
{{- toYaml . | nindent 8 }} | ||
{{- end }} | ||
labels: | ||
sidecar.istio.io/inject: "true" | ||
{{- with .Values.revision }} | ||
istio.io/rev: {{ . }} | ||
{{- end }} | ||
{{- include "gateway.podLabels" . | nindent 8 }} | ||
spec: | ||
{{- with .Values.imagePullSecrets }} | ||
imagePullSecrets: | ||
{{- toYaml . | nindent 8 }} | ||
{{- end }} | ||
serviceAccountName: {{ include "gateway.serviceAccountName" . }} | ||
securityContext: | ||
{{- if .Values.securityContext }} | ||
{{- toYaml .Values.securityContext | nindent 8 }} | ||
{{- else if (semverCompare ">=1.22-0" .Capabilities.KubeVersion.GitVersion) }} | ||
# Safe since 1.22: https://github.com/kubernetes/kubernetes/pull/103326 | ||
sysctls: | ||
- name: net.ipv4.ip_unprivileged_port_start | ||
value: "0" | ||
{{- end }} | ||
{{- with .Values.volumes }} | ||
volumes: | ||
{{ toYaml . | nindent 8 }} | ||
{{- end }} | ||
containers: | ||
- name: istio-proxy | ||
# "auto" will be populated at runtime by the mutating webhook. See https://istio.io/latest/docs/setup/additional-setup/sidecar-injection/#customizing-injection | ||
image: auto | ||
{{- with .Values.imagePullPolicy }} | ||
imagePullPolicy: {{ . }} | ||
{{- end }} | ||
securityContext: | ||
{{- if .Values.containerSecurityContext }} | ||
{{- toYaml .Values.containerSecurityContext | nindent 12 }} | ||
{{- else if (semverCompare ">=1.22-0" .Capabilities.KubeVersion.GitVersion) }} | ||
# Safe since 1.22: https://github.com/kubernetes/kubernetes/pull/103326 | ||
capabilities: | ||
drop: | ||
- ALL | ||
allowPrivilegeEscalation: false | ||
privileged: false | ||
readOnlyRootFilesystem: true | ||
runAsUser: 1337 | ||
runAsGroup: 1337 | ||
runAsNonRoot: true | ||
{{- else }} | ||
capabilities: | ||
drop: | ||
- ALL | ||
add: | ||
- NET_BIND_SERVICE | ||
runAsUser: 0 | ||
runAsGroup: 1337 | ||
runAsNonRoot: false | ||
allowPrivilegeEscalation: true | ||
readOnlyRootFilesystem: true | ||
{{- end }} | ||
env: | ||
{{- with .Values.networkGateway }} | ||
- name: ISTIO_META_REQUESTED_NETWORK_VIEW | ||
value: "{{.}}" | ||
{{- end }} | ||
{{- range $key, $val := .Values.env }} | ||
- name: {{ $key }} | ||
value: {{ $val | quote }} | ||
{{- end }} | ||
ports: | ||
- containerPort: 15090 | ||
protocol: TCP | ||
name: http-envoy-prom | ||
resources: | ||
{{- toYaml .Values.resources | nindent 12 }} | ||
{{- with .Values.volumeMounts }} | ||
volumeMounts: | ||
{{ toYaml . | nindent 12 }} | ||
{{- end }} | ||
{{- with .Values.nodeSelector }} | ||
nodeSelector: | ||
{{- toYaml . | nindent 8 }} | ||
{{- end }} | ||
{{- with .Values.affinity }} | ||
affinity: | ||
{{- toYaml . | nindent 8 }} | ||
{{- end }} | ||
{{- with .Values.tolerations }} | ||
tolerations: | ||
{{- toYaml . | nindent 8 }} | ||
{{- end }} | ||
{{- with .Values.topologySpreadConstraints }} | ||
topologySpreadConstraints: | ||
{{- toYaml . | nindent 8 }} | ||
{{- end }} | ||
terminationGracePeriodSeconds: {{ $.Values.terminationGracePeriodSeconds }} | ||
{{- with .Values.priorityClassName }} | ||
priorityClassName: {{ . }} | ||
{{- end }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
{{- if and (.Values.autoscaling.enabled) (eq .Values.kind "Deployment") }} | ||
{{- if (semverCompare ">=1.23-0" .Capabilities.KubeVersion.GitVersion)}} | ||
apiVersion: autoscaling/v2 | ||
{{- else }} | ||
apiVersion: autoscaling/v2beta2 | ||
{{- end }} | ||
kind: HorizontalPodAutoscaler | ||
metadata: | ||
name: {{ include "gateway.name" . }} | ||
namespace: {{ .Release.Namespace }} | ||
labels: | ||
{{- include "gateway.labels" . | nindent 4 }} | ||
annotations: | ||
{{- .Values.annotations | toYaml | nindent 4 }} | ||
spec: | ||
scaleTargetRef: | ||
apiVersion: apps/v1 | ||
kind: {{ .Values.kind | default "Deployment" }} | ||
name: {{ include "gateway.name" . }} | ||
minReplicas: {{ .Values.autoscaling.minReplicas }} | ||
maxReplicas: {{ .Values.autoscaling.maxReplicas }} | ||
metrics: | ||
{{- if .Values.autoscaling.targetCPUUtilizationPercentage }} | ||
- type: Resource | ||
resource: | ||
name: cpu | ||
target: | ||
averageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} | ||
type: Utilization | ||
{{- end }} | ||
{{- if .Values.autoscaling.autoscaleBehavior }} | ||
behavior: {{ toYaml .Values.autoscaling.autoscaleBehavior | nindent 4 }} | ||
{{- end }} | ||
{{- end }} |
16 changes: 16 additions & 0 deletions
16
charts/istio/1.20.5-tetrate-v1/gateway/templates/poddisruptionbudget.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
{{- if .Values.podDisruptionBudget }} | ||
apiVersion: policy/v1 | ||
kind: PodDisruptionBudget | ||
metadata: | ||
name: {{ include "gateway.name" . }} | ||
namespace: {{ .Release.Namespace }} | ||
labels: | ||
{{- include "gateway.labels" . | nindent 4}} | ||
spec: | ||
selector: | ||
matchLabels: | ||
{{- include "gateway.selectorLabels" . | nindent 6 }} | ||
{{- with .Values.podDisruptionBudget }} | ||
{{- toYaml . | nindent 2 }} | ||
{{- end }} | ||
{{- end }} |
33 changes: 33 additions & 0 deletions
33
charts/istio/1.20.5-tetrate-v1/gateway/templates/role.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
{{/*Set up roles for Istio Gateway. Not required for gateway-api*/}} | ||
{{- if .Values.rbac.enabled }} | ||
apiVersion: rbac.authorization.k8s.io/v1 | ||
kind: Role | ||
metadata: | ||
name: {{ include "gateway.serviceAccountName" . }} | ||
namespace: {{ .Release.Namespace }} | ||
labels: | ||
{{- include "gateway.labels" . | nindent 4}} | ||
annotations: | ||
{{- .Values.annotations | toYaml | nindent 4 }} | ||
rules: | ||
- apiGroups: [""] | ||
resources: ["secrets"] | ||
verbs: ["get", "watch", "list"] | ||
--- | ||
apiVersion: rbac.authorization.k8s.io/v1 | ||
kind: RoleBinding | ||
metadata: | ||
name: {{ include "gateway.serviceAccountName" . }} | ||
namespace: {{ .Release.Namespace }} | ||
labels: | ||
{{- include "gateway.labels" . | nindent 4}} | ||
annotations: | ||
{{- .Values.annotations | toYaml | nindent 4 }} | ||
roleRef: | ||
apiGroup: rbac.authorization.k8s.io | ||
kind: Role | ||
name: {{ include "gateway.serviceAccountName" . }} | ||
subjects: | ||
- kind: ServiceAccount | ||
name: {{ include "gateway.serviceAccountName" . }} | ||
{{- end }} |
59 changes: 59 additions & 0 deletions
59
charts/istio/1.20.5-tetrate-v1/gateway/templates/service.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
{{- if not (eq .Values.service.type "None") }} | ||
apiVersion: v1 | ||
kind: Service | ||
metadata: | ||
name: {{ include "gateway.name" . }} | ||
namespace: {{ .Release.Namespace }} | ||
labels: | ||
{{- include "gateway.labels" . | nindent 4 }} | ||
{{- with .Values.networkGateway }} | ||
topology.istio.io/network: "{{.}}" | ||
{{- end }} | ||
annotations: | ||
{{- merge (deepCopy .Values.service.annotations) .Values.annotations | toYaml | nindent 4 }} | ||
spec: | ||
{{- with .Values.service.loadBalancerIP }} | ||
loadBalancerIP: "{{ . }}" | ||
{{- end }} | ||
{{- if .Values.service.ipFamilyPolicy }} | ||
ipFamilyPolicy: {{ .Values.service.ipFamilyPolicy }} | ||
{{- end }} | ||
{{- if .Values.service.ipFamilies }} | ||
ipFamilies: | ||
{{- range .Values.service.ipFamilies }} | ||
- {{ . }} | ||
{{- end }} | ||
{{- end }} | ||
{{- with .Values.service.loadBalancerSourceRanges }} | ||
loadBalancerSourceRanges: | ||
{{ toYaml . | indent 4 }} | ||
{{- end }} | ||
{{- with .Values.service.externalTrafficPolicy }} | ||
externalTrafficPolicy: "{{ . }}" | ||
{{- end }} | ||
type: {{ .Values.service.type }} | ||
ports: | ||
{{- if .Values.networkGateway }} | ||
- name: status-port | ||
port: 15021 | ||
targetPort: 15021 | ||
- name: tls | ||
port: 15443 | ||
targetPort: 15443 | ||
- name: tls-istiod | ||
port: 15012 | ||
targetPort: 15012 | ||
- name: tls-webhook | ||
port: 15017 | ||
targetPort: 15017 | ||
{{- else }} | ||
{{ .Values.service.ports | toYaml | indent 4 }} | ||
{{- end }} | ||
{{- if .Values.service.externalIPs }} | ||
externalIPs: {{- range .Values.service.externalIPs }} | ||
- {{.}} | ||
{{- end }} | ||
{{- end }} | ||
selector: | ||
{{- include "gateway.selectorLabels" . | nindent 4 }} | ||
{{- end }} |
13 changes: 13 additions & 0 deletions
13
charts/istio/1.20.5-tetrate-v1/gateway/templates/serviceaccount.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
{{- if .Values.serviceAccount.create }} | ||
apiVersion: v1 | ||
kind: ServiceAccount | ||
metadata: | ||
name: {{ include "gateway.serviceAccountName" . }} | ||
namespace: {{ .Release.Namespace }} | ||
labels: | ||
{{- include "gateway.labels" . | nindent 4 }} | ||
{{- with .Values.serviceAccount.annotations }} | ||
annotations: | ||
{{- toYaml . | nindent 4 }} | ||
{{- end }} | ||
{{- end }} |
247 changes: 247 additions & 0 deletions
247
charts/istio/1.20.5-tetrate-v1/gateway/values.schema.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,247 @@ | ||
{ | ||
"$schema": "http://json-schema.org/schema#", | ||
"type": "object", | ||
"additionalProperties": false, | ||
"properties": { | ||
"global": { | ||
"type": "object" | ||
}, | ||
"affinity": { | ||
"type": "object" | ||
}, | ||
"securityContext": { | ||
"type": ["object", "null"] | ||
}, | ||
"containerSecurityContext": { | ||
"type": ["object", "null"] | ||
}, | ||
"kind":{ | ||
"type": "string", | ||
"enum": ["Deployment", "DaemonSet"] | ||
}, | ||
"annotations": { | ||
"additionalProperties": { | ||
"type": [ | ||
"string", | ||
"integer" | ||
] | ||
}, | ||
"type": "object" | ||
}, | ||
"autoscaling": { | ||
"type": "object", | ||
"properties": { | ||
"enabled": { | ||
"type": "boolean" | ||
}, | ||
"maxReplicas": { | ||
"type": "integer" | ||
}, | ||
"minReplicas": { | ||
"type": "integer" | ||
}, | ||
"targetCPUUtilizationPercentage": { | ||
"type": "integer" | ||
} | ||
} | ||
}, | ||
"env": { | ||
"type": "object" | ||
}, | ||
"labels": { | ||
"type": "object" | ||
}, | ||
"name": { | ||
"type": "string" | ||
}, | ||
"nodeSelector": { | ||
"type": "object" | ||
}, | ||
"podAnnotations": { | ||
"type": "object", | ||
"properties": { | ||
"inject.istio.io/templates": { | ||
"type": "string" | ||
}, | ||
"prometheus.io/path": { | ||
"type": "string" | ||
}, | ||
"prometheus.io/port": { | ||
"type": "string" | ||
}, | ||
"prometheus.io/scrape": { | ||
"type": "string" | ||
} | ||
} | ||
}, | ||
"replicaCount": { | ||
"type": [ "integer", "null" ] | ||
}, | ||
"resources": { | ||
"type": "object", | ||
"properties": { | ||
"limits": { | ||
"type": "object", | ||
"properties": { | ||
"cpu": { | ||
"type": "string" | ||
}, | ||
"memory": { | ||
"type": "string" | ||
} | ||
} | ||
}, | ||
"requests": { | ||
"type": "object", | ||
"properties": { | ||
"cpu": { | ||
"type": "string" | ||
}, | ||
"memory": { | ||
"type": "string" | ||
} | ||
} | ||
} | ||
} | ||
}, | ||
"revision": { | ||
"type": "string" | ||
}, | ||
"runAsRoot": { | ||
"type": "boolean" | ||
}, | ||
"unprivilegedPort": { | ||
"type": ["string", "boolean"], | ||
"enum": [true, false, "auto"] | ||
}, | ||
"service": { | ||
"type": "object", | ||
"properties": { | ||
"annotations": { | ||
"type": "object" | ||
}, | ||
"externalTrafficPolicy": { | ||
"type": "string" | ||
}, | ||
"loadBalancerIP": { | ||
"type": "string" | ||
}, | ||
"loadBalancerSourceRanges": { | ||
"type": "array" | ||
}, | ||
"ipFamilies" : { | ||
"items": { | ||
"type": "string", | ||
"enum": ["IPv4", "IPv6"] | ||
} | ||
}, | ||
"ipFamilyPolicy" : { | ||
"type": "string", | ||
"enum": ["", "SingleStack", "PreferDualStack", "RequireDualStack"] | ||
}, | ||
"ports": { | ||
"type": "array", | ||
"items": { | ||
"type": "object", | ||
"properties": { | ||
"name": { | ||
"type": "string" | ||
}, | ||
"port": { | ||
"type": "integer" | ||
}, | ||
"protocol": { | ||
"type": "string" | ||
}, | ||
"targetPort": { | ||
"type": "integer" | ||
} | ||
} | ||
} | ||
}, | ||
"type": { | ||
"type": "string" | ||
} | ||
} | ||
}, | ||
"serviceAccount": { | ||
"type": "object", | ||
"properties": { | ||
"annotations": { | ||
"type": "object" | ||
}, | ||
"name": { | ||
"type": "string" | ||
}, | ||
"create": { | ||
"type": "boolean" | ||
} | ||
} | ||
}, | ||
"rbac": { | ||
"type": "object", | ||
"properties": { | ||
"enabled": { | ||
"type": "boolean" | ||
} | ||
} | ||
}, | ||
"tolerations": { | ||
"type": "array" | ||
}, | ||
"topologySpreadConstraints": { | ||
"type": "array" | ||
}, | ||
"networkGateway": { | ||
"type": "string" | ||
}, | ||
"imagePullPolicy": { | ||
"type": "string", | ||
"enum": ["", "Always", "IfNotPresent", "Never"] | ||
}, | ||
"imagePullSecrets": { | ||
"type": "array", | ||
"items": { | ||
"type": "object", | ||
"properties": { | ||
"name": { | ||
"type": "string" | ||
} | ||
} | ||
} | ||
}, | ||
"podDisruptionBudget": { | ||
"type": "object", | ||
"properties": { | ||
"minAvailable": { | ||
"type": ["integer", "string"] | ||
}, | ||
"maxUnavailable": { | ||
"type": ["integer", "string"] | ||
}, | ||
"unhealthyPodEvictionPolicy": { | ||
"type": "string", | ||
"enum": ["", "IfHealthyBudget", "AlwaysAllow"] | ||
} | ||
} | ||
}, | ||
"terminationGracePeriodSeconds": { | ||
"type": "number" | ||
}, | ||
"volumes": { | ||
"type": "array", | ||
"items": { | ||
"type": "object" | ||
} | ||
}, | ||
"volumeMounts": { | ||
"type": "array", | ||
"items": { | ||
"type": "object" | ||
} | ||
}, | ||
"priorityClassName": { | ||
"type": "string" | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,148 @@ | ||
# Name allows overriding the release name. Generally this should not be set | ||
name: "" | ||
# revision declares which revision this gateway is a part of | ||
revision: "" | ||
|
||
# Controls the spec.replicas setting for the Gateway deployment if set. | ||
# Otherwise defaults to Kubernetes Deployment default (1). | ||
replicaCount: | ||
|
||
kind: Deployment | ||
|
||
rbac: | ||
# If enabled, roles will be created to enable accessing certificates from Gateways. This is not needed | ||
# when using http://gateway-api.org/. | ||
enabled: true | ||
|
||
serviceAccount: | ||
# If set, a service account will be created. Otherwise, the default is used | ||
create: true | ||
# Annotations to add to the service account | ||
annotations: {} | ||
# The name of the service account to use. | ||
# If not set, the release name is used | ||
name: "" | ||
|
||
podAnnotations: | ||
prometheus.io/port: "15020" | ||
prometheus.io/scrape: "true" | ||
prometheus.io/path: "/stats/prometheus" | ||
inject.istio.io/templates: "gateway" | ||
sidecar.istio.io/inject: "true" | ||
|
||
# Define the security context for the pod. | ||
# If unset, this will be automatically set to the minimum privileges required to bind to port 80 and 443. | ||
# On Kubernetes 1.22+, this only requires the `net.ipv4.ip_unprivileged_port_start` sysctl. | ||
securityContext: ~ | ||
containerSecurityContext: ~ | ||
|
||
service: | ||
# Type of service. Set to "None" to disable the service entirely | ||
type: LoadBalancer | ||
ports: | ||
- name: status-port | ||
port: 15021 | ||
protocol: TCP | ||
targetPort: 15021 | ||
- name: http2 | ||
port: 80 | ||
protocol: TCP | ||
targetPort: 80 | ||
- name: https | ||
port: 443 | ||
protocol: TCP | ||
targetPort: 443 | ||
annotations: {} | ||
loadBalancerIP: "" | ||
loadBalancerSourceRanges: [] | ||
externalTrafficPolicy: "" | ||
externalIPs: [] | ||
ipFamilyPolicy: "" | ||
ipFamilies: [] | ||
|
||
resources: | ||
requests: | ||
cpu: 100m | ||
memory: 128Mi | ||
limits: | ||
cpu: 2000m | ||
memory: 1024Mi | ||
|
||
autoscaling: | ||
enabled: true | ||
minReplicas: 1 | ||
maxReplicas: 5 | ||
targetCPUUtilizationPercentage: 80 | ||
autoscaleBehavior: {} | ||
|
||
# Pod environment variables | ||
env: {} | ||
|
||
# Labels to apply to all resources | ||
labels: {} | ||
|
||
# Annotations to apply to all resources | ||
annotations: {} | ||
|
||
nodeSelector: {} | ||
|
||
tolerations: [] | ||
|
||
topologySpreadConstraints: [] | ||
|
||
affinity: {} | ||
|
||
# If specified, the gateway will act as a network gateway for the given network. | ||
networkGateway: "" | ||
|
||
# Specify image pull policy if default behavior isn't desired. | ||
# Default behavior: latest images will be Always else IfNotPresent | ||
imagePullPolicy: "" | ||
|
||
imagePullSecrets: [] | ||
|
||
# This value is used to configure a Kubernetes PodDisruptionBudget for the gateway. | ||
# | ||
# By default, the `podDisruptionBudget` is disabled (set to `{}`), | ||
# which means that no PodDisruptionBudget resource will be created. | ||
# | ||
# To enable the PodDisruptionBudget, configure it by specifying the | ||
# `minAvailable` or `maxUnavailable`. For example, to set the | ||
# minimum number of available replicas to 1, you can update this value as follows: | ||
# | ||
# podDisruptionBudget: | ||
# minAvailable: 1 | ||
# | ||
# Or, to allow a maximum of 1 unavailable replica, you can set: | ||
# | ||
# podDisruptionBudget: | ||
# maxUnavailable: 1 | ||
# | ||
# You can also specify the `unhealthyPodEvictionPolicy` field, and the valid values are `IfHealthyBudget` and `AlwaysAllow`. | ||
# For example, to set the `unhealthyPodEvictionPolicy` to `AlwaysAllow`, you can update this value as follows: | ||
# | ||
# podDisruptionBudget: | ||
# minAvailable: 1 | ||
# unhealthyPodEvictionPolicy: AlwaysAllow | ||
# | ||
# To disable the PodDisruptionBudget, you can leave it as an empty object `{}`: | ||
# | ||
# podDisruptionBudget: {} | ||
# | ||
podDisruptionBudget: {} | ||
|
||
terminationGracePeriodSeconds: 30 | ||
|
||
# A list of `Volumes` added into the Gateway Pods. See | ||
# https://kubernetes.io/docs/concepts/storage/volumes/. | ||
volumes: [] | ||
|
||
# A list of `VolumeMounts` added into the Gateway Pods. See | ||
# https://kubernetes.io/docs/concepts/storage/volumes/. | ||
volumeMounts: [] | ||
|
||
# Configure this to a higher priority class in order to make sure your Istio gateway pods | ||
# will not be killed because of low priority class. | ||
# Refer to https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/#priorityclass | ||
# for more detail. | ||
priorityClassName: "" |
15 changes: 15 additions & 0 deletions
15
charts/istio/1.20.5-tetrate-v1/gateways/istio-egress/Chart.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
apiVersion: v1 | ||
name: istio-egress | ||
# This version is never actually shipped. istio/release-builder will replace it at build-time | ||
# with the appropriate version | ||
version: 1.20.5-tetrate-v1 | ||
appVersion: 1.20.5-tetrate-v1 | ||
description: Helm chart for deploying Istio gateways | ||
keywords: | ||
- istio | ||
- egressgateway | ||
- gateways | ||
sources: | ||
- https://github.com/istio/istio | ||
engine: gotpl | ||
icon: https://istio.io/latest/favicons/android-192x192.png |
45 changes: 45 additions & 0 deletions
45
charts/istio/1.20.5-tetrate-v1/gateways/istio-egress/NOTES.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
|
||
Changes: | ||
- separate namespace allows: | ||
-- easier reconfig of just the gateway | ||
-- TLS secrets and domain name management is isolated, for better security | ||
-- simplified configuration | ||
-- multiple versions of the ingress can be used, to minize upgrade risks | ||
|
||
- the new chart uses the default namespace service account, and doesn't require | ||
additional RBAC permissions. | ||
|
||
- simplified label structure. Label change is not supported on upgrade. | ||
|
||
- for 'internal load balancer' you should deploy a separate gateway, in a different | ||
namespace. | ||
|
||
All ingress gateway have a "app:ingressgateway" label, used to identify it as an | ||
ingress, and an "istio: ingressgateway$SUFFIX" label of Gateway selection. | ||
|
||
The Gateways use "istio: ingressgateway$SUFFIX" selectors. | ||
|
||
|
||
# Multiple gateway versions | ||
|
||
|
||
|
||
# Using different pilot versions | ||
|
||
|
||
|
||
# Migration from istio-system | ||
|
||
Istio 1.0 includes the gateways in istio-system. Since the external IP is associated | ||
with the Service and bound to the namespace, it is recommended to: | ||
|
||
1. Install the new gateway in a new namespace. | ||
2. Copy any TLS certificate to the new namespace, and configure the domains. | ||
3. Checking the new gateway work - for example by overriding the IP in /etc/hosts | ||
4. Modify the DNS server to add the A record of the new namespace | ||
5. Check traffic | ||
6. Delete the A record corresponding to the gateway in istio-system | ||
7. Upgrade istio-system, disabling the ingressgateway | ||
8. Delete the domain TLS certs from istio-system. | ||
|
||
If using certmanager, all Certificate and associated configs must be moved as well. |
104 changes: 104 additions & 0 deletions
104
charts/istio/1.20.5-tetrate-v1/gateways/istio-egress/templates/_affinity.tpl
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,104 @@ | ||
{{/* affinity - https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ */}} | ||
|
||
{{ define "nodeaffinity" }} | ||
nodeAffinity: | ||
requiredDuringSchedulingIgnoredDuringExecution: | ||
{{- include "nodeAffinityRequiredDuringScheduling" . }} | ||
preferredDuringSchedulingIgnoredDuringExecution: | ||
{{- include "nodeAffinityPreferredDuringScheduling" . }} | ||
{{- end }} | ||
|
||
{{- define "nodeAffinityRequiredDuringScheduling" }} | ||
{{- $nodeSelector := default .global.defaultNodeSelector .nodeSelector -}} | ||
{{- if or .global.arch $nodeSelector }} | ||
nodeSelectorTerms: | ||
- matchExpressions: | ||
{{- if .global.arch }} | ||
- key: kubernetes.io/arch | ||
operator: In | ||
values: | ||
{{- range $key, $val := .global.arch }} | ||
{{- if gt ($val | int) 0 }} | ||
- {{ $key | quote }} | ||
{{- end }} | ||
{{- end }} | ||
{{- end }} | ||
{{- range $key, $val := $nodeSelector }} | ||
- key: {{ $key }} | ||
operator: In | ||
values: | ||
- {{ $val | quote }} | ||
{{- end }} | ||
{{- end }} | ||
{{- end }} | ||
|
||
{{- define "nodeAffinityPreferredDuringScheduling" }} | ||
{{- range $key, $val := .global.arch }} | ||
{{- if gt ($val | int) 0 }} | ||
- weight: {{ $val | int }} | ||
preference: | ||
matchExpressions: | ||
- key: kubernetes.io/arch | ||
operator: In | ||
values: | ||
- {{ $key | quote }} | ||
{{- end }} | ||
{{- end }} | ||
{{- end }} | ||
|
||
{{- define "podAntiAffinity" }} | ||
{{- if or .podAntiAffinityLabelSelector .podAntiAffinityTermLabelSelector}} | ||
podAntiAffinity: | ||
{{- if .podAntiAffinityLabelSelector }} | ||
requiredDuringSchedulingIgnoredDuringExecution: | ||
{{- include "podAntiAffinityRequiredDuringScheduling" . }} | ||
{{- end }} | ||
{{- if .podAntiAffinityTermLabelSelector }} | ||
preferredDuringSchedulingIgnoredDuringExecution: | ||
{{- include "podAntiAffinityPreferredDuringScheduling" . }} | ||
{{- end }} | ||
{{- end }} | ||
{{- end }} | ||
|
||
{{- define "podAntiAffinityRequiredDuringScheduling" }} | ||
{{- range $index, $item := .podAntiAffinityLabelSelector }} | ||
- labelSelector: | ||
matchExpressions: | ||
- key: {{ $item.key }} | ||
operator: {{ $item.operator }} | ||
{{- if $item.values }} | ||
values: | ||
{{- $vals := split "," $item.values }} | ||
{{- range $i, $v := $vals }} | ||
- {{ $v | quote }} | ||
{{- end }} | ||
{{- end }} | ||
topologyKey: {{ $item.topologyKey }} | ||
{{- if $item.namespaces }} | ||
namespaces: | ||
{{- $ns := split "," $item.namespaces }} | ||
{{- range $i, $n := $ns }} | ||
- {{ $n | quote }} | ||
{{- end }} | ||
{{- end }} | ||
{{- end }} | ||
{{- end }} | ||
|
||
{{- define "podAntiAffinityPreferredDuringScheduling" }} | ||
{{- range $index, $item := .podAntiAffinityTermLabelSelector }} | ||
- podAffinityTerm: | ||
labelSelector: | ||
matchExpressions: | ||
- key: {{ $item.key }} | ||
operator: {{ $item.operator }} | ||
{{- if $item.values }} | ||
values: | ||
{{- $vals := split "," $item.values }} | ||
{{- range $i, $v := $vals }} | ||
- {{ $v | quote }} | ||
{{- end }} | ||
{{- end }} | ||
topologyKey: {{ $item.topologyKey }} | ||
weight: 100 | ||
{{- end }} | ||
{{- end }} |
60 changes: 60 additions & 0 deletions
60
charts/istio/1.20.5-tetrate-v1/gateways/istio-egress/templates/autoscale.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
{{ $gateway := index .Values "gateways" "istio-egressgateway" }} | ||
{{- if and $gateway.autoscaleEnabled $gateway.autoscaleMin $gateway.autoscaleMax }} | ||
{{- if not .Values.global.autoscalingv2API }} | ||
apiVersion: autoscaling/v2beta1 | ||
kind: HorizontalPodAutoscaler | ||
metadata: | ||
name: {{ $gateway.name }} | ||
namespace: {{ .Release.Namespace }} | ||
labels: | ||
{{ $gateway.labels | toYaml | indent 4 }} | ||
release: {{ .Release.Name }} | ||
istio.io/rev: {{ .Values.revision | default "default" }} | ||
install.operator.istio.io/owning-resource: {{ .Values.ownerName | default "unknown" }} | ||
operator.istio.io/component: "EgressGateways" | ||
spec: | ||
maxReplicas: {{ $gateway.autoscaleMax }} | ||
minReplicas: {{ $gateway.autoscaleMin }} | ||
scaleTargetRef: | ||
apiVersion: apps/v1 | ||
kind: Deployment | ||
name: {{ $gateway.name }} | ||
metrics: | ||
- type: Resource | ||
resource: | ||
name: cpu | ||
targetAverageUtilization: {{ $gateway.cpu.targetAverageUtilization }} | ||
--- | ||
{{- else }} | ||
{{- if (semverCompare ">=1.23-0" .Capabilities.KubeVersion.GitVersion)}} | ||
apiVersion: autoscaling/v2 | ||
{{- else }} | ||
apiVersion: autoscaling/v2beta2 | ||
{{- end }} | ||
kind: HorizontalPodAutoscaler | ||
metadata: | ||
name: {{ $gateway.name }} | ||
namespace: {{ .Release.Namespace }} | ||
labels: | ||
{{ $gateway.labels | toYaml | indent 4 }} | ||
release: {{ .Release.Name }} | ||
istio.io/rev: {{ .Values.revision | default "default" }} | ||
install.operator.istio.io/owning-resource: {{ .Values.ownerName | default "unknown" }} | ||
operator.istio.io/component: "EgressGateways" | ||
spec: | ||
maxReplicas: {{ $gateway.autoscaleMax }} | ||
minReplicas: {{ $gateway.autoscaleMin }} | ||
scaleTargetRef: | ||
apiVersion: apps/v1 | ||
kind: Deployment | ||
name: {{ $gateway.name }} | ||
metrics: | ||
- type: Resource | ||
resource: | ||
name: cpu | ||
target: | ||
type: Utilization | ||
averageUtilization: {{ $gateway.cpu.targetAverageUtilization }} | ||
--- | ||
{{- end }} | ||
{{- end }} |
345 changes: 345 additions & 0 deletions
345
charts/istio/1.20.5-tetrate-v1/gateways/istio-egress/templates/deployment.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,345 @@ | ||
{{- $gateway := index .Values "gateways" "istio-egressgateway" }} | ||
{{- if eq $gateway.injectionTemplate "" }} | ||
apiVersion: apps/v1 | ||
kind: Deployment | ||
metadata: | ||
name: {{ $gateway.name }} | ||
namespace: {{ .Release.Namespace }} | ||
labels: | ||
{{ $gateway.labels | toYaml | indent 4 }} | ||
release: {{ .Release.Name }} | ||
istio.io/rev: {{ .Values.revision | default "default" }} | ||
install.operator.istio.io/owning-resource: {{ .Values.ownerName | default "unknown" }} | ||
operator.istio.io/component: "EgressGateways" | ||
spec: | ||
{{- if not $gateway.autoscaleEnabled }} | ||
{{- if $gateway.replicaCount }} | ||
replicas: {{ $gateway.replicaCount }} | ||
{{- end }} | ||
{{- end }} | ||
selector: | ||
matchLabels: | ||
{{ $gateway.labels | toYaml | indent 6 }} | ||
strategy: | ||
rollingUpdate: | ||
maxSurge: {{ $gateway.rollingMaxSurge }} | ||
maxUnavailable: {{ $gateway.rollingMaxUnavailable }} | ||
template: | ||
metadata: | ||
labels: | ||
{{ $gateway.labels | toYaml | indent 8 }} | ||
{{- if eq .Release.Namespace "istio-system"}} | ||
heritage: Tiller | ||
release: istio | ||
chart: gateways | ||
{{- end }} | ||
service.istio.io/canonical-name: {{ $gateway.name }} | ||
service.istio.io/canonical-revision: {{ index $gateway.labels "app.kubernetes.io/version" | default (index $gateway.labels "version") | default .Values.revision | default "latest" }} | ||
istio.io/rev: {{ .Values.revision | default "default" }} | ||
install.operator.istio.io/owning-resource: {{ .Values.ownerName | default "unknown" }} | ||
operator.istio.io/component: "EgressGateways" | ||
sidecar.istio.io/inject: "false" | ||
annotations: | ||
istio.io/rev: {{ .Values.revision | default "default" }} | ||
{{- if .Values.meshConfig.enablePrometheusMerge }} | ||
prometheus.io/port: "15020" | ||
prometheus.io/scrape: "true" | ||
prometheus.io/path: "/stats/prometheus" | ||
{{- end }} | ||
sidecar.istio.io/inject: "false" | ||
{{- if $gateway.podAnnotations }} | ||
{{ toYaml $gateway.podAnnotations | indent 8 }} | ||
{{ end }} | ||
spec: | ||
{{- if not $gateway.runAsRoot }} | ||
securityContext: | ||
{{- if not (eq .Values.global.platform "openshift") }} | ||
runAsUser: 1337 | ||
runAsGroup: 1337 | ||
{{- end }} | ||
runAsNonRoot: true | ||
{{- end }} | ||
serviceAccountName: {{ $gateway.name }}-service-account | ||
{{- if .Values.global.priorityClassName }} | ||
priorityClassName: "{{ .Values.global.priorityClassName }}" | ||
{{- end }} | ||
{{- if .Values.global.proxy.enableCoreDump }} | ||
initContainers: | ||
- name: enable-core-dump | ||
{{- if contains "/" .Values.global.proxy.image }} | ||
image: "{{ .Values.global.proxy.image }}" | ||
{{- else }} | ||
image: "{{ .Values.global.hub }}/{{ .Values.global.proxy.image | default "proxyv2" }}:{{ .Values.global.tag }}{{with (.Values.global.proxy.variant | default .Values.global.variant)}}-{{.}}{{end}}" | ||
{{- end }} | ||
{{- if .Values.global.imagePullPolicy }} | ||
imagePullPolicy: {{ .Values.global.imagePullPolicy }} | ||
{{- end }} | ||
command: | ||
- /bin/sh | ||
args: | ||
- -c | ||
- sysctl -w kernel.core_pattern=/var/lib/istio/data/core.proxy && ulimit -c unlimited | ||
securityContext: | ||
runAsUser: 0 | ||
runAsGroup: 0 | ||
runAsNonRoot: false | ||
privileged: true | ||
{{- end }} | ||
containers: | ||
- name: istio-proxy | ||
{{- if contains "/" .Values.global.proxy.image }} | ||
image: "{{ .Values.global.proxy.image }}" | ||
{{- else }} | ||
image: "{{ .Values.global.hub }}/{{ .Values.global.proxy.image | default "proxyv2" }}:{{ .Values.global.tag }}{{with (.Values.global.proxy.variant | default .Values.global.variant)}}-{{.}}{{end}}" | ||
{{- end }} | ||
{{- if .Values.global.imagePullPolicy }} | ||
imagePullPolicy: {{ .Values.global.imagePullPolicy }} | ||
{{- end }} | ||
ports: | ||
{{- range $key, $val := $gateway.ports }} | ||
- containerPort: {{ $val.targetPort | default $val.port }} | ||
protocol: {{ $val.protocol | default "TCP" }} | ||
{{- end }} | ||
- containerPort: 15090 | ||
protocol: TCP | ||
name: http-envoy-prom | ||
args: | ||
- proxy | ||
- router | ||
- --domain | ||
- $(POD_NAMESPACE).svc.{{ .Values.global.proxy.clusterDomain }} | ||
{{- if .Values.global.proxy.logLevel }} | ||
- --proxyLogLevel={{ .Values.global.proxy.logLevel }} | ||
{{- end}} | ||
{{- if .Values.global.proxy.componentLogLevel }} | ||
- --proxyComponentLogLevel={{ .Values.global.proxy.componentLogLevel }} | ||
{{- end}} | ||
{{- if .Values.global.logging.level }} | ||
- --log_output_level={{ .Values.global.logging.level }} | ||
{{- end}} | ||
{{- if .Values.global.logAsJson }} | ||
- --log_as_json | ||
{{- end }} | ||
{{- if .Values.global.sts.servicePort }} | ||
- --stsPort={{ .Values.global.sts.servicePort }} | ||
{{- end }} | ||
{{- if not $gateway.runAsRoot }} | ||
securityContext: | ||
allowPrivilegeEscalation: false | ||
capabilities: | ||
drop: | ||
- ALL | ||
privileged: false | ||
readOnlyRootFilesystem: true | ||
{{- end }} | ||
readinessProbe: | ||
failureThreshold: 30 | ||
httpGet: | ||
path: /healthz/ready | ||
port: 15021 | ||
scheme: HTTP | ||
initialDelaySeconds: 1 | ||
periodSeconds: 2 | ||
successThreshold: 1 | ||
timeoutSeconds: 1 | ||
resources: | ||
{{- if $gateway.resources }} | ||
{{ toYaml $gateway.resources | indent 12 }} | ||
{{- else }} | ||
{{ toYaml .Values.global.defaultResources | indent 12 }} | ||
{{- end }} | ||
env: | ||
- name: JWT_POLICY | ||
value: {{ .Values.global.jwtPolicy }} | ||
- name: PILOT_CERT_PROVIDER | ||
value: {{ .Values.global.pilotCertProvider }} | ||
- name: CA_ADDR | ||
{{- if .Values.global.caAddress }} | ||
value: {{ .Values.global.caAddress }} | ||
{{- else }} | ||
value: istiod{{- if not (eq .Values.revision "") }}-{{ .Values.revision }}{{- end }}.{{ .Values.global.istioNamespace }}.svc:15012 | ||
{{- end }} | ||
- name: NODE_NAME | ||
valueFrom: | ||
fieldRef: | ||
apiVersion: v1 | ||
fieldPath: spec.nodeName | ||
- name: POD_NAME | ||
valueFrom: | ||
fieldRef: | ||
apiVersion: v1 | ||
fieldPath: metadata.name | ||
- name: POD_NAMESPACE | ||
valueFrom: | ||
fieldRef: | ||
apiVersion: v1 | ||
fieldPath: metadata.namespace | ||
- name: INSTANCE_IP | ||
valueFrom: | ||
fieldRef: | ||
apiVersion: v1 | ||
fieldPath: status.podIP | ||
- name: HOST_IP | ||
valueFrom: | ||
fieldRef: | ||
apiVersion: v1 | ||
fieldPath: status.hostIP | ||
- name: ISTIO_CPU_LIMIT | ||
valueFrom: | ||
resourceFieldRef: | ||
resource: limits.cpu | ||
- name: SERVICE_ACCOUNT | ||
valueFrom: | ||
fieldRef: | ||
fieldPath: spec.serviceAccountName | ||
- name: ISTIO_META_WORKLOAD_NAME | ||
value: {{ $gateway.name }} | ||
- name: ISTIO_META_OWNER | ||
value: kubernetes://apis/apps/v1/namespaces/{{ .Release.Namespace }}/deployments/{{ $gateway.name }} | ||
{{- if $.Values.global.meshID }} | ||
- name: ISTIO_META_MESH_ID | ||
value: "{{ $.Values.global.meshID }}" | ||
{{- else if .Values.meshConfig.trustDomain }} | ||
- name: ISTIO_META_MESH_ID | ||
value: "{{ .Values.meshConfig.trustDomain }}" | ||
{{- end }} | ||
{{- if .Values.meshConfig.trustDomain }} | ||
- name: TRUST_DOMAIN | ||
value: "{{ .Values.meshConfig.trustDomain }}" | ||
{{- end }} | ||
{{- if not $gateway.runAsRoot }} | ||
- name: ISTIO_META_UNPRIVILEGED_POD | ||
value: "true" | ||
{{- end }} | ||
{{- range $key, $val := $gateway.env }} | ||
- name: {{ $key }} | ||
value: "{{ $val }}" | ||
{{- end }} | ||
{{- range $key, $value := .Values.meshConfig.defaultConfig.proxyMetadata }} | ||
- name: {{ $key }} | ||
value: "{{ $value }}" | ||
{{- end }} | ||
{{- $network_set := index $gateway.env "ISTIO_META_NETWORK" }} | ||
{{- if and (not $network_set) .Values.global.network }} | ||
- name: ISTIO_META_NETWORK | ||
value: "{{ .Values.global.network }}" | ||
{{- end }} | ||
- name: ISTIO_META_CLUSTER_ID | ||
value: "{{ $.Values.global.multiCluster.clusterName | default `Kubernetes` }}" | ||
- name: ISTIO_META_NODE_NAME | ||
valueFrom: | ||
fieldRef: | ||
fieldPath: spec.nodeName | ||
volumeMounts: | ||
- name: workload-socket | ||
mountPath: /var/run/secrets/workload-spiffe-uds | ||
- name: credential-socket | ||
mountPath: /var/run/secrets/credential-uds | ||
- name: workload-certs | ||
mountPath: /var/run/secrets/workload-spiffe-credentials | ||
- name: istio-envoy | ||
mountPath: /etc/istio/proxy | ||
- name: config-volume | ||
mountPath: /etc/istio/config | ||
{{- if eq .Values.global.pilotCertProvider "istiod" }} | ||
- mountPath: /var/run/secrets/istio | ||
name: istiod-ca-cert | ||
{{- end }} | ||
{{- if eq .Values.global.jwtPolicy "third-party-jwt" }} | ||
- name: istio-token | ||
mountPath: /var/run/secrets/tokens | ||
readOnly: true | ||
{{- end }} | ||
{{- if .Values.global.mountMtlsCerts }} | ||
# Use the key and cert mounted to /etc/certs/ for the in-cluster mTLS communications. | ||
- name: istio-certs | ||
mountPath: /etc/certs | ||
readOnly: true | ||
{{- end }} | ||
- mountPath: /var/lib/istio/data | ||
name: istio-data | ||
- name: podinfo | ||
mountPath: /etc/istio/pod | ||
{{- range $gateway.secretVolumes }} | ||
- name: {{ .name }} | ||
mountPath: {{ .mountPath | quote }} | ||
readOnly: true | ||
{{- end }} | ||
{{- range $gateway.configVolumes }} | ||
{{- if .mountPath }} | ||
- name: {{ .name }} | ||
mountPath: {{ .mountPath | quote }} | ||
readOnly: true | ||
{{- end }} | ||
{{- end }} | ||
{{- if $gateway.additionalContainers }} | ||
{{ toYaml $gateway.additionalContainers | indent 8 }} | ||
{{- end }} | ||
volumes: | ||
- emptyDir: {} | ||
name: workload-socket | ||
- emptyDir: {} | ||
name: credential-socket | ||
- emptyDir: {} | ||
name: workload-certs | ||
{{- if eq .Values.global.pilotCertProvider "istiod" }} | ||
- name: istiod-ca-cert | ||
configMap: | ||
name: istio-ca-root-cert | ||
{{- end }} | ||
- name: podinfo | ||
downwardAPI: | ||
items: | ||
- path: "labels" | ||
fieldRef: | ||
fieldPath: metadata.labels | ||
- path: "annotations" | ||
fieldRef: | ||
fieldPath: metadata.annotations | ||
- name: istio-envoy | ||
emptyDir: {} | ||
- name: istio-data | ||
emptyDir: {} | ||
{{- if eq .Values.global.jwtPolicy "third-party-jwt" }} | ||
- name: istio-token | ||
projected: | ||
sources: | ||
- serviceAccountToken: | ||
path: istio-token | ||
expirationSeconds: 43200 | ||
audience: {{ .Values.global.sds.token.aud }} | ||
{{- end }} | ||
{{- if .Values.global.mountMtlsCerts }} | ||
# Use the key and cert mounted to /etc/certs/ for the in-cluster mTLS communications. | ||
- name: istio-certs | ||
secret: | ||
secretName: istio.istio-egressgateway-service-account | ||
optional: true | ||
{{- end }} | ||
- name: config-volume | ||
configMap: | ||
name: istio{{- if not (eq .Values.revision "") }}-{{ .Values.revision }}{{- end }} | ||
optional: true | ||
{{- range $gateway.secretVolumes }} | ||
- name: {{ .name }} | ||
secret: | ||
secretName: {{ .secretName | quote }} | ||
optional: true | ||
{{- end }} | ||
{{- range $gateway.configVolumes }} | ||
- name: {{ .name }} | ||
configMap: | ||
name: {{ .configMapName | quote }} | ||
optional: true | ||
{{- end }} | ||
affinity: | ||
{{ include "nodeaffinity" (dict "global" .Values.global "nodeSelector" $gateway.nodeSelector) | trim | indent 8 }} | ||
{{- include "podAntiAffinity" $gateway | indent 6 }} | ||
{{- if $gateway.tolerations }} | ||
tolerations: | ||
{{ toYaml $gateway.tolerations | indent 6 }} | ||
{{- else if .Values.global.defaultTolerations }} | ||
tolerations: | ||
{{ toYaml .Values.global.defaultTolerations | indent 6 }} | ||
{{- end }} | ||
{{- end }} |
147 changes: 147 additions & 0 deletions
147
charts/istio/1.20.5-tetrate-v1/gateways/istio-egress/templates/injected-deployment.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,147 @@ | ||
{{- $gateway := index .Values "gateways" "istio-egressgateway" }} | ||
{{- if ne $gateway.injectionTemplate "" }} | ||
{{/* This provides a minimal gateway, ready to be injected. | ||
Any settings from values.gateways should be here - these are options specific to the gateway. | ||
Global settings, like the image, various env vars and volumes, etc will be injected. | ||
The normal Deployment is not suitable for this, as the original pod spec will override the injection template. */}} | ||
apiVersion: apps/v1 | ||
kind: Deployment | ||
metadata: | ||
name: {{ $gateway.name | default "istio-egressgateway" }} | ||
namespace: {{ .Release.Namespace }} | ||
labels: | ||
{{ $gateway.labels | toYaml | indent 4 }} | ||
release: {{ .Release.Name }} | ||
istio.io/rev: {{ .Values.revision | default "default" }} | ||
install.operator.istio.io/owning-resource: {{ .Values.ownerName | default "unknown" }} | ||
operator.istio.io/component: "EgressGateways" | ||
spec: | ||
{{- if not $gateway.autoscaleEnabled }} | ||
{{- if $gateway.replicaCount }} | ||
replicas: {{ $gateway.replicaCount }} | ||
{{- end }} | ||
{{- end }} | ||
selector: | ||
matchLabels: | ||
{{ $gateway.labels | toYaml | indent 6 }} | ||
strategy: | ||
rollingUpdate: | ||
maxSurge: {{ $gateway.rollingMaxSurge }} | ||
maxUnavailable: {{ $gateway.rollingMaxUnavailable }} | ||
template: | ||
metadata: | ||
labels: | ||
{{ $gateway.labels | toYaml | indent 8 }} | ||
{{- if eq .Release.Namespace "istio-system"}} | ||
heritage: Tiller | ||
release: istio | ||
chart: gateways | ||
{{- end }} | ||
install.operator.istio.io/owning-resource: {{ .Values.ownerName | default "unknown" }} | ||
operator.istio.io/component: "EgressGateways" | ||
sidecar.istio.io/inject: "true" | ||
{{- with .Values.revision }} | ||
istio.io/rev: {{ . }} | ||
{{- end }} | ||
annotations: | ||
{{- if .Values.meshConfig.enablePrometheusMerge }} | ||
prometheus.io/port: "15020" | ||
prometheus.io/scrape: "true" | ||
prometheus.io/path: "/stats/prometheus" | ||
{{- end }} | ||
sidecar.istio.io/inject: "true" | ||
inject.istio.io/templates: "{{ $gateway.injectionTemplate }}" | ||
{{- if $gateway.podAnnotations }} | ||
{{ toYaml $gateway.podAnnotations | indent 8 }} | ||
{{ end }} | ||
spec: | ||
{{- if not $gateway.runAsRoot }} | ||
securityContext: | ||
{{- if not (eq .Values.global.platform "openshift") }} | ||
runAsUser: 1337 | ||
runAsGroup: 1337 | ||
{{- end }} | ||
runAsNonRoot: true | ||
{{- end }} | ||
serviceAccountName: {{ $gateway.name | default "istio-egressgateway" }}-service-account | ||
{{- if .Values.global.priorityClassName }} | ||
priorityClassName: "{{ .Values.global.priorityClassName }}" | ||
{{- end }} | ||
containers: | ||
- name: istio-proxy | ||
image: auto | ||
{{- if .Values.global.imagePullPolicy }} | ||
imagePullPolicy: {{ .Values.global.imagePullPolicy }} | ||
{{- end }} | ||
ports: | ||
{{- range $key, $val := $gateway.ports }} | ||
- containerPort: {{ $val.targetPort | default $val.port }} | ||
protocol: {{ $val.protocol | default "TCP" }} | ||
{{- end }} | ||
- containerPort: 15090 | ||
protocol: TCP | ||
name: http-envoy-prom | ||
{{- if not $gateway.runAsRoot }} | ||
securityContext: | ||
allowPrivilegeEscalation: false | ||
capabilities: | ||
drop: | ||
- ALL | ||
privileged: false | ||
readOnlyRootFilesystem: true | ||
{{- end }} | ||
resources: | ||
{{- if $gateway.resources }} | ||
{{ toYaml $gateway.resources | indent 12 }} | ||
{{- else }} | ||
{{ toYaml .Values.global.defaultResources | indent 12 }} | ||
{{- end }} | ||
env: | ||
{{- if not $gateway.runAsRoot }} | ||
- name: ISTIO_META_UNPRIVILEGED_POD | ||
value: "true" | ||
{{- end }} | ||
{{- range $key, $val := $gateway.env }} | ||
- name: {{ $key }} | ||
value: {{ $val | quote }} | ||
{{- end }} | ||
volumeMounts: | ||
{{- range $gateway.secretVolumes }} | ||
- name: {{ .name }} | ||
mountPath: {{ .mountPath | quote }} | ||
readOnly: true | ||
{{- end }} | ||
{{- range $gateway.configVolumes }} | ||
{{- if .mountPath }} | ||
- name: {{ .name }} | ||
mountPath: {{ .mountPath | quote }} | ||
readOnly: true | ||
{{- end }} | ||
{{- end }} | ||
{{- if $gateway.additionalContainers }} | ||
{{ toYaml $gateway.additionalContainers | indent 8 }} | ||
{{- end }} | ||
volumes: | ||
{{- range $gateway.secretVolumes }} | ||
- name: {{ .name }} | ||
secret: | ||
secretName: {{ .secretName | quote }} | ||
optional: true | ||
{{- end }} | ||
{{- range $gateway.configVolumes }} | ||
- name: {{ .name }} | ||
configMap: | ||
name: {{ .configMapName | quote }} | ||
optional: true | ||
{{- end }} | ||
affinity: | ||
{{ include "nodeaffinity" (dict "global" .Values.global "nodeSelector" $gateway.nodeSelector) | trim | indent 8 }} | ||
{{- include "podAntiAffinity" $gateway | indent 6 }} | ||
{{- if $gateway.tolerations }} | ||
tolerations: | ||
{{ toYaml $gateway.tolerations | indent 6 }} | ||
{{- else if .Values.global.defaultTolerations }} | ||
tolerations: | ||
{{ toYaml .Values.global.defaultTolerations | indent 6 }} | ||
{{- end }} | ||
{{- end }} |
23 changes: 23 additions & 0 deletions
23
charts/istio/1.20.5-tetrate-v1/gateways/istio-egress/templates/poddisruptionbudget.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
{{- if .Values.global.defaultPodDisruptionBudget.enabled }} | ||
{{ $gateway := index .Values "gateways" "istio-egressgateway" }} | ||
{{- if (semverCompare ">=1.21-0" .Capabilities.KubeVersion.GitVersion) }} | ||
apiVersion: policy/v1 | ||
{{- else }} | ||
apiVersion: policy/v1beta1 | ||
{{- end }} | ||
kind: PodDisruptionBudget | ||
metadata: | ||
name: {{ $gateway.name }} | ||
namespace: {{ .Release.Namespace }} | ||
labels: | ||
{{ $gateway.labels | toYaml | trim | indent 4 }} | ||
release: {{ .Release.Name }} | ||
istio.io/rev: {{ .Values.revision | default "default" }} | ||
install.operator.istio.io/owning-resource: {{ .Values.ownerName | default "unknown" }} | ||
operator.istio.io/component: "EgressGateways" | ||
spec: | ||
minAvailable: 1 | ||
selector: | ||
matchLabels: | ||
{{ $gateway.labels | toYaml | trim | indent 6 }} | ||
{{- end }} |
16 changes: 16 additions & 0 deletions
16
charts/istio/1.20.5-tetrate-v1/gateways/istio-egress/templates/role.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
{{ $gateway := index .Values "gateways" "istio-egressgateway" }} | ||
apiVersion: rbac.authorization.k8s.io/v1 | ||
kind: Role | ||
metadata: | ||
name: {{ $gateway.name }}-sds | ||
namespace: {{ .Release.Namespace }} | ||
labels: | ||
release: {{ .Release.Name }} | ||
istio.io/rev: {{ .Values.revision | default "default" }} | ||
install.operator.istio.io/owning-resource: {{ .Values.ownerName | default "unknown" }} | ||
operator.istio.io/component: "EgressGateways" | ||
rules: | ||
- apiGroups: [""] | ||
resources: ["secrets"] | ||
verbs: ["get", "watch", "list"] | ||
--- |
19 changes: 19 additions & 0 deletions
19
charts/istio/1.20.5-tetrate-v1/gateways/istio-egress/templates/rolebindings.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
{{ $gateway := index .Values "gateways" "istio-egressgateway" }} | ||
apiVersion: rbac.authorization.k8s.io/v1 | ||
kind: RoleBinding | ||
metadata: | ||
name: {{ $gateway.name }}-sds | ||
namespace: {{ .Release.Namespace }} | ||
labels: | ||
release: {{ .Release.Name }} | ||
istio.io/rev: {{ .Values.revision | default "default" }} | ||
install.operator.istio.io/owning-resource: {{ .Values.ownerName | default "unknown" }} | ||
operator.istio.io/component: "EgressGateways" | ||
roleRef: | ||
apiGroup: rbac.authorization.k8s.io | ||
kind: Role | ||
name: {{ $gateway.name }}-sds | ||
subjects: | ||
- kind: ServiceAccount | ||
name: {{ $gateway.name }}-service-account | ||
--- |
56 changes: 56 additions & 0 deletions
56
charts/istio/1.20.5-tetrate-v1/gateways/istio-egress/templates/service.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
{{ $gateway := index .Values "gateways" "istio-egressgateway" }} | ||
{{- if not $gateway.customService }} | ||
apiVersion: v1 | ||
kind: Service | ||
metadata: | ||
name: {{ $gateway.name }} | ||
namespace: {{ .Release.Namespace }} | ||
annotations: | ||
{{- range $key, $val := $gateway.serviceAnnotations }} | ||
{{ $key }}: {{ $val | quote }} | ||
{{- end }} | ||
labels: | ||
{{ $gateway.labels | toYaml | indent 4 }} | ||
release: {{ .Release.Name }} | ||
istio.io/rev: {{ .Values.revision | default "default" }} | ||
install.operator.istio.io/owning-resource: {{ .Values.ownerName | default "unknown" }} | ||
operator.istio.io/component: "EgressGateways" | ||
spec: | ||
{{- if $gateway.loadBalancerIP }} | ||
loadBalancerIP: "{{ $gateway.loadBalancerIP }}" | ||
{{- end }} | ||
{{- if $gateway.loadBalancerSourceRanges }} | ||
loadBalancerSourceRanges: | ||
{{ toYaml $gateway.loadBalancerSourceRanges | indent 4 }} | ||
{{- end }} | ||
{{- if $gateway.externalTrafficPolicy }} | ||
externalTrafficPolicy: {{$gateway.externalTrafficPolicy }} | ||
{{- end }} | ||
type: {{ $gateway.type }} | ||
selector: | ||
{{ $gateway.labels | toYaml | indent 4 }} | ||
ports: | ||
|
||
{{- range $key, $val := $gateway.ports }} | ||
- | ||
{{- range $pkey, $pval := $val }} | ||
{{ $pkey}}: {{ $pval }} | ||
{{- end }} | ||
{{- end }} | ||
|
||
{{ range $app := $gateway.egressPorts }} | ||
- | ||
port: {{ $app.port }} | ||
name: {{ $app.name }} | ||
{{- end }} | ||
{{- if $gateway.ipFamilyPolicy }} | ||
ipFamilyPolicy: {{ $gateway.ipFamilyPolicy }} | ||
{{- end }} | ||
{{- if $gateway.ipFamilies }} | ||
ipFamilies: | ||
{{- range $gateway.ipFamilies }} | ||
- {{ . }} | ||
{{- end }} | ||
{{- end }} | ||
--- | ||
{{ end }} |
22 changes: 22 additions & 0 deletions
22
charts/istio/1.20.5-tetrate-v1/gateways/istio-egress/templates/serviceaccount.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
{{ $gateway := index .Values "gateways" "istio-egressgateway" }} | ||
apiVersion: v1 | ||
kind: ServiceAccount | ||
{{- if .Values.global.imagePullSecrets }} | ||
imagePullSecrets: | ||
{{- range .Values.global.imagePullSecrets }} | ||
- name: {{ . }} | ||
{{- end }} | ||
{{- end }} | ||
metadata: | ||
name: {{ $gateway.name }}-service-account | ||
namespace: {{ .Release.Namespace }} | ||
labels: | ||
{{ $gateway.labels | toYaml | trim | indent 4 }} | ||
release: {{ .Release.Name }} | ||
istio.io/rev: {{ .Values.revision | default "default" }} | ||
install.operator.istio.io/owning-resource: {{ .Values.ownerName | default "unknown" }} | ||
operator.istio.io/component: "EgressGateways" | ||
{{- with $gateway.serviceAccount.annotations }} | ||
annotations: | ||
{{- toYaml . | nindent 4 }} | ||
{{- end }} |
259 changes: 259 additions & 0 deletions
259
charts/istio/1.20.5-tetrate-v1/gateways/istio-egress/values.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,259 @@ | ||
# Standalone istio egress gateway. | ||
# Should be installed in a separate namespace, to minimize access to config | ||
gateways: | ||
istio-egressgateway: | ||
name: istio-egressgateway | ||
ports: | ||
- port: 80 | ||
targetPort: 8080 | ||
name: http2 | ||
protocol: TCP | ||
- port: 443 | ||
name: https | ||
targetPort: 8443 | ||
protocol: TCP | ||
labels: | ||
app: istio-egressgateway | ||
istio: egressgateway | ||
# Scalability tuning | ||
# replicaCount: 1 | ||
rollingMaxSurge: 100% | ||
rollingMaxUnavailable: 25% | ||
autoscaleEnabled: true | ||
autoscaleMin: 1 | ||
autoscaleMax: 5 | ||
resources: | ||
requests: | ||
cpu: 100m | ||
memory: 128Mi | ||
limits: | ||
cpu: 2000m | ||
memory: 1024Mi | ||
cpu: | ||
targetAverageUtilization: 80 | ||
serviceAnnotations: {} | ||
podAnnotations: {} | ||
type: ClusterIP # change to NodePort or LoadBalancer if need be | ||
# Setup how istiod Service is configured. See https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services | ||
ipFamilyPolicy: "" | ||
ipFamilies: [] | ||
secretVolumes: | ||
- name: egressgateway-certs | ||
secretName: istio-egressgateway-certs | ||
mountPath: /etc/istio/egressgateway-certs | ||
- name: egressgateway-ca-certs | ||
secretName: istio-egressgateway-ca-certs | ||
mountPath: /etc/istio/egressgateway-ca-certs | ||
configVolumes: [] | ||
additionalContainers: [] | ||
serviceAccount: | ||
# Annotations to add to the service account | ||
annotations: {} | ||
### Advanced options ############ | ||
# TODO: convert to real options, env should not be exposed | ||
env: {} | ||
# Set this to "external" if and only if you want the egress gateway to | ||
# act as a transparent SNI gateway that routes mTLS/TLS traffic to | ||
# external services defined using service entries, where the service | ||
# entry has resolution set to DNS, has one or more endpoints with | ||
# network field set to "external". By default its set to "" so that | ||
# the egress gateway sees the same set of endpoints as the sidecars | ||
# preserving backward compatibility | ||
# ISTIO_META_REQUESTED_NETWORK_VIEW: "" | ||
|
||
nodeSelector: {} | ||
tolerations: [] | ||
# Specify the pod anti-affinity that allows you to constrain which nodes | ||
# your pod is eligible to be scheduled based on labels on pods that are | ||
# already running on the node rather than based on labels on nodes. | ||
# There are currently two types of anti-affinity: | ||
# "requiredDuringSchedulingIgnoredDuringExecution" | ||
# "preferredDuringSchedulingIgnoredDuringExecution" | ||
# which denote "hard" vs. "soft" requirements, you can define your values | ||
# in "podAntiAffinityLabelSelector" and "podAntiAffinityTermLabelSelector" | ||
# correspondingly. | ||
# For example: | ||
# podAntiAffinityLabelSelector: | ||
# - key: security | ||
# operator: In | ||
# values: S1,S2 | ||
# topologyKey: "kubernetes.io/hostname" | ||
# This pod anti-affinity rule says that the pod requires not to be scheduled | ||
# onto a node if that node is already running a pod with label having key | ||
# "security" and value "S1". | ||
podAntiAffinityLabelSelector: [] | ||
podAntiAffinityTermLabelSelector: [] | ||
# whether to run the gateway in a privileged container | ||
runAsRoot: false | ||
# The injection template to use for the gateway. If not set, no injection will be performed. | ||
injectionTemplate: "" | ||
# Revision is set as 'version' label and part of the resource names when installing multiple control planes. | ||
revision: "" | ||
# For Helm compatibility. | ||
ownerName: "" | ||
global: | ||
# set the default set of namespaces to which services, service entries, virtual services, destination | ||
# rules should be exported to. Currently only one value can be provided in this list. This value | ||
# should be one of the following two options: | ||
# * implies these objects are visible to all namespaces, enabling any sidecar to talk to any other sidecar. | ||
# . implies these objects are visible to only to sidecars in the same namespace, or if imported as a Sidecar.egress.host | ||
defaultConfigVisibilitySettings: [] | ||
# Default node selector to be applied to all deployments so that all pods can be | ||
# constrained to run a particular nodes. Each component can overwrite these default | ||
# values by adding its node selector block in the relevant section below and setting | ||
# the desired values. | ||
defaultNodeSelector: {} | ||
# enable pod disruption budget for the control plane, which is used to | ||
# ensure Istio control plane components are gradually upgraded or recovered. | ||
defaultPodDisruptionBudget: | ||
enabled: true | ||
# A minimal set of requested resources to applied to all deployments so that | ||
# Horizontal Pod Autoscaler will be able to function (if set). | ||
# Each component can overwrite these default values by adding its own resources | ||
# block in the relevant section below and setting the desired resources values. | ||
defaultResources: | ||
requests: | ||
cpu: 10m | ||
# memory: 128Mi | ||
# limits: | ||
# cpu: 100m | ||
# memory: 128Mi | ||
# Default node tolerations to be applied to all deployments so that all pods can be | ||
# scheduled to a particular nodes with matching taints. Each component can overwrite | ||
# these default values by adding its tolerations block in the relevant section below | ||
# and setting the desired values. | ||
# Configure this field in case that all pods of Istio control plane are expected to | ||
# be scheduled to particular nodes with specified taints. | ||
defaultTolerations: [] | ||
# Default hub for Istio images. | ||
# Releases are published to docker hub under 'istio' project. | ||
# Dev builds from prow are on gcr.io | ||
hub: containers.istio.tetratelabs.com | ||
# Default tag for Istio images. | ||
tag: 1.20.5-tetrate-v1 | ||
# Specify image pull policy if default behavior isn't desired. | ||
# Default behavior: latest images will be Always else IfNotPresent. | ||
imagePullPolicy: "" | ||
# ImagePullSecrets for all ServiceAccount, list of secrets in the same namespace | ||
# to use for pulling any images in pods that reference this ServiceAccount. | ||
# For components that don't use ServiceAccounts (i.e. grafana, servicegraph, tracing) | ||
# ImagePullSecrets will be added to the corresponding Deployment(StatefulSet) objects. | ||
# Must be set for any cluster configured with private docker registry. | ||
imagePullSecrets: [] | ||
# - private-registry-key | ||
|
||
# To output all istio components logs in json format by adding --log_as_json argument to each container argument | ||
logAsJson: false | ||
# Specify pod scheduling arch(amd64, ppc64le, s390x, arm64) and weight as follows: | ||
# 0 - Never scheduled | ||
# 1 - Least preferred | ||
# 2 - No preference | ||
# 3 - Most preferred | ||
arch: {} | ||
# Comma-separated minimum per-scope logging level of messages to output, in the form of <scope>:<level>,<scope>:<level> | ||
# The control plane has different scopes depending on component, but can configure default log level across all components | ||
# If empty, default scope and level will be used as configured in code | ||
logging: | ||
level: "default:info" | ||
# Kubernetes >=v1.11.0 will create two PriorityClass, including system-cluster-critical and | ||
# system-node-critical, it is better to configure this in order to make sure your Istio pods | ||
# will not be killed because of low priority class. | ||
# Refer to https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/#priorityclass | ||
# for more detail. | ||
priorityClassName: "" | ||
proxy: | ||
image: proxyv2 | ||
# CAUTION: It is important to ensure that all Istio helm charts specify the same clusterDomain value | ||
# cluster domain. Default value is "cluster.local". | ||
clusterDomain: "cluster.local" | ||
# Per Component log level for proxy, applies to gateways and sidecars. If a component level is | ||
# not set, then the global "logLevel" will be used. | ||
componentLogLevel: "misc:error" | ||
# If set, newly injected sidecars will have core dumps enabled. | ||
enableCoreDump: false | ||
# Log level for proxy, applies to gateways and sidecars. | ||
# Expected values are: trace|debug|info|warning|error|critical|off | ||
logLevel: warning | ||
############################################################################################## | ||
# The following values are found in other charts. To effectively modify these values, make # | ||
# make sure they are consistent across your Istio helm charts # | ||
############################################################################################## | ||
|
||
# The customized CA address to retrieve certificates for the pods in the cluster. | ||
# CSR clients such as the Istio Agent and ingress gateways can use this to specify the CA endpoint. | ||
caAddress: "" | ||
# Used to locate istiod. | ||
istioNamespace: istio-system | ||
# Configure the policy for validating JWT. | ||
# Currently, two options are supported: "third-party-jwt" and "first-party-jwt". | ||
jwtPolicy: "third-party-jwt" | ||
# Mesh ID means Mesh Identifier. It should be unique within the scope where | ||
# meshes will interact with each other, but it is not required to be | ||
# globally/universally unique. For example, if any of the following are true, | ||
# then two meshes must have different Mesh IDs: | ||
# - Meshes will have their telemetry aggregated in one place | ||
# - Meshes will be federated together | ||
# - Policy will be written referencing one mesh from the other | ||
# | ||
# If an administrator expects that any of these conditions may become true in | ||
# the future, they should ensure their meshes have different Mesh IDs | ||
# assigned. | ||
# | ||
# Within a multicluster mesh, each cluster must be (manually or auto) | ||
# configured to have the same Mesh ID value. If an existing cluster 'joins' a | ||
# multicluster mesh, it will need to be migrated to the new mesh ID. Details | ||
# of migration TBD, and it may be a disruptive operation to change the Mesh | ||
# ID post-install. | ||
# | ||
# If the mesh admin does not specify a value, Istio will use the value of the | ||
# mesh's Trust Domain. The best practice is to select a proper Trust Domain | ||
# value. | ||
meshID: "" | ||
# Use the user-specified, secret volume mounted key and certs for Pilot and workloads. | ||
mountMtlsCerts: false | ||
multiCluster: | ||
# Set to true to connect two kubernetes clusters via their respective | ||
# ingressgateway services when pods in each cluster cannot directly | ||
# talk to one another. All clusters should be using Istio mTLS and must | ||
# have a shared root CA for this model to work. | ||
enabled: false | ||
# Should be set to the name of the cluster this installation will run in. This is required for sidecar injection | ||
# to properly label proxies | ||
clusterName: "" | ||
# Network defines the network this cluster belong to. This name | ||
# corresponds to the networks in the map of mesh networks. | ||
network: "" | ||
# Configure the certificate provider for control plane communication. | ||
# Currently, two providers are supported: "kubernetes" and "istiod". | ||
# As some platforms may not have kubernetes signing APIs, | ||
# Istiod is the default | ||
pilotCertProvider: istiod | ||
sds: | ||
# The JWT token for SDS and the aud field of such JWT. See RFC 7519, section 4.1.3. | ||
# When a CSR is sent from Citadel Agent to the CA (e.g. Citadel), this aud is to make sure the | ||
# JWT is intended for the CA. | ||
token: | ||
aud: istio-ca | ||
sts: | ||
# The service port used by Security Token Service (STS) server to handle token exchange requests. | ||
# Setting this port to a non-zero value enables STS server. | ||
servicePort: 0 | ||
# whether to use autoscaling/v2 template for HPA settings | ||
# for internal usage only, not to be configured by users. | ||
autoscalingv2API: true | ||
meshConfig: | ||
enablePrometheusMerge: true | ||
# The trust domain corresponds to the trust root of a system | ||
# Refer to https://github.com/spiffe/spiffe/blob/master/standards/SPIFFE-ID.md#21-trust-domain | ||
trustDomain: "cluster.local" | ||
defaultConfig: | ||
proxyMetadata: {} | ||
tracing: | ||
# tlsSettings: | ||
# mode: DISABLE # DISABLE, SIMPLE, MUTUAL, ISTIO_MUTUAL | ||
# clientCertificate: # example: /etc/istio/tracer/cert-chain.pem | ||
# privateKey: # example: /etc/istio/tracer/key.pem | ||
# caCertificates: # example: /etc/istio/tracer/root-cert.pem | ||
# sni: # example: tracer.somedomain | ||
# subjectAltNames: [] | ||
# - tracer.somedomain |
16 changes: 16 additions & 0 deletions
16
charts/istio/1.20.5-tetrate-v1/gateways/istio-ingress/Chart.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
apiVersion: v1 | ||
name: istio-ingress | ||
# This version is never actually shipped. istio/release-builder will replace it at build-time | ||
# with the appropriate version | ||
version: 1.20.5-tetrate-v1 | ||
appVersion: 1.20.5-tetrate-v1 | ||
tillerVersion: ">=2.7.2" | ||
description: Helm chart for deploying Istio gateways | ||
keywords: | ||
- istio | ||
- ingressgateway | ||
- gateways | ||
sources: | ||
- http://github.com/istio/istio | ||
engine: gotpl | ||
icon: https://istio.io/latest/favicons/android-192x192.png |
43 changes: 43 additions & 0 deletions
43
charts/istio/1.20.5-tetrate-v1/gateways/istio-ingress/NOTES.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
|
||
Changes: | ||
- separate namespace allows: | ||
-- easier reconfig of just the gateway | ||
-- TLS secrets and domain name management is isolated, for better security | ||
-- simplified configuration | ||
-- multiple versions of the ingress can be used, to minimize upgrade risks | ||
|
||
- the new chart uses the default namespace service account, and doesn't require | ||
additional RBAC permissions. | ||
|
||
- simplified label and chart structure. | ||
- ability to run a pilot dedicated for the gateway, isolated from the main pilot. This is more robust, safer on upgrades | ||
and allows a bit more flexibility. | ||
- the dedicated pilot-per-ingress is required if the gateway needs to support k8s-style ingress. | ||
|
||
# Port and basic host configuration | ||
|
||
In order to configure the Service object, the install/upgrade needs to provide a list of all ports. | ||
In the past, this was done when installing/upgrading full istio, and involved some duplication - ports configured | ||
both in upgrade, Gateway and VirtualService. | ||
|
||
The new Ingress chart uses a 'values.yaml' (see user-example-ingress), which auto-generates Service ports, | ||
Gateways and basic VirtualService. It is still possible to only configure the ports in Service, and do manual | ||
config for the rest. | ||
|
||
All internal services ( telemetry, pilot debug ports, mesh expansion ) can now be configured via the new mechanism. | ||
|
||
# Migration from istio-system | ||
|
||
Istio 1.0 includes the gateways in istio-system. Since the external IP is associated | ||
with the Service and bound to the namespace, it is recommended to: | ||
|
||
1. Install the new gateway in a new namespace. | ||
2. Copy any TLS certificate to the new namespace, and configure the domains. | ||
3. Checking the new gateway work - for example by overriding the IP in /etc/hosts | ||
4. Modify the DNS server to add the A record of the new namespace | ||
5. Check traffic | ||
6. Delete the A record corresponding to the gateway in istio-system | ||
7. Upgrade istio-system, disabling the ingressgateway | ||
8. Delete the domain TLS certs from istio-system. | ||
|
||
If using certmanager, all Certificate and associated configs must be moved as well. |
104 changes: 104 additions & 0 deletions
104
charts/istio/1.20.5-tetrate-v1/gateways/istio-ingress/templates/_affinity.tpl
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,104 @@ | ||
{{/* affinity - https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ */}} | ||
|
||
{{ define "nodeaffinity" }} | ||
nodeAffinity: | ||
requiredDuringSchedulingIgnoredDuringExecution: | ||
{{- include "nodeAffinityRequiredDuringScheduling" . }} | ||
preferredDuringSchedulingIgnoredDuringExecution: | ||
{{- include "nodeAffinityPreferredDuringScheduling" . }} | ||
{{- end }} | ||
|
||
{{- define "nodeAffinityRequiredDuringScheduling" }} | ||
{{- $nodeSelector := default .global.defaultNodeSelector .nodeSelector -}} | ||
{{- if or .global.arch $nodeSelector }} | ||
nodeSelectorTerms: | ||
- matchExpressions: | ||
{{- if .global.arch }} | ||
- key: kubernetes.io/arch | ||
operator: In | ||
values: | ||
{{- range $key, $val := .global.arch }} | ||
{{- if gt ($val | int) 0 }} | ||
- {{ $key | quote }} | ||
{{- end }} | ||
{{- end }} | ||
{{- end }} | ||
{{- range $key, $val := $nodeSelector }} | ||
- key: {{ $key }} | ||
operator: In | ||
values: | ||
- {{ $val | quote }} | ||
{{- end }} | ||
{{- end }} | ||
{{- end }} | ||
|
||
{{- define "nodeAffinityPreferredDuringScheduling" }} | ||
{{- range $key, $val := .global.arch }} | ||
{{- if gt ($val | int) 0 }} | ||
- weight: {{ $val | int }} | ||
preference: | ||
matchExpressions: | ||
- key: kubernetes.io/arch | ||
operator: In | ||
values: | ||
- {{ $key | quote }} | ||
{{- end }} | ||
{{- end }} | ||
{{- end }} | ||
|
||
{{- define "podAntiAffinity" }} | ||
{{- if or .podAntiAffinityLabelSelector .podAntiAffinityTermLabelSelector}} | ||
podAntiAffinity: | ||
{{- if .podAntiAffinityLabelSelector }} | ||
requiredDuringSchedulingIgnoredDuringExecution: | ||
{{- include "podAntiAffinityRequiredDuringScheduling" . }} | ||
{{- end }} | ||
{{- if .podAntiAffinityTermLabelSelector }} | ||
preferredDuringSchedulingIgnoredDuringExecution: | ||
{{- include "podAntiAffinityPreferredDuringScheduling" . }} | ||
{{- end }} | ||
{{- end }} | ||
{{- end }} | ||
|
||
{{- define "podAntiAffinityRequiredDuringScheduling" }} | ||
{{- range $index, $item := .podAntiAffinityLabelSelector }} | ||
- labelSelector: | ||
matchExpressions: | ||
- key: {{ $item.key }} | ||
operator: {{ $item.operator }} | ||
{{- if $item.values }} | ||
values: | ||
{{- $vals := split "," $item.values }} | ||
{{- range $i, $v := $vals }} | ||
- {{ $v | quote }} | ||
{{- end }} | ||
{{- end }} | ||
topologyKey: {{ $item.topologyKey }} | ||
{{- if $item.namespaces }} | ||
namespaces: | ||
{{- $ns := split "," $item.namespaces }} | ||
{{- range $i, $n := $ns }} | ||
- {{ $n | quote }} | ||
{{- end }} | ||
{{- end }} | ||
{{- end }} | ||
{{- end }} | ||
|
||
{{- define "podAntiAffinityPreferredDuringScheduling" }} | ||
{{- range $index, $item := .podAntiAffinityTermLabelSelector }} | ||
- podAffinityTerm: | ||
labelSelector: | ||
matchExpressions: | ||
- key: {{ $item.key }} | ||
operator: {{ $item.operator }} | ||
{{- if $item.values }} | ||
values: | ||
{{- $vals := split "," $item.values }} | ||
{{- range $i, $v := $vals }} | ||
- {{ $v | quote }} | ||
{{- end }} | ||
{{- end }} | ||
topologyKey: {{ $item.topologyKey }} | ||
weight: 100 | ||
{{- end }} | ||
{{- end }} |
60 changes: 60 additions & 0 deletions
60
charts/istio/1.20.5-tetrate-v1/gateways/istio-ingress/templates/autoscale.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
{{ $gateway := index .Values "gateways" "istio-ingressgateway" }} | ||
{{- if and $gateway.autoscaleEnabled $gateway.autoscaleMin $gateway.autoscaleMax }} | ||
{{- if not .Values.global.autoscalingv2API }} | ||
apiVersion: autoscaling/v2beta1 | ||
kind: HorizontalPodAutoscaler | ||
metadata: | ||
name: {{ $gateway.name }} | ||
namespace: {{ .Release.Namespace }} | ||
labels: | ||
{{ $gateway.labels | toYaml | indent 4 }} | ||
release: {{ .Release.Name }} | ||
istio.io/rev: {{ .Values.revision | default "default" }} | ||
install.operator.istio.io/owning-resource: {{ .Values.ownerName | default "unknown" }} | ||
operator.istio.io/component: "IngressGateways" | ||
spec: | ||
maxReplicas: {{ $gateway.autoscaleMax }} | ||
minReplicas: {{ $gateway.autoscaleMin }} | ||
scaleTargetRef: | ||
apiVersion: apps/v1 | ||
kind: Deployment | ||
name: {{ $gateway.name }} | ||
metrics: | ||
- type: Resource | ||
resource: | ||
name: cpu | ||
targetAverageUtilization: {{ $gateway.cpu.targetAverageUtilization }} | ||
--- | ||
{{- else }} | ||
{{- if (semverCompare ">=1.23-0" .Capabilities.KubeVersion.GitVersion)}} | ||
apiVersion: autoscaling/v2 | ||
{{- else }} | ||
apiVersion: autoscaling/v2beta2 | ||
{{- end }} | ||
kind: HorizontalPodAutoscaler | ||
metadata: | ||
name: {{ $gateway.name }} | ||
namespace: {{ .Release.Namespace }} | ||
labels: | ||
{{ $gateway.labels | toYaml | indent 4 }} | ||
release: {{ .Release.Name }} | ||
istio.io/rev: {{ .Values.revision | default "default" }} | ||
install.operator.istio.io/owning-resource: {{ .Values.ownerName | default "unknown" }} | ||
operator.istio.io/component: "IngressGateways" | ||
spec: | ||
maxReplicas: {{ $gateway.autoscaleMax }} | ||
minReplicas: {{ $gateway.autoscaleMin }} | ||
scaleTargetRef: | ||
apiVersion: apps/v1 | ||
kind: Deployment | ||
name: {{ $gateway.name }} | ||
metrics: | ||
- type: Resource | ||
resource: | ||
name: cpu | ||
target: | ||
type: Utilization | ||
averageUtilization: {{ $gateway.cpu.targetAverageUtilization }} | ||
--- | ||
{{- end }} | ||
{{- end }} |
Oops, something went wrong.