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 にデータをプッシュできるようになります。
