mirror of
https://github.com/prometheus-operator/prometheus-operator.git
synced 2025-04-20 19:29:10 +00:00
pkg/prometheus: Use SHA field to create Thanos container in statefulset
This commit is contained in:
parent
7803cc8b7c
commit
3ad93097aa
2 changed files with 83 additions and 48 deletions
pkg/prometheus
|
@ -583,9 +583,16 @@ func makeStatefulSetSpec(p monitoringv1.Prometheus, c *Config, ruleConfigMapName
|
|||
thanosBaseImage = *p.Spec.Thanos.BaseImage
|
||||
}
|
||||
|
||||
thanosTag := *p.Spec.Thanos.Version
|
||||
// Version is used by default.
|
||||
// If the tag is specified, we use the tag to identify the container image.
|
||||
// If the sha is specified, we use the sha to identify the container image,
|
||||
// as it has even stronger immutable guarantees to identify the image.
|
||||
thanosImage := fmt.Sprintf("%s:%s", thanosBaseImage, *p.Spec.Thanos.Version)
|
||||
if p.Spec.Thanos.Tag != nil {
|
||||
thanosTag = *p.Spec.Thanos.Tag
|
||||
thanosImage = fmt.Sprintf("%s:%s", thanosBaseImage, *p.Spec.Thanos.Tag)
|
||||
}
|
||||
if p.Spec.Thanos.SHA != nil {
|
||||
thanosImage = fmt.Sprintf("%s@sha256:%s", thanosBaseImage, *p.Spec.Thanos.SHA)
|
||||
}
|
||||
|
||||
thanosArgs := []string{
|
||||
|
@ -689,7 +696,7 @@ func makeStatefulSetSpec(p monitoringv1.Prometheus, c *Config, ruleConfigMapName
|
|||
|
||||
c := v1.Container{
|
||||
Name: "thanos-sidecar",
|
||||
Image: thanosBaseImage + ":" + thanosTag,
|
||||
Image: thanosImage,
|
||||
Args: thanosArgs,
|
||||
Ports: []v1.ContainerPort{
|
||||
{
|
||||
|
|
|
@ -362,59 +362,87 @@ func TestListenLocal(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestTagAndShaAndVersion(t *testing.T) {
|
||||
sset, err := makeStatefulSet(monitoringv1.Prometheus{
|
||||
Spec: monitoringv1.PrometheusSpec{
|
||||
Tag: "my-unrelated-tag",
|
||||
Version: "v2.3.2",
|
||||
},
|
||||
}, appsv1.OrderedReadyPodManagement, defaultTestConfig, nil, "")
|
||||
if err != nil {
|
||||
t.Fatalf("Unexpected error while making StatefulSet: %v", err)
|
||||
}
|
||||
{
|
||||
sset, err := makeStatefulSet(monitoringv1.Prometheus{
|
||||
Spec: monitoringv1.PrometheusSpec{
|
||||
Tag: "my-unrelated-tag",
|
||||
Version: "v2.3.2",
|
||||
},
|
||||
}, appsv1.OrderedReadyPodManagement, defaultTestConfig, nil, "")
|
||||
if err != nil {
|
||||
t.Fatalf("Unexpected error while making StatefulSet: %v", err)
|
||||
}
|
||||
|
||||
image := sset.Spec.Template.Spec.Containers[0].Image
|
||||
expected := "quay.io/prometheus/prometheus:my-unrelated-tag"
|
||||
if image != expected {
|
||||
t.Fatalf("Unexpected container image.\n\nExpected: %s\n\nGot: %s", expected, image)
|
||||
image := sset.Spec.Template.Spec.Containers[0].Image
|
||||
expected := "quay.io/prometheus/prometheus:my-unrelated-tag"
|
||||
if image != expected {
|
||||
t.Fatalf("Unexpected container image.\n\nExpected: %s\n\nGot: %s", expected, image)
|
||||
}
|
||||
}
|
||||
{
|
||||
sset, err := makeStatefulSet(monitoringv1.Prometheus{
|
||||
Spec: monitoringv1.PrometheusSpec{
|
||||
SHA: "7384a79f4b4991bf8269e7452390249b7c70bcdd10509c8c1c6c6e30e32fb324",
|
||||
Tag: "my-unrelated-tag",
|
||||
Version: "v2.3.2",
|
||||
},
|
||||
}, appsv1.OrderedReadyPodManagement, defaultTestConfig, nil, "")
|
||||
if err != nil {
|
||||
t.Fatalf("Unexpected error while making StatefulSet: %v", err)
|
||||
}
|
||||
|
||||
sset, err = makeStatefulSet(monitoringv1.Prometheus{
|
||||
Spec: monitoringv1.PrometheusSpec{
|
||||
SHA: "7384a79f4b4991bf8269e7452390249b7c70bcdd10509c8c1c6c6e30e32fb324",
|
||||
Tag: "my-unrelated-tag",
|
||||
Version: "v2.3.2",
|
||||
},
|
||||
}, appsv1.OrderedReadyPodManagement, defaultTestConfig, nil, "")
|
||||
if err != nil {
|
||||
t.Fatalf("Unexpected error while making StatefulSet: %v", err)
|
||||
}
|
||||
|
||||
image = sset.Spec.Template.Spec.Containers[0].Image
|
||||
expected = "quay.io/prometheus/prometheus@sha256:7384a79f4b4991bf8269e7452390249b7c70bcdd10509c8c1c6c6e30e32fb324"
|
||||
if image != expected {
|
||||
t.Fatalf("Unexpected container image.\n\nExpected: %s\n\nGot: %s", expected, image)
|
||||
image := sset.Spec.Template.Spec.Containers[0].Image
|
||||
expected := "quay.io/prometheus/prometheus@sha256:7384a79f4b4991bf8269e7452390249b7c70bcdd10509c8c1c6c6e30e32fb324"
|
||||
if image != expected {
|
||||
t.Fatalf("Unexpected container image.\n\nExpected: %s\n\nGot: %s", expected, image)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestThanosTagAndVersion(t *testing.T) {
|
||||
thanosTag := "my-unrelated-tag"
|
||||
thanosVersion := "v0.1.0-rc.2"
|
||||
sset, err := makeStatefulSet(monitoringv1.Prometheus{
|
||||
Spec: monitoringv1.PrometheusSpec{
|
||||
Thanos: &monitoringv1.ThanosSpec{
|
||||
Version: &thanosVersion,
|
||||
Tag: &thanosTag,
|
||||
func TestThanosTagAndShaAndVersion(t *testing.T) {
|
||||
{
|
||||
thanosTag := "my-unrelated-tag"
|
||||
thanosVersion := "v0.1.0-rc.2"
|
||||
sset, err := makeStatefulSet(monitoringv1.Prometheus{
|
||||
Spec: monitoringv1.PrometheusSpec{
|
||||
Thanos: &monitoringv1.ThanosSpec{
|
||||
Version: &thanosVersion,
|
||||
Tag: &thanosTag,
|
||||
},
|
||||
},
|
||||
},
|
||||
}, appsv1.OrderedReadyPodManagement, defaultTestConfig, nil, "")
|
||||
if err != nil {
|
||||
t.Fatalf("Unexpected error while making StatefulSet: %v", err)
|
||||
}
|
||||
}, appsv1.OrderedReadyPodManagement, defaultTestConfig, nil, "")
|
||||
if err != nil {
|
||||
t.Fatalf("Unexpected error while making StatefulSet: %v", err)
|
||||
}
|
||||
|
||||
image := sset.Spec.Template.Spec.Containers[2].Image
|
||||
expected := "improbable/thanos:my-unrelated-tag"
|
||||
if image != expected {
|
||||
t.Fatalf("Unexpected container image.\n\nExpected: %s\n\nGot: %s", expected, image)
|
||||
image := sset.Spec.Template.Spec.Containers[2].Image
|
||||
expected := "improbable/thanos:my-unrelated-tag"
|
||||
if image != expected {
|
||||
t.Fatalf("Unexpected container image.\n\nExpected: %s\n\nGot: %s", expected, image)
|
||||
}
|
||||
}
|
||||
{
|
||||
thanosSHA := "7384a79f4b4991bf8269e7452390249b7c70bcdd10509c8c1c6c6e30e32fb324"
|
||||
thanosTag := "my-unrelated-tag"
|
||||
thanosVersion := "v0.1.0-rc.2"
|
||||
sset, err := makeStatefulSet(monitoringv1.Prometheus{
|
||||
Spec: monitoringv1.PrometheusSpec{
|
||||
Thanos: &monitoringv1.ThanosSpec{
|
||||
SHA: &thanosSHA,
|
||||
Version: &thanosVersion,
|
||||
Tag: &thanosTag,
|
||||
},
|
||||
},
|
||||
}, appsv1.OrderedReadyPodManagement, defaultTestConfig, nil, "")
|
||||
if err != nil {
|
||||
t.Fatalf("Unexpected error while making StatefulSet: %v", err)
|
||||
}
|
||||
|
||||
image := sset.Spec.Template.Spec.Containers[2].Image
|
||||
expected := "improbable/thanos@sha256:7384a79f4b4991bf8269e7452390249b7c70bcdd10509c8c1c6c6e30e32fb324"
|
||||
if image != expected {
|
||||
t.Fatalf("Unexpected container image.\n\nExpected: %s\n\nGot: %s", expected, image)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue