Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add resourceVersion tracking for watches & better recovery #453

Merged
merged 2 commits into from
Jan 1, 2024

Conversation

jeff-mccoy
Copy link
Member

@jeff-mccoy jeff-mccoy commented Dec 30, 2023

Description

This PR updates kubernetes-fluent-client to 2.x, which contains a number of improvements to how Watches are managed.

This PR also leverages a new special PeprStore for watches to track the last-processed resourceVersion of all watchers. This helps to ensure WatchActions are typically run only once per event in the event of pod failure or connection failure.

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Other (security config, docs update, etc)

Checklist before merging

Copy link

netlify bot commented Dec 30, 2023

Deploy Preview for pepr-docs canceled.

Name Link
🔨 Latest commit ab32869
🔍 Latest deploy log https://app.netlify.com/sites/pepr-docs/deploys/6591ddcd9dc1eb0008e985b2

Copy link

Updated dependencies detected. Learn more about Socket for GitHub ↗︎

Packages Version New capabilities Transitives Size Publisher
@types/node 18.19.3...18.19.4 None +0/-0 3.82 MB types
kubernetes-fluent-client 1.10.0...2.0.1 None +7/-7 40.4 MB pepr-dev

andrewg-xyz
andrewg-xyz previously approved these changes Dec 30, 2023
Copy link
Collaborator

@cmwylie19 cmwylie19 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The code lgtm. To be thorough, started a soak test on this at ~8 am that produced an error on the previous versioned due to a timeout.

Copy link
Collaborator

@cmwylie19 cmwylie19 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe I am still hitting the timeout. details to come..

Copy link
Collaborator

@cmwylie19 cmwylie19 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe I'm still getting a timeout that only happened after about 2 hours and 7 seconds. I am testing on a k3d cluster using the built manifests:

source

const deploymentStrategy: V1DeploymentStrategy = {
  rollingUpdate: {
    maxSurge: "50%",
    maxUnavailable: "50%",
  },
  type: "RollingUpdate",
};

OnSchedule({
  name: "deploy-interrupter",
  every: 1,
  unit: "minutes",
  run: async () => {
    try {
      // Keep changing it to try and capture a watcher silent death
      await K8s(kind.Deployment).Apply(
        {
          metadata: {
            name: "blue",
            namespace: "default",
          },
          spec: {
            replicas: 3,
          },
        },
        {
          force: true,
        },
      );
    } catch (error) {
      Log.error(error, "Failed to change deployment.");
    }
  },
});

When(a.Deployment)
  .IsCreatedOrUpdated()
  .WithName("blue")
  .Watch(async deploy => {
    Log.info(`Deployment ${deploy.metadata?.name} was changed.`);

    // Make it feel like an operator
    if (
      deploy.spec?.replicas !== 2 ||
      deploy.spec?.strategy?.rollingUpdate?.maxSurge !== "50%" ||
      deploy.spec?.strategy?.rollingUpdate?.maxUnavailable !== "50%" ||
      deploy.spec?.strategy?.type !== "RollingUpdate"
    ) {
      try {
        // Reconcile the deployment back to desired state
        await K8s(kind.Deployment).Apply(
          {
            metadata: {
              name: "blue",
              namespace: "default",
            },
            spec: {
              replicas: 2,
              strategy: deploymentStrategy,
            },
          },
          {
            force: true,
          },
        );
      } catch (error) {
        Log.error(error, "Failed to reconcile deployment.");
      }
    }
  });

Watcher Logs (Go from Deployment changed to eventually not firing the callback)

{"level":30,"time":1704121201128,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121202687,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":20,"time":1704121202834,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","apiVersion":"pepr.dev/v1","kind":"PeprStore","metadata":{"resourceVersion":"11832"},"msg":"Pepr Store update"}
{"level":30,"time":1704121203104,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121204610,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121204611,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"0 ms"}
{"level":20,"time":1704121207836,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Pepr store data received"}
{"level":30,"time":1704121208036,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121208048,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121208054,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121208061,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121208078,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121208078,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":20,"time":1704121212549,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","add:/data/deployment-watcher-deploy-interrupter:{\"lastTimestamp\":\"2024-01-01T15:00:08.019Z\",\"name\":\"deploy-interrupter\"}":{"op":"add","path":"/data/deployment-watcher-deploy-interrupter","value":"{\"lastTimestamp\":\"2024-01-01T15:00:08.019Z\",\"name\":\"deploy-interrupter\"}"},"msg":"Sending updates to Pepr store"}
{"level":30,"time":1704121214608,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"0 ms"}
{"level":30,"time":1704121214609,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121216143,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121216163,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121216175,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121216199,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121216201,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121217789,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121218183,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121224603,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121224603,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"0 ms"}
{"level":30,"time":1704121231221,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121231232,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121231242,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121231251,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121231262,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121231269,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121232868,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121233251,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121234606,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121234607,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121244605,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121244607,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"0 ms"}
{"level":30,"time":1704121246296,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121246313,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121246324,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121246349,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121246356,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121247952,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121248820,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121254606,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"0 ms"}
{"level":30,"time":1704121254607,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"0 ms"}
{"level":30,"time":1704121261392,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121261409,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121261420,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121261429,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121261442,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121261448,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121263026,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":20,"time":1704121263577,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","apiVersion":"pepr.dev/v1","kind":"PeprStore","metadata":{"resourceVersion":"12154"},"msg":"Pepr Store update"}
{"level":30,"time":1704121263866,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121264607,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121264609,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"2 ms"}
{"level":30,"time":1704121268038,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121268050,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121268060,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121268069,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121268078,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":20,"time":1704121268578,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Pepr store data received"}
{"level":20,"time":1704121272585,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","add:/data/deployment-watcher-deploy-interrupter:{\"lastTimestamp\":\"2024-01-01T15:01:08.020Z\",\"name\":\"deploy-interrupter\"}":{"op":"add","path":"/data/deployment-watcher-deploy-interrupter","value":"{\"lastTimestamp\":\"2024-01-01T15:01:08.020Z\",\"name\":\"deploy-interrupter\"}"},"msg":"Sending updates to Pepr store"}
{"level":30,"time":1704121274611,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121274612,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"0 ms"}
{"level":30,"time":1704121276469,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121276485,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121276511,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121276543,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121276548,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121278927,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121278932,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121284601,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121284601,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"0 ms"}
{"level":30,"time":1704121291548,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121291562,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121291578,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121291600,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121291604,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121293190,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121293590,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121294611,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121294612,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121304610,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121304611,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121306634,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121306646,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121306656,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121306665,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121306671,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121306689,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121308269,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121308674,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121314608,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121314609,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":20,"time":1704121323695,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","apiVersion":"pepr.dev/v1","kind":"PeprStore","metadata":{"resourceVersion":"12369"},"msg":"Pepr Store update"}
{"level":30,"time":1704121324607,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121324609,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"2 ms"}
{"level":20,"time":1704121328696,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Pepr store data received"}
{"level":20,"time":1704121332629,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","add:/data/deployment-watcher-deploy-interrupter:{\"lastTimestamp\":\"2024-01-01T15:02:08.021Z\",\"name\":\"deploy-interrupter\"}":{"op":"add","path":"/data/deployment-watcher-deploy-interrupter","value":"{\"lastTimestamp\":\"2024-01-01T15:02:08.021Z\",\"name\":\"deploy-interrupter\"}"},"msg":"Sending updates to Pepr store"}
{"level":30,"time":1704121334610,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121334611,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"0 ms"}
{"level":30,"time":1704121344609,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"0 ms"}
{"level":30,"time":1704121344610,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"0 ms"}
{"level":30,"time":1704121354611,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121354612,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121364607,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121364607,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"0 ms"}
{"level":30,"time":1704121374611,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121374612,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":20,"time":1704121383957,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","apiVersion":"pepr.dev/v1","kind":"PeprStore","metadata":{"resourceVersion":"12574"},"msg":"Pepr Store update"}
{"level":30,"time":1704121384607,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121384608,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":20,"time":1704121388960,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Pepr store data received"}
{"level":20,"time":1704121392685,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","add:/data/deployment-watcher-deploy-interrupter:{\"lastTimestamp\":\"2024-01-01T15:03:08.022Z\",\"name\":\"deploy-interrupter\"}":{"op":"add","path":"/data/deployment-watcher-deploy-interrupter","value":"{\"lastTimestamp\":\"2024-01-01T15:03:08.022Z\",\"name\":\"deploy-interrupter\"}"},"msg":"Sending updates to Pepr store"}
{"level":30,"time":1704121394610,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121394611,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"0 ms"}
{"level":30,"time":1704121404613,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121404615,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121414614,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121414615,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121424611,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121424613,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121434609,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121434613,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121444606,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121444607,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":20,"time":1704121444619,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","apiVersion":"pepr.dev/v1","kind":"PeprStore","metadata":{"resourceVersion":"12657"},"msg":"Pepr Store update"}
{"level":20,"time":1704121449623,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Pepr store data received"}
{"level":20,"time":1704121452752,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","add:/data/deployment-watcher-deploy-interrupter:{\"lastTimestamp\":\"2024-01-01T15:04:08.024Z\",\"name\":\"deploy-interrupter\"}":{"op":"add","path":"/data/deployment-watcher-deploy-interrupter","value":"{\"lastTimestamp\":\"2024-01-01T15:04:08.024Z\",\"name\":\"deploy-interrupter\"}"},"msg":"Sending updates to Pepr store"}
{"level":30,"time":1704121454606,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121454607,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"0 ms"}
{"level":30,"time":1704121464605,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"0 ms"}
{"level":30,"time":1704121464606,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"0 ms"}
{"level":30,"time":1704121474613,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121474614,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"0 ms"}
{"level":30,"time":1704121484611,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121484612,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"0 ms"}
{"level":30,"time":1704121494617,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121494618,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":20,"time":1704121497065,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","apiVersion":"pepr.dev/v1","kind":"PeprStore","metadata":{"resourceVersion":"12738"},"msg":"Pepr Store update"}
{"level":20,"time":1704121502071,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Pepr store data received"}
{"level":30,"time":1704121504613,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"0 ms"}
{"level":30,"time":1704121504615,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":20,"time":1704121512809,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","add:/data/deployment-watcher-deploy-interrupter:{\"lastTimestamp\":\"2024-01-01T15:05:08.028Z\",\"name\":\"deploy-interrupter\"}":{"op":"add","path":"/data/deployment-watcher-deploy-interrupter","value":"{\"lastTimestamp\":\"2024-01-01T15:05:08.028Z\",\"name\":\"deploy-interrupter\"}"},"msg":"Sending updates to Pepr store"}
{"level":30,"time":1704121514610,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"

In the terminal I am running

while true; do
    kubectl scale deploy/blue --replicas=0
    sleep 15
    echo "deployment.apps/blue replicas: $(kubectl get deploy blue --template='{{.spec.replicas}}')"
    echo "\n"
done

@cmwylie19
Copy link
Collaborator

I believe I'm still getting a timeout that only happened after about 2 hours and 7 seconds. I am testing on a k3d cluster using the built manifests:

source

const deploymentStrategy: V1DeploymentStrategy = {
  rollingUpdate: {
    maxSurge: "50%",
    maxUnavailable: "50%",
  },
  type: "RollingUpdate",
};

OnSchedule({
  name: "deploy-interrupter",
  every: 1,
  unit: "minutes",
  run: async () => {
    try {
      // Keep changing it to try and capture a watcher silent death
      await K8s(kind.Deployment).Apply(
        {
          metadata: {
            name: "blue",
            namespace: "default",
          },
          spec: {
            replicas: 3,
          },
        },
        {
          force: true,
        },
      );
    } catch (error) {
      Log.error(error, "Failed to change deployment.");
    }
  },
});

When(a.Deployment)
  .IsCreatedOrUpdated()
  .WithName("blue")
  .Watch(async deploy => {
    Log.info(`Deployment ${deploy.metadata?.name} was changed.`);

    // Make it feel like an operator
    if (
      deploy.spec?.replicas !== 2 ||
      deploy.spec?.strategy?.rollingUpdate?.maxSurge !== "50%" ||
      deploy.spec?.strategy?.rollingUpdate?.maxUnavailable !== "50%" ||
      deploy.spec?.strategy?.type !== "RollingUpdate"
    ) {
      try {
        // Reconcile the deployment back to desired state
        await K8s(kind.Deployment).Apply(
          {
            metadata: {
              name: "blue",
              namespace: "default",
            },
            spec: {
              replicas: 2,
              strategy: deploymentStrategy,
            },
          },
          {
            force: true,
          },
        );
      } catch (error) {
        Log.error(error, "Failed to reconcile deployment.");
      }
    }
  });

Watcher Logs (Go from Deployment changed to eventually not firing the callback)

{"level":30,"time":1704121201128,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121202687,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":20,"time":1704121202834,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","apiVersion":"pepr.dev/v1","kind":"PeprStore","metadata":{"resourceVersion":"11832"},"msg":"Pepr Store update"}
{"level":30,"time":1704121203104,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121204610,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121204611,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"0 ms"}
{"level":20,"time":1704121207836,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Pepr store data received"}
{"level":30,"time":1704121208036,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121208048,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121208054,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121208061,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121208078,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121208078,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":20,"time":1704121212549,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","add:/data/deployment-watcher-deploy-interrupter:{\"lastTimestamp\":\"2024-01-01T15:00:08.019Z\",\"name\":\"deploy-interrupter\"}":{"op":"add","path":"/data/deployment-watcher-deploy-interrupter","value":"{\"lastTimestamp\":\"2024-01-01T15:00:08.019Z\",\"name\":\"deploy-interrupter\"}"},"msg":"Sending updates to Pepr store"}
{"level":30,"time":1704121214608,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"0 ms"}
{"level":30,"time":1704121214609,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121216143,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121216163,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121216175,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121216199,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121216201,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121217789,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121218183,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121224603,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121224603,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"0 ms"}
{"level":30,"time":1704121231221,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121231232,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121231242,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121231251,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121231262,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121231269,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121232868,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121233251,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121234606,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121234607,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121244605,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121244607,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"0 ms"}
{"level":30,"time":1704121246296,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121246313,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121246324,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121246349,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121246356,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121247952,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121248820,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121254606,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"0 ms"}
{"level":30,"time":1704121254607,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"0 ms"}
{"level":30,"time":1704121261392,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121261409,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121261420,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121261429,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121261442,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121261448,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121263026,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":20,"time":1704121263577,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","apiVersion":"pepr.dev/v1","kind":"PeprStore","metadata":{"resourceVersion":"12154"},"msg":"Pepr Store update"}
{"level":30,"time":1704121263866,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121264607,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121264609,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"2 ms"}
{"level":30,"time":1704121268038,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121268050,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121268060,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121268069,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121268078,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":20,"time":1704121268578,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Pepr store data received"}
{"level":20,"time":1704121272585,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","add:/data/deployment-watcher-deploy-interrupter:{\"lastTimestamp\":\"2024-01-01T15:01:08.020Z\",\"name\":\"deploy-interrupter\"}":{"op":"add","path":"/data/deployment-watcher-deploy-interrupter","value":"{\"lastTimestamp\":\"2024-01-01T15:01:08.020Z\",\"name\":\"deploy-interrupter\"}"},"msg":"Sending updates to Pepr store"}
{"level":30,"time":1704121274611,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121274612,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"0 ms"}
{"level":30,"time":1704121276469,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121276485,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121276511,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121276543,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121276548,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121278927,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121278932,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121284601,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121284601,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"0 ms"}
{"level":30,"time":1704121291548,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121291562,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121291578,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121291600,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121291604,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121293190,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121293590,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121294611,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121294612,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121304610,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121304611,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121306634,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121306646,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121306656,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121306665,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121306671,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121306689,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121308269,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121308674,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Deployment blue was changed."}
{"level":30,"time":1704121314608,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121314609,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":20,"time":1704121323695,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","apiVersion":"pepr.dev/v1","kind":"PeprStore","metadata":{"resourceVersion":"12369"},"msg":"Pepr Store update"}
{"level":30,"time":1704121324607,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121324609,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"2 ms"}
{"level":20,"time":1704121328696,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Pepr store data received"}
{"level":20,"time":1704121332629,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","add:/data/deployment-watcher-deploy-interrupter:{\"lastTimestamp\":\"2024-01-01T15:02:08.021Z\",\"name\":\"deploy-interrupter\"}":{"op":"add","path":"/data/deployment-watcher-deploy-interrupter","value":"{\"lastTimestamp\":\"2024-01-01T15:02:08.021Z\",\"name\":\"deploy-interrupter\"}"},"msg":"Sending updates to Pepr store"}
{"level":30,"time":1704121334610,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121334611,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"0 ms"}
{"level":30,"time":1704121344609,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"0 ms"}
{"level":30,"time":1704121344610,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"0 ms"}
{"level":30,"time":1704121354611,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121354612,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121364607,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121364607,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"0 ms"}
{"level":30,"time":1704121374611,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121374612,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":20,"time":1704121383957,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","apiVersion":"pepr.dev/v1","kind":"PeprStore","metadata":{"resourceVersion":"12574"},"msg":"Pepr Store update"}
{"level":30,"time":1704121384607,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121384608,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":20,"time":1704121388960,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Pepr store data received"}
{"level":20,"time":1704121392685,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","add:/data/deployment-watcher-deploy-interrupter:{\"lastTimestamp\":\"2024-01-01T15:03:08.022Z\",\"name\":\"deploy-interrupter\"}":{"op":"add","path":"/data/deployment-watcher-deploy-interrupter","value":"{\"lastTimestamp\":\"2024-01-01T15:03:08.022Z\",\"name\":\"deploy-interrupter\"}"},"msg":"Sending updates to Pepr store"}
{"level":30,"time":1704121394610,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121394611,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"0 ms"}
{"level":30,"time":1704121404613,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121404615,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121414614,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121414615,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121424611,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121424613,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121434609,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121434613,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121444606,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121444607,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":20,"time":1704121444619,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","apiVersion":"pepr.dev/v1","kind":"PeprStore","metadata":{"resourceVersion":"12657"},"msg":"Pepr Store update"}
{"level":20,"time":1704121449623,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Pepr store data received"}
{"level":20,"time":1704121452752,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","add:/data/deployment-watcher-deploy-interrupter:{\"lastTimestamp\":\"2024-01-01T15:04:08.024Z\",\"name\":\"deploy-interrupter\"}":{"op":"add","path":"/data/deployment-watcher-deploy-interrupter","value":"{\"lastTimestamp\":\"2024-01-01T15:04:08.024Z\",\"name\":\"deploy-interrupter\"}"},"msg":"Sending updates to Pepr store"}
{"level":30,"time":1704121454606,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121454607,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"0 ms"}
{"level":30,"time":1704121464605,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"0 ms"}
{"level":30,"time":1704121464606,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"0 ms"}
{"level":30,"time":1704121474613,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121474614,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"0 ms"}
{"level":30,"time":1704121484611,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121484612,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"0 ms"}
{"level":30,"time":1704121494617,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":30,"time":1704121494618,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":20,"time":1704121497065,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","apiVersion":"pepr.dev/v1","kind":"PeprStore","metadata":{"resourceVersion":"12738"},"msg":"Pepr Store update"}
{"level":20,"time":1704121502071,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","msg":"Pepr store data received"}
{"level":30,"time":1704121504613,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"0 ms"}
{"level":30,"time":1704121504615,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"}
{"level":20,"time":1704121512809,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","add:/data/deployment-watcher-deploy-interrupter:{\"lastTimestamp\":\"2024-01-01T15:05:08.028Z\",\"name\":\"deploy-interrupter\"}":{"op":"add","path":"/data/deployment-watcher-deploy-interrupter","value":"{\"lastTimestamp\":\"2024-01-01T15:05:08.028Z\",\"name\":\"deploy-interrupter\"}"},"msg":"Sending updates to Pepr store"}
{"level":30,"time":1704121514610,"pid":16,"hostname":"pepr-static-test-watcher-6cd957b5b-h765s","method":"GET","url":"/healthz","status":200,"duration":"1 ms"

In the terminal I am running

while true; do
    kubectl scale deploy/blue --replicas=0
    sleep 15
    echo "deployment.apps/blue replicas: $(kubectl get deploy blue --template='{{.spec.replicas}}')"
    echo "\n"
done

After further testing i realize the problem was on my end during the first test. This looks good to me.

Copy link
Collaborator

@cmwylie19 cmwylie19 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@jeff-mccoy jeff-mccoy merged commit d54f4fb into main Jan 1, 2024
15 checks passed
@jeff-mccoy jeff-mccoy deleted the watch-enhancements branch January 1, 2024 21:22
mjnagel referenced this pull request in defenseunicorns/uds-core Jan 8, 2024
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [pepr](https://togithub.com/defenseunicorns/pepr) | [`0.18.1` ->
`0.21.1`](https://renovatebot.com/diffs/npm/pepr/0.18.1/0.21.1) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/pepr/0.21.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/pepr/0.21.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/pepr/0.18.1/0.21.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/pepr/0.18.1/0.21.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [typescript](https://www.typescriptlang.org/)
([source](https://togithub.com/Microsoft/TypeScript)) | [`5.2.2` ->
`5.3.3`](https://renovatebot.com/diffs/npm/typescript/5.2.2/5.3.3) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/typescript/5.3.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/typescript/5.3.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/typescript/5.2.2/5.3.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/typescript/5.2.2/5.3.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>defenseunicorns/pepr (pepr)</summary>

###
[`v0.21.1`](https://togithub.com/defenseunicorns/pepr/releases/tag/v0.21.1)

[Compare
Source](https://togithub.com/defenseunicorns/pepr/compare/v0.21.0...v0.21.1)

#### What's Changed

- chore: bump the production-dependencies group with 1 update by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/defenseunicorns/pepr/pull/455](https://togithub.com/defenseunicorns/pepr/pull/455)

**Full Changelog**:
defenseunicorns/pepr@v0.21.0...v0.21.1

###
[`v0.21.0`](https://togithub.com/defenseunicorns/pepr/releases/tag/v0.21.0)

[Compare
Source](https://togithub.com/defenseunicorns/pepr/compare/v0.20.3...v0.21.0)

#### What's Changed

- feat: add resourceVersion tracking for watches & better watch recovery
by [@&#8203;jeff-mccoy](https://togithub.com/jeff-mccoy) in
[https://github.com/defenseunicorns/pepr/pull/453](https://togithub.com/defenseunicorns/pepr/pull/453)
- chore: bump the production-dependencies group with 2 updates by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/defenseunicorns/pepr/pull/452](https://togithub.com/defenseunicorns/pepr/pull/452)

**Full Changelog**:
defenseunicorns/pepr@v0.20.3...v0.21.0

###
[`v0.20.3`](https://togithub.com/defenseunicorns/pepr/releases/tag/v0.20.3)

[Compare
Source](https://togithub.com/defenseunicorns/pepr/compare/v0.20.2...v0.20.3)

#### What's Changed

- fix: bind debug logs to fluent-client watch log handler by
[@&#8203;jeff-mccoy](https://togithub.com/jeff-mccoy) in
[https://github.com/defenseunicorns/pepr/pull/450](https://togithub.com/defenseunicorns/pepr/pull/450)

**Full Changelog**:
defenseunicorns/pepr@v0.20.2...v0.20.3

###
[`v0.20.2`](https://togithub.com/defenseunicorns/pepr/releases/tag/v0.20.2)

[Compare
Source](https://togithub.com/defenseunicorns/pepr/compare/v0.20.1...v0.20.2)

#### What's Changed

- chore: bump actions/upload-artifact from 3.1.3 to 4.0.0 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/defenseunicorns/pepr/pull/442](https://togithub.com/defenseunicorns/pepr/pull/442)
- chore: bump the prom-client version by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/defenseunicorns/pepr/pull/443](https://togithub.com/defenseunicorns/pepr/pull/443)
- chore: bump actions/setup-node from 4.0.0 to 4.0.1 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/defenseunicorns/pepr/pull/446](https://togithub.com/defenseunicorns/pepr/pull/446)
- chore: bump the production-dependencies group with 1 update by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/defenseunicorns/pepr/pull/448](https://togithub.com/defenseunicorns/pepr/pull/448)
- chore: bump the development-dependencies group with 1 update by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/defenseunicorns/pepr/pull/447](https://togithub.com/defenseunicorns/pepr/pull/447)
- chore: update peer deps (not updated by dependabot) by
[@&#8203;jeff-mccoy](https://togithub.com/jeff-mccoy) in
[https://github.com/defenseunicorns/pepr/pull/449](https://togithub.com/defenseunicorns/pepr/pull/449)

**Full Changelog**:
defenseunicorns/pepr@v0.20.1...v0.20.2

###
[`v0.20.1`](https://togithub.com/defenseunicorns/pepr/releases/tag/v0.20.1)

[Compare
Source](https://togithub.com/defenseunicorns/pepr/compare/v0.19.0...v0.20.1)

#### What's Changed

- chore: spelling by [@&#8203;cmwylie19](https://togithub.com/cmwylie19)
in
[https://github.com/defenseunicorns/pepr/pull/441](https://togithub.com/defenseunicorns/pepr/pull/441)

**Full Changelog**:
defenseunicorns/pepr@v0.20.0...v0.20.1

###
[`v0.19.0`](https://togithub.com/defenseunicorns/pepr/releases/tag/v0.19.0)

[Compare
Source](https://togithub.com/defenseunicorns/pepr/compare/v0.18.1...v0.19.0)

#### Features

- feat: add pepr monitor command by
[@&#8203;jeff-mccoy](https://togithub.com/jeff-mccoy) in
[https://github.com/defenseunicorns/pepr/pull/411](https://togithub.com/defenseunicorns/pepr/pull/411)
- feat: updated containers function to work with mutate requests by
[@&#8203;schaeferka](https://togithub.com/schaeferka) in
[https://github.com/defenseunicorns/pepr/pull/418](https://togithub.com/defenseunicorns/pepr/pull/418)

```typescript
When(a.Pod)
  .IsCreated()
  .Validate(pod => {
    // returns all containers in pod
    const podsContainers = containers(pod);

    for (const container of podsContainers) {
  ... go on
```


![image](https://togithub.com/defenseunicorns/pepr/assets/1096507/8e6c9400-a238-40ea-a774-b151f27db863)

#### What's Changed

- chore: create a library of helper functions that make working with
pepr easier by [@&#8203;schaeferka](https://togithub.com/schaeferka) in
[https://github.com/defenseunicorns/pepr/pull/415](https://togithub.com/defenseunicorns/pepr/pull/415)
- fix: watch does not respect ns testing by
[@&#8203;cmwylie19](https://togithub.com/cmwylie19) in
[https://github.com/defenseunicorns/pepr/pull/398](https://togithub.com/defenseunicorns/pepr/pull/398)
- chore: fix PeprStore rendering where multiple capabilities are in play
by [@&#8203;cmwylie19](https://togithub.com/cmwylie19) in
[https://github.com/defenseunicorns/pepr/pull/422](https://togithub.com/defenseunicorns/pepr/pull/422)
- chore: update logo image in header by
[@&#8203;schaeferka](https://togithub.com/schaeferka) in
[https://github.com/defenseunicorns/pepr/pull/420](https://togithub.com/defenseunicorns/pepr/pull/420)

**Full Changelog**:
defenseunicorns/pepr@v0.18.1...v0.19.0

</details>

<details>
<summary>Microsoft/TypeScript (typescript)</summary>

###
[`v5.3.3`](https://togithub.com/microsoft/TypeScript/releases/tag/v5.3.3):
TypeScript 5.3.3

[Compare
Source](https://togithub.com/Microsoft/TypeScript/compare/v5.3.2...v5.3.3)

For release notes, check out the [release
announcement](https://devblogs.microsoft.com/typescript/announcing-typescript-5-3/).

For the complete list of fixed issues, check out the

- [fixed issues query for Typescript 5.3.0
(Beta)](https://togithub.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.3.0%22+is%3Aclosed+).
- [fixed issues query for Typescript 5.3.1
(RC)](https://togithub.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.3.1%22+is%3Aclosed+).
- [fixed issues query for Typescript 5.3.2
(Stable)](https://togithub.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.3.2%22+is%3Aclosed+).
- [fixed issues query for Typescript 5.3.3
(Stable)](https://togithub.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.3.3%22+is%3Aclosed+).

Downloads are available on:

- [NuGet
package](https://www.nuget.org/packages/Microsoft.TypeScript.MSBuild)

###
[`v5.3.2`](https://togithub.com/microsoft/TypeScript/releases/tag/v5.3.2):
TypeScript 5.3

[Compare
Source](https://togithub.com/Microsoft/TypeScript/compare/v5.2.2...v5.3.2)

For release notes, check out the [release
announcement](https://devblogs.microsoft.com/typescript/announcing-typescript-5-3/).

For the complete list of fixed issues, check out the

- [fixed issues query for Typescript 5.3.0
(Beta)](https://togithub.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.3.0%22+is%3Aclosed+).
- [fixed issues query for Typescript 5.3.1
(RC)](https://togithub.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.3.1%22+is%3Aclosed+).
- [fixed issues query for Typescript 5.3.2
(Stable)](https://togithub.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.3.2%22+is%3Aclosed+).

Downloads are available on:

- [NuGet
package](https://www.nuget.org/packages/Microsoft.TypeScript.MSBuild)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config help](https://togithub.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/defenseunicorns/uds-core).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4xMDMuMSIsInVwZGF0ZWRJblZlciI6IjM3LjEwMy4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Megamind <882485+jeff-mccoy@users.noreply.github.com>
Co-authored-by: Micah Nagel <micah.nagel@defenseunicorns.com>
robmcelvenny referenced this pull request in owen-grady/uds-core-slim-dev Jun 3, 2024
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [pepr](https://togithub.com/defenseunicorns/pepr) | [`0.18.1` ->
`0.21.1`](https://renovatebot.com/diffs/npm/pepr/0.18.1/0.21.1) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/pepr/0.21.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/pepr/0.21.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/pepr/0.18.1/0.21.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/pepr/0.18.1/0.21.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [typescript](https://www.typescriptlang.org/)
([source](https://togithub.com/Microsoft/TypeScript)) | [`5.2.2` ->
`5.3.3`](https://renovatebot.com/diffs/npm/typescript/5.2.2/5.3.3) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/typescript/5.3.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/typescript/5.3.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/typescript/5.2.2/5.3.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/typescript/5.2.2/5.3.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>defenseunicorns/pepr (pepr)</summary>

###
[`v0.21.1`](https://togithub.com/defenseunicorns/pepr/releases/tag/v0.21.1)

[Compare
Source](https://togithub.com/defenseunicorns/pepr/compare/v0.21.0...v0.21.1)

#### What's Changed

- chore: bump the production-dependencies group with 1 update by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/defenseunicorns/pepr/pull/455](https://togithub.com/defenseunicorns/pepr/pull/455)

**Full Changelog**:
defenseunicorns/pepr@v0.21.0...v0.21.1

###
[`v0.21.0`](https://togithub.com/defenseunicorns/pepr/releases/tag/v0.21.0)

[Compare
Source](https://togithub.com/defenseunicorns/pepr/compare/v0.20.3...v0.21.0)

#### What's Changed

- feat: add resourceVersion tracking for watches & better watch recovery
by [@&#8203;jeff-mccoy](https://togithub.com/jeff-mccoy) in
[https://github.com/defenseunicorns/pepr/pull/453](https://togithub.com/defenseunicorns/pepr/pull/453)
- chore: bump the production-dependencies group with 2 updates by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/defenseunicorns/pepr/pull/452](https://togithub.com/defenseunicorns/pepr/pull/452)

**Full Changelog**:
defenseunicorns/pepr@v0.20.3...v0.21.0

###
[`v0.20.3`](https://togithub.com/defenseunicorns/pepr/releases/tag/v0.20.3)

[Compare
Source](https://togithub.com/defenseunicorns/pepr/compare/v0.20.2...v0.20.3)

#### What's Changed

- fix: bind debug logs to fluent-client watch log handler by
[@&#8203;jeff-mccoy](https://togithub.com/jeff-mccoy) in
[https://github.com/defenseunicorns/pepr/pull/450](https://togithub.com/defenseunicorns/pepr/pull/450)

**Full Changelog**:
defenseunicorns/pepr@v0.20.2...v0.20.3

###
[`v0.20.2`](https://togithub.com/defenseunicorns/pepr/releases/tag/v0.20.2)

[Compare
Source](https://togithub.com/defenseunicorns/pepr/compare/v0.20.1...v0.20.2)

#### What's Changed

- chore: bump actions/upload-artifact from 3.1.3 to 4.0.0 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/defenseunicorns/pepr/pull/442](https://togithub.com/defenseunicorns/pepr/pull/442)
- chore: bump the prom-client version by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/defenseunicorns/pepr/pull/443](https://togithub.com/defenseunicorns/pepr/pull/443)
- chore: bump actions/setup-node from 4.0.0 to 4.0.1 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/defenseunicorns/pepr/pull/446](https://togithub.com/defenseunicorns/pepr/pull/446)
- chore: bump the production-dependencies group with 1 update by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/defenseunicorns/pepr/pull/448](https://togithub.com/defenseunicorns/pepr/pull/448)
- chore: bump the development-dependencies group with 1 update by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/defenseunicorns/pepr/pull/447](https://togithub.com/defenseunicorns/pepr/pull/447)
- chore: update peer deps (not updated by dependabot) by
[@&#8203;jeff-mccoy](https://togithub.com/jeff-mccoy) in
[https://github.com/defenseunicorns/pepr/pull/449](https://togithub.com/defenseunicorns/pepr/pull/449)

**Full Changelog**:
defenseunicorns/pepr@v0.20.1...v0.20.2

###
[`v0.20.1`](https://togithub.com/defenseunicorns/pepr/releases/tag/v0.20.1)

[Compare
Source](https://togithub.com/defenseunicorns/pepr/compare/v0.19.0...v0.20.1)

#### What's Changed

- chore: spelling by [@&#8203;cmwylie19](https://togithub.com/cmwylie19)
in
[https://github.com/defenseunicorns/pepr/pull/441](https://togithub.com/defenseunicorns/pepr/pull/441)

**Full Changelog**:
defenseunicorns/pepr@v0.20.0...v0.20.1

###
[`v0.19.0`](https://togithub.com/defenseunicorns/pepr/releases/tag/v0.19.0)

[Compare
Source](https://togithub.com/defenseunicorns/pepr/compare/v0.18.1...v0.19.0)

#### Features

- feat: add pepr monitor command by
[@&#8203;jeff-mccoy](https://togithub.com/jeff-mccoy) in
[https://github.com/defenseunicorns/pepr/pull/411](https://togithub.com/defenseunicorns/pepr/pull/411)
- feat: updated containers function to work with mutate requests by
[@&#8203;schaeferka](https://togithub.com/schaeferka) in
[https://github.com/defenseunicorns/pepr/pull/418](https://togithub.com/defenseunicorns/pepr/pull/418)

```typescript
When(a.Pod)
  .IsCreated()
  .Validate(pod => {
    // returns all containers in pod
    const podsContainers = containers(pod);

    for (const container of podsContainers) {
  ... go on
```


![image](https://togithub.com/defenseunicorns/pepr/assets/1096507/8e6c9400-a238-40ea-a774-b151f27db863)

#### What's Changed

- chore: create a library of helper functions that make working with
pepr easier by [@&#8203;schaeferka](https://togithub.com/schaeferka) in
[https://github.com/defenseunicorns/pepr/pull/415](https://togithub.com/defenseunicorns/pepr/pull/415)
- fix: watch does not respect ns testing by
[@&#8203;cmwylie19](https://togithub.com/cmwylie19) in
[https://github.com/defenseunicorns/pepr/pull/398](https://togithub.com/defenseunicorns/pepr/pull/398)
- chore: fix PeprStore rendering where multiple capabilities are in play
by [@&#8203;cmwylie19](https://togithub.com/cmwylie19) in
[https://github.com/defenseunicorns/pepr/pull/422](https://togithub.com/defenseunicorns/pepr/pull/422)
- chore: update logo image in header by
[@&#8203;schaeferka](https://togithub.com/schaeferka) in
[https://github.com/defenseunicorns/pepr/pull/420](https://togithub.com/defenseunicorns/pepr/pull/420)

**Full Changelog**:
defenseunicorns/pepr@v0.18.1...v0.19.0

</details>

<details>
<summary>Microsoft/TypeScript (typescript)</summary>

###
[`v5.3.3`](https://togithub.com/microsoft/TypeScript/releases/tag/v5.3.3):
TypeScript 5.3.3

[Compare
Source](https://togithub.com/Microsoft/TypeScript/compare/v5.3.2...v5.3.3)

For release notes, check out the [release
announcement](https://devblogs.microsoft.com/typescript/announcing-typescript-5-3/).

For the complete list of fixed issues, check out the

- [fixed issues query for Typescript 5.3.0
(Beta)](https://togithub.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.3.0%22+is%3Aclosed+).
- [fixed issues query for Typescript 5.3.1
(RC)](https://togithub.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.3.1%22+is%3Aclosed+).
- [fixed issues query for Typescript 5.3.2
(Stable)](https://togithub.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.3.2%22+is%3Aclosed+).
- [fixed issues query for Typescript 5.3.3
(Stable)](https://togithub.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.3.3%22+is%3Aclosed+).

Downloads are available on:

- [NuGet
package](https://www.nuget.org/packages/Microsoft.TypeScript.MSBuild)

###
[`v5.3.2`](https://togithub.com/microsoft/TypeScript/releases/tag/v5.3.2):
TypeScript 5.3

[Compare
Source](https://togithub.com/Microsoft/TypeScript/compare/v5.2.2...v5.3.2)

For release notes, check out the [release
announcement](https://devblogs.microsoft.com/typescript/announcing-typescript-5-3/).

For the complete list of fixed issues, check out the

- [fixed issues query for Typescript 5.3.0
(Beta)](https://togithub.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.3.0%22+is%3Aclosed+).
- [fixed issues query for Typescript 5.3.1
(RC)](https://togithub.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.3.1%22+is%3Aclosed+).
- [fixed issues query for Typescript 5.3.2
(Stable)](https://togithub.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.3.2%22+is%3Aclosed+).

Downloads are available on:

- [NuGet
package](https://www.nuget.org/packages/Microsoft.TypeScript.MSBuild)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config help](https://togithub.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/defenseunicorns/uds-core).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4xMDMuMSIsInVwZGF0ZWRJblZlciI6IjM3LjEwMy4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Megamind <882485+jeff-mccoy@users.noreply.github.com>
Co-authored-by: Micah Nagel <micah.nagel@defenseunicorns.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: ✅ Done
Development

Successfully merging this pull request may close these issues.

3 participants