Type safe K8s middleware for humans
npx pepr dev
by @cmwylie19 in https://github.com/defenseunicorns/pepr/pull/816
ad74234
to 352823f
by @dependabot in https://github.com/defenseunicorns/pepr/pull/809
352823f
to 5ac3e57
by @dependabot in https://github.com/defenseunicorns/pepr/pull/817
9e8f45f
to 9456710
by @dependabot in https://github.com/defenseunicorns/pepr/pull/823
5ac3e57
to 4f3a934
by @dependabot in https://github.com/defenseunicorns/pepr/pull/820
Full Changelog: https://github.com/defenseunicorns/pepr/compare/v0.31.0...v0.31.1
SUPPORT.md
by @schaeferka in https://github.com/defenseunicorns/pepr/pull/785
1fa615d
to ad74234
by @dependabot in https://github.com/defenseunicorns/pepr/pull/805
487dc5d
to 9e8f45f
by @dependabot in https://github.com/defenseunicorns/pepr/pull/806
a0b51fe
to db5a181
by @dependabot in https://github.com/defenseunicorns/pepr/pull/788
db5a181
to fe26db9
by @dependabot in https://github.com/defenseunicorns/pepr/pull/793
fe26db9
to a8d75b6
by @dependabot in https://github.com/defenseunicorns/pepr/pull/799
a8d75b6
to 1fa615d
by @dependabot in https://github.com/defenseunicorns/pepr/pull/803
Full Changelog: https://github.com/defenseunicorns/pepr/compare/v0.30.2...v0.31.0
Full Changelog: https://github.com/defenseunicorns/pepr/compare/v0.30.1...v0.30.2
564a1aa
to a0b51fe
by @dependabot in https://github.com/defenseunicorns/pepr/pull/777
Full Changelog: https://github.com/defenseunicorns/pepr/compare/v0.30.0...v0.30.1
acc2839
to 8cddb06
by @dependabot in https://github.com/defenseunicorns/pepr/pull/753
8cddb06
to 5f09dbf
by @dependabot in https://github.com/defenseunicorns/pepr/pull/763
5f09dbf
to 4648bb4
by @dependabot in https://github.com/defenseunicorns/pepr/pull/770
4648bb4
to 564a1aa
by @dependabot in https://github.com/defenseunicorns/pepr/pull/775
9459e24
to 487dc5d
by @dependabot in https://github.com/defenseunicorns/pepr/pull/778
Full Changelog: https://github.com/defenseunicorns/pepr/compare/v0.29.2...v0.30.0
In order to look for Watch events from the Watch Controller:
kubectl logs -n pepr-system -l pepr.dev/controller=watcher -f | jq 'select(.msg != null and (.msg | test("^Watch event.+")))'
To get results:
{
"level": 20,
"time": 1713451863516,
"pid": 19,
"hostname": "pepr-6233c672-7fca-5603-8e90-771828dd30fa-watcher-558d5f5d45vkq",
"msg": "Watch event resource_version received"
}
{
"level": 20,
"time": 1713451903555,
"pid": 19,
"hostname": "pepr-6233c672-7fca-5603-8e90-771828dd30fa-watcher-558d5f5d45vkq",
"kind": "ConfigMap",
"apiVersion": "v1",
"metadata": {
"name": "a-12",
"namespace": "pepr-demo",
"uid": "990c7f3d-ac3e-4933-9f05-f63f88726457",
"resourceVersion": "1739",
"creationTimestamp": "2024-04-18T14:51:43Z",
"managedFields": [
{
"manager": "kubectl-create",
"operation": "Update",
"apiVersion": "v1",
"time": "2024-04-18T14:51:43Z",
"fieldsType": "FieldsV1",
"fieldsV1": {
"f:data": {
".": {},
"f:a": {}
}
}
}
]
},
"data": {
"a": "a"
},
"msg": "Watch event ADDED received"
}
{
"level": 20,
"time": 1713451908578,
"pid": 19,
"hostname": "pepr-6233c672-7fca-5603-8e90-771828dd30fa-watcher-558d5f5d45vkq",
"msg": "Watch event resource_version received"
}
Full Changelog: https://github.com/defenseunicorns/pepr/compare/v0.29.1...v0.29.2
8c5f0eb
to 4c0a73a
by @dependabot in https://github.com/defenseunicorns/pepr/pull/734
4c0a73a
to acc2839
by @dependabot in https://github.com/defenseunicorns/pepr/pull/738
Full Changelog: https://github.com/defenseunicorns/pepr/compare/v0.29.0...v0.29.1
getOwnerRefFrom - get fields needed to create an owner ref
// Create a deployment that is "owned" by the WebApp instance 👍
function deployment(instance: WebApp) {
const { name, namespace } = instance.metadata!;
const { replicas } = instance.spec!;
return {
apiVersion: "apps/v1",
kind: "Deployment",
metadata: {
ownerReferences: getOwnerRefFrom(instance), // 👈 Instance owns deploymeny
name,
namespace,
labels: {
"pepr.dev/operator": name,
},
},
containers - Get all of the containers from a pod
When(a.Pod)
.IsCreatedOrUpdated()
.Validate(po => {
const podContainers = containers(po); // containers, initContainer, ephemeralContainers 👈
for (const container of podContainers) {
if (
container.securityContext?.allowPrivilegeEscalation ||
container.securityContext?.privileged
) {
return po.Deny("Privilege escalation is not allowed");
}
}
return po.Approve();
});
writeEvent - write an event
async function updateStatus(instance: WebApp, status: Status) {
await writeEvent(instance, {phase: status}, "Normal", "CreatedOrUpdate", instance.metadata.name, instance.metadata.name);
await K8s(WebApp).PatchStatus({
metadata: {
name: instance.metadata!.name,
namespace: instance.metadata!.namespace,
},
status,
});
}
kubectl describe wa webapp-light-en -n webapps
# output
Name: webapp-light-en
Namespace: webapps
API Version: pepr.io/v1alpha1
Kind: WebApp
Metadata: ...
Spec:
Language: en
Replicas: 1
Theme: light
Status:
Observed Generation: 1
Phase: Ready
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal InstanceCreatedOrUpdated 36s webapp-light-en Pending 👈
Normal InstanceCreatedOrUpdated 36s webapp-light-en Ready 👈
Take a look at the sdk functions. Good job @schaeferka 👏
cc860c4
to 8c5f0eb
by @dependabot in https://github.com/defenseunicorns/pepr/pull/721
Full Changelog: https://github.com/defenseunicorns/pepr/compare/v0.28.8...v0.29.0
Full Changelog: https://github.com/defenseunicorns/pepr/compare/v0.28.7...v0.28.8
Full Changelog: https://github.com/defenseunicorns/pepr/compare/v0.28.6...v0.28.7