2025年2月9日日曜日

Istio ingressGatewayの導入(2025)

 istioをダウンロードする




       

以下のコマンドを行う

istioctl install -set profile=default -y















以下、CRDを確認する















podの作成も確認(上記のコマンドで、自動生成されてるね。)







ingress gatewayを入れる


helm repo add istio https://istio-release.storage.googleapis.com/charts\nhelm repo update

helm install istio-ingressgateway istio/gateway



次に、Gateway / VirtualService / Service / Pod(nginx)の作成を行う

(以下、テストコード)
# Istio Gatewayの定義。Ingress Gatewayを通じてnginxへのHTTPトラフィックを処理する。
apiVersion: networking.istio.io/v1
kind: Gateway
metadata:
name: http-gateway # Gatewayの名前
namespace: default # 使用するKubernetesの名前空間
spec:
selector:
istio: ingressgateway # Istio IngressGateway側でも同様のラベルにしている(一致してること!)
servers:
- port:
number: 80 # リスニングするポート番号
name: http # ポート名
protocol: HTTP # 使用するプロトコル
hosts:
- "*" # 任意のホストからのリクエストを受け入れる

---
# Istio VirtualServiceの定義。Gatewayで受けたHTTPリクエストをnginx Serviceにルーティングする。
apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
name: nginx # VirtualServiceの名前
namespace: default # 使用するKubernetesの名前空間
spec:
hosts:
- "*" # 任意のホストを対象にリクエストを受け入れる
gateways:
- http-gateway # nginx-gatewayで定義したGatewayを通じてトラフィックをルーティング
http:
- match:
- uri:
prefix: "/" # URIパスが"/"で始まるリクエストをマッチ
route:
- destination:
host: nginx.default.svc.cluster.local # nginx Serviceへのルーティング
port:
number: 80 # nginx Serviceのポート
---
apiVersion: v1
kind: Service
metadata:
name: nginx # サービス名
namespace: default # 名前空間
spec:
selector:
app: nginx # nginx ポッドを選択
ports:
- protocol: TCP
port: 80 # クラスタ内でアクセスするポート
targetPort: 80 # nginx ポッドの実際のポート
type: ClusterIP # 外部アクセスにはIstio Gateway経由でアクセス

---
apiVersion: v1
kind: Pod
metadata:
name: nginx
namespace: default
labels:
app: nginx # サービスと一致するラベル
spec:
containers:
- name: nginx
image: nginx:latest # nginxの公式イメージを使用
ports:
- containerPort: 80 # nginxのリスニングポート
resources:
requests:
memory: "64Mi" # コンテナが最初に要求するメモリ
cpu: "100m" # コンテナが最初に要求するCPU
limits:
memory: "128Mi" # コンテナが最大で消費できるメモリ
cpu: "500m" # コンテナが最大で消費できるCPU


上記、記載したラベルと一致しているか、istio-ingressgatewayにて確認してみる
spec:
selector:
istio: ingressgateway # Istio IngressGateway側でも同様のラベルにしている(一致してること!)


kubectl get svc istio-ingressgateway -n istio-system --show-labels
(以下が結果、一致してることが分かる)










0 件のコメント:

コメントを投稿

istio ingress gateway(指定したEnvoyプロキシが接続しているクラスターの情報表示)

指定した Envoy プロキシが接続しているクラスターの情報を表示しています。 出力からは、Envoy プロキシがどのサービスに対して接続設定を持っているか またはどのサービスとの通信が行われているかを確認できます。 [出力の説明] SERVICE FQDN :  接続先サービス...