ポート名が命名規則に準拠していません

このメッセージは、ポートがIstioサービスポート命名規則に従っていない場合、またはポートに名前が付けられていない場合に発生します。

このメッセージは、

Info [IST0118] (Service httpbin.default) Port name foo-http (port: 80, targetPort: 80) doesn't follow the naming convention of Istio port.

クラスターに次のサービスがある場合に表示されます。

apiVersion: v1
kind: Service
metadata:
  name: httpbin
  labels:
    app: httpbin
spec:
  ports:
  - name: foo-http
    port: 8000
    targetPort: 80
  selector:
    app: httpbin

この例では、ポート名`foo-http`は構文`name: <protocol>[-<suffix>]`に従っていません。

解決方法

  • サービスポートが提供しているプロトコルがわかっている場合は、ポート名を`<protocol>[-<suffix>]`形式で変更してください。
  • サービスポートが提供しているプロトコルがわからない場合は、Prometheusからメトリクスをクエリする必要があります。
    • クエリ`istio_requests_total{reporter="destination",destination_service_name="SERVICE_NAME",response_code="200"}[TIME_RANGE]`を実行します。Telemetryメトリクスのオーバーライドを使用している場合は、クエリ`istio_requests_total{reporter="destination",destination_service_name="SERVICE_NAME",response_code="200",destination_port="TARGET_PORT"}[TIME_RANGE]`を実行することもできます。
    • 出力が存在する場合、レコードから`request_protocol`を見つけることができます。たとえば、`request_protocol`が「http」の場合、ポート名を「http-foo」に変更します。
    • 出力が存在しない場合は、ポートをそのままにしておくことができます。