下面方法是在我在开发 prometheus 过程中,发现 prometheus config 的压缩方法,很好用。
// copy from pkg/prometheus/operator.go line.1501
func (*PrometheusJob) zip(b []byte) []byte {
var buf bytes.Buffer
if err := gzipConfig(&buf, b); err != nil {
return nil
}
return buf.Bytes()
}
func gzipConfig(buf *bytes.Buffer, conf []byte) error {
w := gzip.NewWriter(buf)
defer w.Close()
if _, err := w.Write(conf); err != nil {
return err
}
return nil
}