下面方法是在我在开发 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
}