コンテンツにスキップ

Kubernetes クラスターで ExternalName を使用した DataKit サービスのマッピング


概要

Kubernetes クラスター内で DataKit を DaemonSet としてデプロイした後、特定のアプリケーションが以前は istio-system 名前空間の Zipkin サービス(ポート 9411)にトレースデータをプッシュしていたとします。つまり、アクセス先は zipkin.istio-system.svc.cluster.local:9411 です。

このプッシュ先アドレスを変更せずに DataKit と連携させたい場合、どうすればよいでしょうか。このようなケースでは、Kubernetes の ExternalName サービスが役立ちます。以下の 2 つのステップで、アプリケーションと DataKit を接続できます。

  • まず、ClusterIP タイプのサービスを定義し、ポート 9529 を 9411 に変換します。
  • 次に、ExternalName サービスを使用して、ClusterIP サービスを DNS 名にマッピングします。

1. ClusterIP サービスの定義

apiVersion: v1
kind: Service
metadata:
  name: datakit-service-ext
  namespace: datakit
spec:
  selector:
    app: daemonset-datakit
  ports:
    - protocol: TCP
      port: 9411
      targetPort: 9529

このサービスをデプロイすると、クラスター内のコンテナは datakit-service-ext.datakit.svc.cluster.local:9411 を使用して DataKit の 9529 ポートにアクセスできるようになります。

2. ExternalName サービスの定義

apiVersion: v1
kind: Service
metadata:
  name: zipkin
  namespace: istio-system
spec:
  type: ExternalName
  externalName: datakit-service-ext.datakit.svc.cluster.local

このサービスをデプロイすると、クラスター内のコンテナは zipkin.istio-system.svc.cluster.local:9411 を使用して DataKit にデータをプッシュできるようになります。

1647908754(1).png

フィードバック

このページは役に立ちましたか?