跳到主要内容

推送至 MinIO

创建TelemetryService Yaml 文件

#telemetry_service.yaml
apiVersion: shifu.edgenesis.io/v1alpha1
kind: TelemetryService
metadata:
name: push-file-mp4
namespace: devices
spec:
telemetryServiceEndpoint: http://telemetryservice.shifu-service.svc.cluster.local
serviceSettings:
MinIOSetting:
# MinIO服务使用的Secret,或者你可以指定AccessKey和SecretKey
Secret: minio-secret
# deviceShifu发送给TelemetryService的请求的超时时间
RequestTimeoutMS: 2500
# 你要上传到的Bucket
Bucket: test-bucket
# 上传的文件后缀名
FileExtension: mp4
# MinIO服务的地址
ServerAddress: minio.data.svc.cluster.local:9000

创建Secret

usernamepassword域中填写在MinIO GUI中创建的AccessId和AccessKey,或者直接填写安装MinIO时指定的用户名和密码。

kubectl create secret generic minio-secret --from-literal=username=your_username --from-literal=password=your_password -n devices
备注

如果你有多个遥测服务,你可以把它们写在一个文件里,用---进行分割。

编辑Configmap Yaml文件

# configmap.yaml
data:
telemetries: |
telemetrySettings:
# 每次遥测服务的间隔时间
telemetryUpdateIntervalInMilliseconds: 10000
# shifuDevice从edgeDevice获得文件内容的请求的超时时间
telemetryTimeoutInMilliseconds: 2500
telemetries:
push-file:
properties:
# 访问你的edgeDevice的这个方法,获得要发送给TelemetryService的数据
instruction: get_file_mp4
pushSettings:
# 将其修改为你刚创建TelemetryService的名字
telemetryCollectionService: push-file-mp4

再次部署deviceShifu

然后你需要再次部署 deviceShifu ,这样TelemetryService就会将采集到的文件内容存到MinIO中。 文件名会按{device-name}/{time(RFC3339)}.{file-extension}的格式存入对应的Bucket内。

例子

下面是一个例子,帮助你更好地了解如何使用它。如果你想测试可以在本地运行mockdevice.go然后修改edgedevice.yaml中的address,改为自己本地的IP即可。

https://github.com/Edgenesis/shifu/tree/main/examples/minioTelemetryService/deployment