setting annotations
parent
bcbf0f9230
commit
c690d874c3
|
@ -31,7 +31,7 @@ func (p *Provider) checkUnversionedDeployment(policy types.PolicyType, repo *typ
|
|||
// Remove version if any
|
||||
// containerImageName := versionreg.ReplaceAllString(c.Image, "")
|
||||
|
||||
conatinerImageRef, err := image.Parse(c.Image)
|
||||
containerImageRef, err := image.Parse(c.Image)
|
||||
if err != nil {
|
||||
log.WithFields(log.Fields{
|
||||
"error": err,
|
||||
|
@ -43,41 +43,47 @@ func (p *Provider) checkUnversionedDeployment(policy types.PolicyType, repo *typ
|
|||
log.WithFields(log.Fields{
|
||||
"name": deployment.Name,
|
||||
"namespace": deployment.Namespace,
|
||||
"parsed_image_name": conatinerImageRef.Remote(),
|
||||
"parsed_image_name": containerImageRef.Remote(),
|
||||
"target_image_name": repo.Name,
|
||||
"target_tag": repo.Tag,
|
||||
"policy": policy,
|
||||
"image": c.Image,
|
||||
}).Info("provider.kubernetes: checking image")
|
||||
|
||||
if conatinerImageRef.Repository() != eventRepoRef.Repository() {
|
||||
if containerImageRef.Repository() != eventRepoRef.Repository() {
|
||||
log.WithFields(log.Fields{
|
||||
"parsed_image_name": conatinerImageRef.Remote(),
|
||||
"parsed_image_name": containerImageRef.Remote(),
|
||||
"target_image_name": repo.Name,
|
||||
}).Info("provider.kubernetes: images do not match, ignoring")
|
||||
continue
|
||||
}
|
||||
|
||||
// updating image
|
||||
if conatinerImageRef.Registry() == image.DefaultRegistryHostname {
|
||||
c.Image = fmt.Sprintf("%s:%s", conatinerImageRef.ShortName(), repo.Tag)
|
||||
if containerImageRef.Registry() == image.DefaultRegistryHostname {
|
||||
c.Image = fmt.Sprintf("%s:%s", containerImageRef.ShortName(), repo.Tag)
|
||||
} else {
|
||||
c.Image = fmt.Sprintf("%s:%s", conatinerImageRef.Repository(), repo.Tag)
|
||||
c.Image = fmt.Sprintf("%s:%s", containerImageRef.Repository(), repo.Tag)
|
||||
}
|
||||
|
||||
deployment.Spec.Template.Spec.Containers[idx] = c
|
||||
// marking this deployment for update
|
||||
shouldUpdateDeployment = true
|
||||
|
||||
// updating annotations
|
||||
annotations := deployment.GetAnnotations()
|
||||
// updating digest if available
|
||||
if repo.Digest != "" {
|
||||
annotations := deployment.GetAnnotations()
|
||||
annotations[types.KeelDigestAnnotation+"/"+conatinerImageRef.Remote()] = repo.Digest
|
||||
deployment.SetAnnotations(annotations)
|
||||
|
||||
annotations[types.KeelDigestAnnotation+"/"+containerImageRef.Remote()] = repo.Digest
|
||||
}
|
||||
|
||||
// adding image for updates
|
||||
annotations = addImageToPull(annotations, c.Image)
|
||||
|
||||
deployment.SetAnnotations(annotations)
|
||||
|
||||
log.WithFields(log.Fields{
|
||||
"parsed_image": conatinerImageRef.Remote(),
|
||||
"parsed_image": containerImageRef.Remote(),
|
||||
"raw_image_name": c.Image,
|
||||
"target_image": repo.Name,
|
||||
"target_image_tag": repo.Tag,
|
||||
|
|
|
@ -37,9 +37,10 @@ func TestProvider_checkUnversionedDeployment(t *testing.T) {
|
|||
deployment: v1beta1.Deployment{
|
||||
meta_v1.TypeMeta{},
|
||||
meta_v1.ObjectMeta{
|
||||
Name: "dep-1",
|
||||
Namespace: "xxxx",
|
||||
Labels: map[string]string{types.KeelPolicyLabel: "all"},
|
||||
Name: "dep-1",
|
||||
Namespace: "xxxx",
|
||||
Annotations: map[string]string{},
|
||||
Labels: map[string]string{types.KeelPolicyLabel: "all"},
|
||||
},
|
||||
v1beta1.DeploymentSpec{
|
||||
Template: v1.PodTemplateSpec{
|
||||
|
@ -58,9 +59,10 @@ func TestProvider_checkUnversionedDeployment(t *testing.T) {
|
|||
wantUpdated: v1beta1.Deployment{
|
||||
meta_v1.TypeMeta{},
|
||||
meta_v1.ObjectMeta{
|
||||
Name: "dep-1",
|
||||
Namespace: "xxxx",
|
||||
Labels: map[string]string{types.KeelPolicyLabel: "all"},
|
||||
Name: "dep-1",
|
||||
Namespace: "xxxx",
|
||||
Annotations: map[string]string{forceUpdateImageAnnotation: "gcr.io/v2-namespace/hello-world:latest"},
|
||||
Labels: map[string]string{types.KeelPolicyLabel: "all"},
|
||||
},
|
||||
v1beta1.DeploymentSpec{
|
||||
Template: v1.PodTemplateSpec{
|
||||
|
@ -86,9 +88,10 @@ func TestProvider_checkUnversionedDeployment(t *testing.T) {
|
|||
deployment: v1beta1.Deployment{
|
||||
meta_v1.TypeMeta{},
|
||||
meta_v1.ObjectMeta{
|
||||
Name: "dep-1",
|
||||
Namespace: "xxxx",
|
||||
Labels: map[string]string{types.KeelPolicyLabel: "all"},
|
||||
Name: "dep-1",
|
||||
Namespace: "xxxx",
|
||||
Annotations: map[string]string{},
|
||||
Labels: map[string]string{types.KeelPolicyLabel: "all"},
|
||||
},
|
||||
v1beta1.DeploymentSpec{
|
||||
Template: v1.PodTemplateSpec{
|
||||
|
@ -107,9 +110,10 @@ func TestProvider_checkUnversionedDeployment(t *testing.T) {
|
|||
wantUpdated: v1beta1.Deployment{
|
||||
meta_v1.TypeMeta{},
|
||||
meta_v1.ObjectMeta{
|
||||
Name: "dep-1",
|
||||
Namespace: "xxxx",
|
||||
Labels: map[string]string{types.KeelPolicyLabel: "all"},
|
||||
Name: "dep-1",
|
||||
Namespace: "xxxx",
|
||||
Annotations: map[string]string{},
|
||||
Labels: map[string]string{types.KeelPolicyLabel: "all"},
|
||||
},
|
||||
v1beta1.DeploymentSpec{
|
||||
Template: v1.PodTemplateSpec{
|
||||
|
@ -135,9 +139,10 @@ func TestProvider_checkUnversionedDeployment(t *testing.T) {
|
|||
deployment: v1beta1.Deployment{
|
||||
meta_v1.TypeMeta{},
|
||||
meta_v1.ObjectMeta{
|
||||
Name: "dep-1",
|
||||
Namespace: "xxxx",
|
||||
Labels: map[string]string{types.KeelPolicyLabel: "force"},
|
||||
Name: "dep-1",
|
||||
Namespace: "xxxx",
|
||||
Annotations: map[string]string{},
|
||||
Labels: map[string]string{types.KeelPolicyLabel: "force"},
|
||||
},
|
||||
v1beta1.DeploymentSpec{
|
||||
Template: v1.PodTemplateSpec{
|
||||
|
@ -156,9 +161,10 @@ func TestProvider_checkUnversionedDeployment(t *testing.T) {
|
|||
wantUpdated: v1beta1.Deployment{
|
||||
meta_v1.TypeMeta{},
|
||||
meta_v1.ObjectMeta{
|
||||
Name: "dep-1",
|
||||
Namespace: "xxxx",
|
||||
Labels: map[string]string{types.KeelPolicyLabel: "force"},
|
||||
Name: "dep-1",
|
||||
Namespace: "xxxx",
|
||||
Annotations: map[string]string{forceUpdateImageAnnotation: "karolisr/keel:0.2.0"},
|
||||
Labels: map[string]string{types.KeelPolicyLabel: "force"},
|
||||
},
|
||||
v1beta1.DeploymentSpec{
|
||||
Template: v1.PodTemplateSpec{
|
||||
|
|
|
@ -71,12 +71,14 @@ func (p *Provider) checkVersionedDeployment(newVersion *types.Version, policy ty
|
|||
// marking this deployment for update
|
||||
shouldUpdateDeployment = true
|
||||
// updating digest if available
|
||||
if repo.Digest != "" {
|
||||
annotations := deployment.GetAnnotations()
|
||||
annotations[types.KeelDigestAnnotation+"/"+conatinerImageRef.Remote()] = repo.Digest
|
||||
deployment.SetAnnotations(annotations)
|
||||
}
|
||||
annotations := deployment.GetAnnotations()
|
||||
|
||||
if repo.Digest != "" {
|
||||
annotations[types.KeelDigestAnnotation+"/"+conatinerImageRef.Remote()] = repo.Digest
|
||||
}
|
||||
annotations = addImageToPull(annotations, c.Image)
|
||||
|
||||
deployment.SetAnnotations(annotations)
|
||||
log.WithFields(log.Fields{
|
||||
"parsed_image": conatinerImageRef.Remote(),
|
||||
"raw_image_name": c.Image,
|
||||
|
@ -135,12 +137,14 @@ func (p *Provider) checkVersionedDeployment(newVersion *types.Version, policy ty
|
|||
deployment.Spec.Template.Spec.Containers[idx] = c
|
||||
// marking this deployment for update
|
||||
shouldUpdateDeployment = true
|
||||
|
||||
// updating annotations
|
||||
annotations := deployment.GetAnnotations()
|
||||
// updating digest if available
|
||||
if repo.Digest != "" {
|
||||
annotations := deployment.GetAnnotations()
|
||||
annotations[types.KeelDigestAnnotation+"/"+conatinerImageRef.Remote()] = repo.Digest
|
||||
deployment.SetAnnotations(annotations)
|
||||
}
|
||||
deployment.SetAnnotations(annotations)
|
||||
|
||||
log.WithFields(log.Fields{
|
||||
"parsed_image": conatinerImageRef.Remote(),
|
||||
|
|
|
@ -49,9 +49,10 @@ func TestProvider_checkVersionedDeployment(t *testing.T) {
|
|||
deployment: v1beta1.Deployment{
|
||||
meta_v1.TypeMeta{},
|
||||
meta_v1.ObjectMeta{
|
||||
Name: "dep-1",
|
||||
Namespace: "xxxx",
|
||||
Labels: map[string]string{types.KeelPolicyLabel: "all"},
|
||||
Name: "dep-1",
|
||||
Namespace: "xxxx",
|
||||
Annotations: map[string]string{},
|
||||
Labels: map[string]string{types.KeelPolicyLabel: "all"},
|
||||
},
|
||||
v1beta1.DeploymentSpec{
|
||||
Template: v1.PodTemplateSpec{
|
||||
|
@ -70,9 +71,10 @@ func TestProvider_checkVersionedDeployment(t *testing.T) {
|
|||
wantUpdated: v1beta1.Deployment{
|
||||
meta_v1.TypeMeta{},
|
||||
meta_v1.ObjectMeta{
|
||||
Name: "dep-1",
|
||||
Namespace: "xxxx",
|
||||
Labels: map[string]string{types.KeelPolicyLabel: "all"},
|
||||
Name: "dep-1",
|
||||
Namespace: "xxxx",
|
||||
Annotations: map[string]string{},
|
||||
Labels: map[string]string{types.KeelPolicyLabel: "all"},
|
||||
},
|
||||
v1beta1.DeploymentSpec{
|
||||
Template: v1.PodTemplateSpec{
|
||||
|
@ -99,9 +101,10 @@ func TestProvider_checkVersionedDeployment(t *testing.T) {
|
|||
deployment: v1beta1.Deployment{
|
||||
meta_v1.TypeMeta{},
|
||||
meta_v1.ObjectMeta{
|
||||
Name: "dep-1",
|
||||
Namespace: "xxxx",
|
||||
Labels: map[string]string{types.KeelPolicyLabel: "all"},
|
||||
Name: "dep-1",
|
||||
Namespace: "xxxx",
|
||||
Annotations: map[string]string{},
|
||||
Labels: map[string]string{types.KeelPolicyLabel: "all"},
|
||||
},
|
||||
v1beta1.DeploymentSpec{
|
||||
Template: v1.PodTemplateSpec{
|
||||
|
@ -120,9 +123,10 @@ func TestProvider_checkVersionedDeployment(t *testing.T) {
|
|||
wantUpdated: v1beta1.Deployment{
|
||||
meta_v1.TypeMeta{},
|
||||
meta_v1.ObjectMeta{
|
||||
Name: "dep-1",
|
||||
Namespace: "xxxx",
|
||||
Labels: map[string]string{types.KeelPolicyLabel: "all"},
|
||||
Name: "dep-1",
|
||||
Namespace: "xxxx",
|
||||
Annotations: map[string]string{},
|
||||
Labels: map[string]string{types.KeelPolicyLabel: "all"},
|
||||
},
|
||||
v1beta1.DeploymentSpec{
|
||||
Template: v1.PodTemplateSpec{
|
||||
|
@ -149,9 +153,10 @@ func TestProvider_checkVersionedDeployment(t *testing.T) {
|
|||
deployment: v1beta1.Deployment{
|
||||
meta_v1.TypeMeta{},
|
||||
meta_v1.ObjectMeta{
|
||||
Name: "dep-1",
|
||||
Namespace: "xxxx",
|
||||
Labels: map[string]string{types.KeelPolicyLabel: "all"},
|
||||
Name: "dep-1",
|
||||
Namespace: "xxxx",
|
||||
Annotations: map[string]string{},
|
||||
Labels: map[string]string{types.KeelPolicyLabel: "all"},
|
||||
},
|
||||
v1beta1.DeploymentSpec{
|
||||
Template: v1.PodTemplateSpec{
|
||||
|
@ -173,9 +178,10 @@ func TestProvider_checkVersionedDeployment(t *testing.T) {
|
|||
wantUpdated: v1beta1.Deployment{
|
||||
meta_v1.TypeMeta{},
|
||||
meta_v1.ObjectMeta{
|
||||
Name: "dep-1",
|
||||
Namespace: "xxxx",
|
||||
Labels: map[string]string{types.KeelPolicyLabel: "all"},
|
||||
Name: "dep-1",
|
||||
Namespace: "xxxx",
|
||||
Annotations: map[string]string{},
|
||||
Labels: map[string]string{types.KeelPolicyLabel: "all"},
|
||||
},
|
||||
v1beta1.DeploymentSpec{
|
||||
Template: v1.PodTemplateSpec{
|
||||
|
@ -205,9 +211,10 @@ func TestProvider_checkVersionedDeployment(t *testing.T) {
|
|||
deployment: v1beta1.Deployment{
|
||||
meta_v1.TypeMeta{},
|
||||
meta_v1.ObjectMeta{
|
||||
Name: "dep-1",
|
||||
Namespace: "xxxx",
|
||||
Labels: map[string]string{types.KeelPolicyLabel: "force"},
|
||||
Name: "dep-1",
|
||||
Namespace: "xxxx",
|
||||
Annotations: map[string]string{},
|
||||
Labels: map[string]string{types.KeelPolicyLabel: "force"},
|
||||
},
|
||||
v1beta1.DeploymentSpec{
|
||||
Template: v1.PodTemplateSpec{
|
||||
|
@ -229,9 +236,10 @@ func TestProvider_checkVersionedDeployment(t *testing.T) {
|
|||
wantUpdated: v1beta1.Deployment{
|
||||
meta_v1.TypeMeta{},
|
||||
meta_v1.ObjectMeta{
|
||||
Name: "dep-1",
|
||||
Namespace: "xxxx",
|
||||
Labels: map[string]string{types.KeelPolicyLabel: "force"},
|
||||
Name: "dep-1",
|
||||
Namespace: "xxxx",
|
||||
Annotations: map[string]string{forceUpdateImageAnnotation: "gcr.io/v2-namespace/hello-world:1.1.2"},
|
||||
Labels: map[string]string{types.KeelPolicyLabel: "force"},
|
||||
},
|
||||
v1beta1.DeploymentSpec{
|
||||
Template: v1.PodTemplateSpec{
|
||||
|
|
|
@ -25,6 +25,11 @@ const KeelPollDefaultSchedule = "@every 1m"
|
|||
// KeelDigestAnnotation - digest annotation
|
||||
const KeelDigestAnnotation = "keel.sh/digest"
|
||||
|
||||
// KeelUpdateStrategyAnnotation - update strategy annotation is used to
|
||||
// to inform provider how to handle update, ie: keel.sh/updateStrategy=pullImage
|
||||
// will
|
||||
const KeelUpdateStrategyAnnotation = "keel.sh/updateStrategy"
|
||||
|
||||
type Repository struct {
|
||||
Host string `json:"host"`
|
||||
Name string `json:"name"`
|
||||
|
|
Loading…
Reference in New Issue