GNU/Linux >> Linux の 問題 >  >> Linux

Istioチュートリアル:IstioBasics入門

はじめに

クラウドネイティブアプリケーションのマイクロサービスを管理する実用的な方法は、アプリケーションネットワーク機能を自動化することです。

Istioは、コントロールプレーンとして機能する構成可能なサービスメッシュプラットフォームであり、構成をサイドカープロキシとゲートウェイに分散します。これは、Kubernetesクラスター内のコンテナーを接続、監視、保護するための一般的なオプションです。

このチュートリアルでは、Istioをインストールし、テストアプリケーションをデプロイし、プラットフォームで動作するようにKubernetesクラスターをセットアップする方法を学習します。

前提条件

  • Kubernetesクラスター(またはminikube)
  • kubectlコマンドラインツール

最新のIstioリリースをダウンロード

Istioの最新リリースをダウンロードするには、GitHubのIstioリリースページに移動します。

または、Linuxユーザーは curlを使用できます 最新リリースを自動的にダウンロードして抽出するには:

curl -L https://istio.io/downloadIstio | sh -

このコマンドは、インストールファイルを istio-[version]という名前のフォルダーに抽出します。

古いバージョンのIstioをダウンロードするには、 curlを使用します 、ただし、次の構文を使用してバージョンとプロセッサアーキテクチャを指定します。

curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.6.8 TARGET_ARCH=x86_64 sh -

Istioインストールガイド

1.Kubernetesクラスターを起動します。この記事ではminikubeを使用しています:

minikube start

2.次に、解凍​​したファイルのあるフォルダーに移動して、Istioのインストールを開始します。

cd istio-1.9.2

3. bin/ ディレクトリにはistioctlが含まれています クライアントバイナリ。 Linuxでは、次のように入力して、クライアントをパスに追加します。

export PATH=$PWD/bin:$PATH

この方法で設定された変数は、現在のシェルセッションを終了するまで続きます。変数を永続的に設定するには、Linuxで環境変数を設定する方法をお読みください。

4. istioctlを使用します インストールプロセスを開始するためのツール:

istioctl install --set profile=demo -y

出力は、インストールが成功したことを確認します:

5. Istioは、アプリケーションのデプロイ時にEnvoyサイドカープロキシを自動的に挿入できます。これを有効にするには、 kubectlを使用します この命令を含む名前空間ラベルを追加するには:

kubectl label namespace default istio-injection=enabled

これでIstioのインストールプロセスは終了です。

Bookinfoアプリケーションを介した展開のテスト

Istioインストールアーカイブには、 Bookinfoというサンプルアプリケーションをデプロイするために必要なすべてのファイルが含まれています。 。

1. bookinfo.yamlを適用することから始めます kubectlを使用したファイル

kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml

システムは、いくつかのデプロイメント、サービス、およびポッドを作成します。

2.実行中のサービスを確認します:

kubectl get services

3.ポッドの準備ができているかどうかを確認します:

kubectl get pods

ポッドが上がると、Istioはサイドカーを一緒に展開します:

4. READYまで待ちます 各ポッドのラベルは2/2です。 。次に、次のコマンドを実行して、アプリがHTMLページを正しく提供しているかどうかを確認します。

kubectl exec "$(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}')" -c ratings -- curl -sS productpage:9080/productpage | grep -o ""

出力は、タイトル自体とともに、ページのタイトルタグである必要があります:

5.次のステップは、外部トラフィックに対してアプリを開くことです。 bookinfo-gateway.yamlを適用します samplesからのファイル フォルダ:

kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml

出力は、アプリケーションがIstioゲートウェイに正常に関連付けられたことを確認します。

6. istioctlを使用します 構成を分析し、潜在的な問題を確認するには:

istioctl analyze

システムで問題が検出されない場合は、次のメッセージが表示されます。


7.前の手順で設定したゲートウェイにアクセスするには、入力変数を設定します。まず、 INGRESS_PORTをエクスポートします

export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}')

8.ここで、 SECURE_INGRESS_PORTに対してプロセスを繰り返します。

export SECURE_INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="https")].nodePort}')

9. echoコマンドを使用して、ポートが正常に割り当てられているかどうかを確認します。

echo "$INGRESS_PORT" && echo "$SECURE_INGRESS_PORT"

出力にはポート番号が表示されます:


10. INGRESS_HOSTをエクスポートします 変数:

export INGRESS_HOST=$(minikube ip)

11. echoで変数を確認します

echo "$INGRESS_HOST"

12.トラフィックをIstioIngressGatewayに転送するには、新しいターミナルウィンドウを開き、次のコマンドを入力します。

minikube tunnel

Minikubeは、Istioのロードバランサーとして機能するようになりました。出力には、minikubeがトラフィックを誘導していることが示されています:


13.前のターミナルウィンドウに戻り、 GATEWAY_URLをエクスポートします。 INGRESS_HOSTで構成される変数 およびINGRESS_PORT 変数:

export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT

14. echoを使用します IPアドレスとポート番号全体を確認するには:

echo "$GATEWAY_URL"

15.次のコマンドを入力して、アプリケーションの外部アドレスを表示します。

echo http://$GATEWAY_URL/productpage

16.前の手順で取得したアドレスをコピーして、Webブラウザに貼り付けます。 Bookinfo Webサイトが正常に読み込まれます:

Istio用のKubernetesクラスターをセットアップする

Istioには、Grafanaダッシュボード、Jaegerトランザクショントレースソフトウェア、Prometheusメトリックスクレーパー、Kiali管理コンソールなど、人気のあるIstioサービス用のアドオンが多数付属しています。

1. samples/addonsを適用して、これらのアドオンをインストールします フォルダ:

kubectl apply -f samples/addons

2.次に、アドオンごとにKubernetesIngressリソースを作成します。これを行うには、以下を yamlに貼り付けます。 ファイル。

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: istio-system
  namespace: istio-system
  annotations:
    kubernetes.io/ingress.class: istio
spec:
  rules:
  - host: my-istio-dashboard.io
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          serviceName: grafana
          servicePort: 3000
  - host: my-istio-tracing.io
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          serviceName: tracing
          servicePort: 9411
  - host: my-istio-logs-database.io
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          serviceName: prometheus
          servicePort: 9090
  - host: my-kiali.io
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          serviceName: kiali
          servicePort: 20001

3.ファイルを保存し、kubectlを使用して構成を適用します:

kubectl apply -f [file-name]

これでアドオンが構成され、使用できるようになりました。


Linux
  1. Zshの使用を開始する

  2. lsの使用を開始する

  3. LinuxでPostgreSQLを使い始める

  1. GnuCashの使用を開始する

  2. 相互運用性のためのSambaの使用開始

  3. LinuxでSSHを使い始める

  1. Etcher.ioを使い始める

  2. 正規表現を使い始める

  3. Tmuxを使い始める