### download
```bash
curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.23.1 TARGET_ARCH=x86_64 sh -
```

### set istioctl
```bash
cd ~/istio-1.23.1/bin
```
```bash
chmod +x istioctl
```
```bash
ln istioctl /usr/bin/istioctl
```

### install

```bash
istioctl install --manifests=manifests/ 
```
Istioctl은 istio 설치를 위해 manifests/ 디렉토리 내에서 기본적으로 필요한 파일과 폴더들을 참조합니다. 

기본적으로 참조되는 폴더와 파일
| 구성요소 | 내용 |
| --- | --- |
| base | Istio의 기본 리소스 및 CRD 배포, 네임스페이스, 서비스 계정, 클러스터 역할, 클러스터 역할 바인딩 등|
| istio-control | Istio의 컨트롤 플레인(예: istiod) 설치에 사용됩니다. |
|gateways| Ingress 및 Egress Gateway 설치에 필요하며, 서비스 타입 변경(예: NodePort) 등의 설정을 관리. |
| default |

default/ 폴더는 default 프로필을 사용하는 기본 설치 구성을 포함하고 있습니다. Istio 설치 시 이 폴더의 파일들이 기본적으로 참조되며, 다양한 설치 옵션이 포함된 프로필 파일이 여기에서 사용됩니다.
참조 이유: Istio를 설치할 때 default 프로필의 기본 설정을 참조하며, 사용자 정의 구성이 없다면 이 프로필을 따릅니다.
istio-operator/

istio-operator/ 폴더는 IstioOperator 리소스 및 설정을 정의하는 매니페스트가 포함되어 있습니다. 이 파일들은 Istio 설치를 제어하고, 다양한 구성 요소의 활성화/비활성화를 관리하는 데 사용됩니다.
참조 이유: IstioOperator 리소스를 통해 Istio 설치의 구체적인 설정과 구성을 관리합니다.
istio-cni/ (옵션)

istio-cni/는 Istio의 CNI(Container Network Interface)를 설정하기 위한 매니페스트 파일을 포함하고 있습니다. Istio CNI는 사이드카 프록시 주입을 지원하며, Kubernetes 네트워크 플러그인과 통합됩니다.
참조 이유: CNI 기반 설치를 활성화할 경우 사용됩니다.
ztunnel/ (옵션)

ztunnel/은 Istio의 Zero Trust 기반 네트워크 보안을 지원하는 구성 요소와 관련된 파일이 포함되어 있습니다. 보안 네트워크 통신과 관련된 설정을 정의합니다.
참조 이유: Zero Trust 보안 설치를 사용하는 경우 참조됩니다.
추가 파일들
README.md

Istio 차트에 대한 간단한 설명이 포함된 파일입니다. Istio의 구성 요소와 설치 방법에 대한 정보를 제공합니다.
참조 이유: 설치 중 직접 참조되지는 않지만, 사용자에게 정보를 제공합니다.
UPDATING-CHARTS.md

차트 업데이트와 관련된 정보가 포함된 문서입니다. Istio 차트를 어떻게 업데이트할 수 있는지에 대한 가이드를 제공합니다.
참조 이유: 설치 중 직접 참조되지는 않지만, Helm 차트 관리 및 업데이트에 대한 정보를 제공합니다.
install-OpenShift.md

OpenShift에 Istio를 설치할 때 참고할 수 있는 문서입니다. OpenShift에 맞춘 설치 관련 정보가 포함되어 있습니다.
참조 이유: OpenShift 설치 시에만 유용하며, 일반적인 Kubernetes 설치에서는 참조되지 않습니다.
기본적으로 참조되는 주요 구성 요소
CRD: Istio의 모든 설치에서 사용되는 주요 Custom Resource Definitions.
istiod: Istio 컨트롤 플레인의 핵심 컴포넌트.
Ingress Gateway: Istio Ingress Gateway 설치 파일.
IstioOperator: 설치 설정을 조정하는 파일.
결론
istioctl install --manifests=manifests/ 명령어는 기본적으로 base/, istio-control/, gateways/, default/, istio-operator/ 폴더의 파일들을 참조합니다. 이들 폴더는 Istio의 핵심 구성 요소인 CRD, istiod, 게이트웨이 설정 등을 관리하며, 기본적인 Istio 설치에 필요한 리소스들을 제공합니다.




나의 말:
gateway 폴더와 gateways 폴더의 차이는?
ChatGPT의 말:
ChatGPT
gateway 폴더와 gateways 폴더는 Istio 설치 시 각각 다른 목적을 가진 폴더로, 중요한 차이가 있습니다. 이 두 폴더는 Istio의 게이트웨이(Gateway) 구성과 관련이 있지만, 다루는 범위와 역할이 다릅니다.

1. gateway/ 폴더
목적: Istio의 개별적인 Gateway 구성과 관련된 설정이 포함됩니다. 주로 istio-ingressgateway 또는 istio-egressgateway와 같은 구체적인 게이트웨이 인스턴스를 정의하고, 설치할 때 필요한 매니페스트가 여기에 저장됩니다.
내용: Istio에서 Ingress 또는 Egress Gateway를 정의하는 Kubernetes 리소스의 매니페스트가 있을 수 있습니다. 이 폴더는 특정 게이트웨이 인스턴스와 관련된 세부 설정을 포함하는 경우가 많습니다.
예시 파일:
ingress-gateway.yaml
egress-gateway.yaml
역할:

개별 Ingress Gateway와 Egress Gateway를 정의하는 파일을 포함.
특정 Gateway 리소스를 Kubernetes 클러스터에 설치할 때 참조됩니다.
Ingress Gateway와 Egress Gateway의 서비스 설정(예: NodePort, ClusterIP) 등을 제어할 수 있습니다.
2. gateways/ 폴더
목적: Istio의 게이트웨이 관련 전반적인 설정이 포함되어 있습니다. 여기에는 Ingress 및 Egress Gateway를 위한 공통적인 설정, 또는 여러 게이트웨이를 관리하는 설정들이 포함됩니다.
내용: 여러 게이트웨이와 관련된 설정이나 매니페스트 파일이 들어 있을 수 있으며, 설치할 때 다양한 게이트웨이 구성 요소를 설정하는 데 사용됩니다.
예시 파일:
ingress.yaml
egress.yaml
역할:

Istio에서 게이트웨이와 관련된 전반적인 리소스들을 정의.
다양한 게이트웨이 설정 파일을 포함하여 전체 게이트웨이 설치 및 관리에 사용.
여러 게이트웨이 인스턴스 간의 공통 설정을 관리하는데 도움을 줍니다.
주요 차이점 요약
항목	gateway/ 폴더	gateways/ 폴더
목적	개별 Gateway 인스턴스(Ingress, Egress 등)를 정의	게이트웨이 관련 전반적인 설정 및 리소스들을 관리
내용	특정 Ingress/Egress Gateway의 설정 파일	다양한 게이트웨이와 관련된 매니페스트 및 설정 파일
사용 예	istio-ingressgateway 또는 istio-egressgateway 설정	게이트웨이 설치 및 여러 게이트웨이 구성 요소를 관리
설정 범위	개별 Gateway 리소스에 대한 세부 설정	게이트웨이 전반에 걸친 공통 설정을 포함
결론
gateway/ 폴더: 특정 Gateway 인스턴스(예: istio-ingressgateway 또는 istio-egressgateway)의 설정 파일들이 포함되어, 개별 게이트웨이를 정의하고 관리하는 데 사용됩니다.
gateways/ 폴더: Istio의 게이트웨이와 관련된 전반적인 설정 파일들을 포함하고 있으며, 여러 게이트웨이 리소스에 공통된 설정을 관리하거나, 다양한 게이트웨이 설치 파일들을 포함할 수 있습니다.
따라서, **gateway/**는 개별 게이트웨이에 집중하고, **gateways/**는 게이트웨이 관련 설정을 광범위하게 관리하는 역할을 합니다.

