0

自動 Envoy インジェクション チュートリアルを使用した Traffic Director のセットアップ を使用して、GCP Traffic Director にフックされたシンプルな GKE クラスタをセットアップしました。

次のステップは、内部のみの Traffic Director バックエンド サービスに外部トラフィックをマップする方法です。

基本的に、私の目標は、外部トラフィックを受け取り、それを Traffic Director サービス メッシュにルーティングして、異なるネットワーク エンドポイント グループ間でトラフィックを分割する IP アドレスを持つ外部ロード バランサーを用意することです。

私は次のことを試しました:

  1. Network Services -> Load Balancing --> で外部ロード バランサーを手動で作成します。ただし、バックエンドのリストには Traffic Director バックエンド サービスが含まれていないため、外部 IP を持つものを作成して内部サービス メッシュにリダイレクトすることはできません。

バックエンド サービスがありません

  1. NGINXイングレス コントローラー チャートをインストールし、それを介し.yamlて k8s クラスター サービスにマップするイングレス コントローラーをインストールします -->これにより外部ロード バランサーが作成されますが、Traffic Director を介するのではなく、サービスに直接アクセスするだけです。

イングレス:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: my-nginx-ingress
  annotations:
    nginx.ingress.kubernetes.io/proxy-connect-timeout: "60"
    nginx.ingress.kubernetes.io/proxy-send-timeout: "60"
    nginx.ingress.kubernetes.io/proxy-read-timeout: "60"
    nginx.ingress.kubernetes.io/send-timeout: "60"
    nginx.ingress.kubernetes.io/proxy-body-size: 1M
    nginx.ingress.kubernetes.io/use-regex: "true"
spec:
  rules:
    - host: my-host-name.hostname.com
      http:
        paths:
          - path: "/"
            backend:
              serviceName: service-test
              servicePort: 80

サービス:

apiVersion: v1
kind: Service
metadata:
  name: service-test
  annotations:
    cloud.google.com/neg: '{"exposed_ports":{"80":{"name": "service-test-neg"}}}'
spec:
  ports:
  - port: 80
    name: service-test
    protocol: TCP
    targetPort: 8000
  selector:
    run: app1
  type: ClusterIP

展開:

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    run: app1
  name: app1
spec:
  replicas: 1
  selector:
    matchLabels:
      run: app1
  template:
    metadata:
      labels:
        run: app1
    spec:
      containers:
      - image: gcr.io/kubernetes-e2e-test-images/serve-hostname-amd64:1.1
        name: app1
        command:
        - /bin/sh
        - -c
        - /serve_hostname -http=true -udp=false -port=8000
        ports:
        - protocol: TCP
          containerPort: 8000

上記のデプロイとサービスは、チュートリアルから直接取得したものです。

メッシュのエッジでセカンドレベル ゲートウェイを使用してイングレス トラフィックを処理するための公式ドキュメントに概念があるようですが、それは概念的なものであり、実際にそれを行う方法を提供していません。

GKE への高度なトラフィック構成のために、外部ロードバランサを使用して外部トラフィックを GCP Traffic Director マネージド サービス メッシュにマッピングするにはどうすればよいですか?

4

1 に答える 1

2

Traffic Director は、ルーティングのためにポイントするエンドポイントではありません。これは、サービス メッシュの「コントロール プレーン」です。

したがって、GCP からルーティング ルールを構成すると、Traffic Director によってサイドカーが期待どおりに構成されます。ただし、最終的には、ロード バランサーは、Traffic Director ではなく、インスタンス グループまたはネットワーク エンドポイント グループを指す必要があります。

編集

Traffic Director は構成する側ではなく、構成する側です。Envoy サイドカーを構成します。これらは L7 プロキシであるため、URL マッピングはプロキシで行われます。

エンドポイント グループは、ポッドの IP アドレスのグループになります。クラスターのポッド範囲がサブネットワークに追加されたため。IP エイリアスとして、VPC はこの範囲から任意の IP アドレスを取得してグループ化し、GCP で HTTP ロードバランサのバックエンドを作成できます。

基本的に、Traffic Director は Istio ですが、コントロール プレーンは GCP に分離されています。

于 2021-03-05T10:48:09.773 に答える