Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ambient install user sub-guides #13920

Closed
wants to merge 4 commits into from

Conversation

srampal
Copy link
Contributor

@srampal srampal commented Sep 22, 2023

Please provide a description for what this PR is for.

And to help us figure out who should review this PR, please
put an X in all the areas that this PR affects.

  • Ambient
  • Docs
  • Installation
  • Networking
  • Performance and Scalability
  • Extensions and Telemetry
  • Security
  • Test and Release
  • User Experience
  • Developer Infrastructure

@srampal srampal requested a review from a team as a code owner September 22, 2023 19:18
@istio-testing istio-testing added size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. needs-ok-to-test labels Sep 22, 2023
@istio-testing
Copy link
Contributor

Hi @srampal. Thanks for your PR.

I'm waiting for a istio member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

ztunnel sub-guide to be part of a separate PR
@istio-testing istio-testing added size/L Denotes a PR that changes 100-499 lines, ignoring generated files. and removed size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. labels Sep 22, 2023
@srampal srampal marked this pull request as draft September 22, 2023 19:22
@istio-testing istio-testing added the do-not-merge/work-in-progress Block merging of a PR because it isn't ready yet. label Sep 22, 2023
Copy link
Member

@Arhell Arhell left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/ok-to-test

@istio-testing istio-testing added ok-to-test Set this label allow normal testing to take place for a PR not submitted by an Istio org member. and removed needs-ok-to-test labels Sep 23, 2023
@istio-testing
Copy link
Contributor

@srampal: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
lint_istio.io 6e43fad link true /test lint

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@istio-testing istio-testing added the needs-rebase Indicates a PR needs to be rebased before being merged label Nov 19, 2023

## Installation

### Pre-requisites & Supported Topologies
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

https://istio.io/latest/docs/releases/contribute/style-guide/#use-sentence-case-for-headings

Suggested change
### Pre-requisites & Supported Topologies
### Pre-requisites & supported topologies

A single Istio mesh can include pods and endpoints some of which operate using the sidecar proxy mode while others use the node level proxy of the Ambient architecture.
{{< /tip >}}

### Understanding the Ztunnel Default Configuration
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
### Understanding the Ztunnel Default Configuration
### Understanding the Ztunnel default configuration


An alternative to using istioctl is to use Helm based install of Istio Ambient.

## Setup Repo Info
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
## Setup Repo Info
## Setup repo info


*See [helm repo](https://helm.sh/docs/helm/helm_repo/) for command documentation.*

## Installing the Components
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
## Installing the Components
## Installing the components


## Installing the Components

### Installing Base Component
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
### Installing Base Component
### Installing Base component


## Introduction

This guide describe installation options and procedures for Istio Ambient mesh. The two primary installation methods supported are (1) Installation via the `istioctl` cli (2) Installation via `helm`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems we had standardized earlier on ambient mesh/mode being lower case. I will assume that is still the case.

Suggested change
This guide describe installation options and procedures for Istio Ambient mesh. The two primary installation methods supported are (1) Installation via the `istioctl` cli (2) Installation via `helm`.
This guide describe installation options and procedures for Istio ambient mesh. The two primary installation methods supported are (1) Installation via the `istioctl` cli (2) Installation via `helm`.


### Pre-requisites & Supported Topologies

Ztunnel proxies are automatically installed when one of the supported installation methods is used to install Istio Ambient mesh. The minimum Istio version required for the functionality described in this guide is 1.18.0. At this time, the ambient mode is only supported for deployment on Kubernetes clusters, support for deployment on non-Kubernetes endpoints such as Virtual machines is expected to be a future capability. Additionally, only single cluster deployments are supported for Ambient mode. Some limited multi-cluster scenarios may work currently in ambient mode but the behavior is not guaranteed and official support for multi-cluster operation is a future capability. Finally note that Ztunnel based L4 networking is primnarily focused on East-West mesh networking and can work with all of Istio's North-South networking options including Istio-native ingress and egress gateways as well as Kubernetes native Gateway API implementation.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Ztunnel proxies are automatically installed when one of the supported installation methods is used to install Istio Ambient mesh. The minimum Istio version required for the functionality described in this guide is 1.18.0. At this time, the ambient mode is only supported for deployment on Kubernetes clusters, support for deployment on non-Kubernetes endpoints such as Virtual machines is expected to be a future capability. Additionally, only single cluster deployments are supported for Ambient mode. Some limited multi-cluster scenarios may work currently in ambient mode but the behavior is not guaranteed and official support for multi-cluster operation is a future capability. Finally note that Ztunnel based L4 networking is primnarily focused on East-West mesh networking and can work with all of Istio's North-South networking options including Istio-native ingress and egress gateways as well as Kubernetes native Gateway API implementation.
Ztunnel proxies are automatically installed when one of the supported installation methods is used to install Istio ambient mesh. The minimum Istio version required for the functionality described in this guide is 1.18.0. At this time, the ambient mode is only supported for deployment on Kubernetes clusters, support for deployment on non-Kubernetes endpoints such as Virtual machines is expected to be a future capability. Additionally, only single cluster deployments are supported for ambient mode. Some limited multi-cluster scenarios may work currently in ambient mode but the behavior is not guaranteed and official support for multi-cluster operation is a future capability. Finally note that Ztunnel based L4 networking is primarily focused on East-West mesh networking and can work with all of Istio's North-South networking options including Istio-native ingress and egress gateways as well as Kubernetes native Gateway API implementation.

Ztunnel proxies are automatically installed when one of the supported installation methods is used to install Istio Ambient mesh. The minimum Istio version required for the functionality described in this guide is 1.18.0. At this time, the ambient mode is only supported for deployment on Kubernetes clusters, support for deployment on non-Kubernetes endpoints such as Virtual machines is expected to be a future capability. Additionally, only single cluster deployments are supported for Ambient mode. Some limited multi-cluster scenarios may work currently in ambient mode but the behavior is not guaranteed and official support for multi-cluster operation is a future capability. Finally note that Ztunnel based L4 networking is primnarily focused on East-West mesh networking and can work with all of Istio's North-South networking options including Istio-native ingress and egress gateways as well as Kubernetes native Gateway API implementation.

{{< tip >}}
A single Istio mesh can include pods and endpoints some of which operate using the sidecar proxy mode while others use the node level proxy of the Ambient architecture.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
A single Istio mesh can include pods and endpoints some of which operate using the sidecar proxy mode while others use the node level proxy of the Ambient architecture.
A single Istio mesh can include pods and endpoints some of which operate using the sidecar proxy mode while others use the node level proxy of the ambient architecture.


### Installation using Helm charts

An alternative to using istioctl is to use Helm based install of Istio Ambient.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
An alternative to using istioctl is to use Helm based install of Istio Ambient.
An alternative to using istioctl is to use Helm based install of Istio ambient.


One of the goals for the ztunnel proxy design is to provide a usable configuration out of the box with a fixed feature set and that does not require much, or any, custom configuration. Hence currently there are no configuration options that need to be set other than the `ambient` profile setting. Once this profile is used, this in turn sets sets 2 internal configuration parameters (as illustrated in the examples below) within the istioOperator which eventually set the configuration of the `ambient` mesh. In future there may be some additional limited configurability for ztunnel proxies. For now, the pod to ztunnel proxy networking (sometimes also called ztunnel redirection), ztunnel proxy to ztunnel proxy networking as well as ztunnel to other sidecar proxy networing all use a fixed default configuration which is not customizable. In particular, currently, the only option for pod to ztunnel networking setup is currently via the `istio-cni` and only via an internal ipTables based ztunnel traffic redirect option. There is no option to use `init-containers` unlike with sidecar proxies. Alternate forms of ztunnel traffic redirect such as ebpf are also not currently supported, although may be supported in future. Of course, once the baseline `ambient` mesh is installed, features such as Authorization policy (both L4 and L7) as well as other istio functions such as PeerAuthentication options for mutual-TLS are fully configurable similar to standard Istio. In future release versions, some limited configurability may also be added to the ztunnel proxy layer.

For the examples in this guide, we used a deployment of Istio Ambient on a `kind` cluster, although these should apply for any Kubernetes cluster version 1.18.0 or later. Refer to the Getting started guide on how to download the `istioctl` client and how to deploy a `kind` cluster. It would be recommended to have a cluster with more than 1 worker node in order to fully exercise the examples described in this guide.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
For the examples in this guide, we used a deployment of Istio Ambient on a `kind` cluster, although these should apply for any Kubernetes cluster version 1.18.0 or later. Refer to the Getting started guide on how to download the `istioctl` client and how to deploy a `kind` cluster. It would be recommended to have a cluster with more than 1 worker node in order to fully exercise the examples described in this guide.
For the examples in this guide, we used a deployment of Istio ambient on a `kind` cluster, although these should apply for any Kubernetes cluster version 1.18.0 or later. Refer to the Getting started guide on how to download the `istioctl` client and how to deploy a `kind` cluster. It would be recommended to have a cluster with more than 1 worker node in order to fully exercise the examples described in this guide.

@craigbox
Copy link
Contributor

Given all the recent changes, should we try and revive this PR @srampal?

@srampal
Copy link
Contributor Author

srampal commented Mar 12, 2024

Given all the recent changes, should we try and revive this PR @srampal?

@craigbox so the original plan for ambient user guides was to have "install"/ "upgrade" related user guides as pages/ docs within the "User guides" folder. However a "Helm install" doc was added in the top level folder and the index.md in this commit was also somewhat out of date given all the changes we made to the ztunnel user's giude etc. So now the questions are: (1) Do we expect to have multiple user guides related to "install/upgrade" type operations for ambient ? (2) Should all such user guides including the "helm install" user guide in the parent folder be moved inside the overall "user guides" folder ? If yes, then lets first just move the helm install user guide into this folder for now and later add more install/ upgrade guides either via this PR/ issue and/or new ones. Thoughts ?

@craigbox
Copy link
Contributor

craigbox commented Mar 12, 2024

By 1.22, I think we want to have a hierarchy which looks like

/docs/setup/install/
/docs/setup/upgrade/

/docs/ambient/setup/install
/docs/ambient/setup/upgrade

(etc)

So, for now, if the content is good and useful, let's get it merged in a place that makes sense for the current hierarchy - under /docs/ops/ambient/install/ I guess - and we can move things around as we need.

Though the question remains, are both Helm and istioctl officially supported install methods for ambient mode?

@istio-testing istio-testing removed the needs-rebase Indicates a PR needs to be rebased before being merged label Mar 12, 2024
@craigbox
Copy link
Contributor

craigbox commented May 2, 2024

(See https://docs.google.com/spreadsheets/d/1ag5zhMOm2flEK7w5D7Sv3pbpHsx7afG2hs74-h2MHCY/edit#gid=0 which suggests that we will have install docs for Helm and istioctl both.)

@craigbox
Copy link
Contributor

craigbox commented May 2, 2024

Do you think there's anything in this draft which we should lift out, or should we close it? @srampal

@istio-testing istio-testing added the needs-rebase Indicates a PR needs to be rebased before being merged label May 3, 2024
@istio-testing
Copy link
Contributor

PR needs rebase.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@craigbox craigbox closed this May 14, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/ambient area/environments do-not-merge/work-in-progress Block merging of a PR because it isn't ready yet. kind/docs needs-rebase Indicates a PR needs to be rebased before being merged ok-to-test Set this label allow normal testing to take place for a PR not submitted by an Istio org member. size/L Denotes a PR that changes 100-499 lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants