{"id":39498777,"url":"https://github.com/k-cloud-labs/pidalio","last_synced_at":"2026-01-18T05:44:59.621Z","repository":{"id":57693692,"uuid":"484638106","full_name":"k-cloud-labs/pidalio","owner":"k-cloud-labs","description":"A transport middleware for client-go to mutate k8s resource before send to kube-apiserver","archived":false,"fork":false,"pushed_at":"2023-01-17T08:00:30.000Z","size":110,"stargazers_count":9,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-06-20T15:01:43.394Z","etag":null,"topics":["hook","middleware","mutate"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/k-cloud-labs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-04-23T03:43:52.000Z","updated_at":"2024-01-07T14:41:11.000Z","dependencies_parsed_at":"2023-02-10T08:31:20.461Z","dependency_job_id":null,"html_url":"https://github.com/k-cloud-labs/pidalio","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/k-cloud-labs/pidalio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/k-cloud-labs%2Fpidalio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/k-cloud-labs%2Fpidalio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/k-cloud-labs%2Fpidalio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/k-cloud-labs%2Fpidalio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/k-cloud-labs","download_url":"https://codeload.github.com/k-cloud-labs/pidalio/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/k-cloud-labs%2Fpidalio/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28531419,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T00:39:45.795Z","status":"online","status_checked_at":"2026-01-18T02:00:07.578Z","response_time":98,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hook","middleware","mutate"],"created_at":"2026-01-18T05:44:59.565Z","updated_at":"2026-01-18T05:44:59.612Z","avatar_url":"https://github.com/k-cloud-labs.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# pidalio\n![pidalio-logo](docs/images/pidolio.png)\n\n[![Build Status](https://github.com/k-cloud-labs/pidalio/actions/workflows/ci.yml/badge.svg)](https://github.com/k-cloud-labs/pidalio/actions?query=workflow%3Abuild)\n[![codecov](https://codecov.io/gh/k-cloud-labs/pidalio/branch/main/graph/badge.svg?token=74uYpOiawR)](https://codecov.io/gh/k-cloud-labs/pidalio)\n[![Go Report Card](https://goreportcard.com/badge/github.com/k-cloud-labs/pidalio)](https://goreportcard.com/report/github.com/k-cloud-labs/pidalio)\n[![Go doc](https://img.shields.io/badge/go.dev-reference-brightgreen?logo=go\u0026logoColor=white\u0026style=flat)](https://pkg.go.dev/github.com/k-cloud-labs/pidalio)\n\nA transport middleware working in clientside for client-go to mutate any k8s resource via (Cluster)OverridePolicy.  \n\nIf you want to use it in serverside as a webhook, please use https://github.com/k-cloud-labs/kinitiras.\n\n\n## Quick Start\n\n### Apply crd files to your cluster\n```shell\nkubectl apply -f https://raw.githubusercontent.com/k-cloud-labs/pkg/main/charts/_crds/bases/policy.kcloudlabs.io_overridepolicies.yaml\nkubectl apply -f https://raw.githubusercontent.com/k-cloud-labs/pkg/main/charts/_crds/bases/policy.kcloudlabs.io_clusteroverridepolicies.yaml\n```\n\nOverridePolicy is used to mutate object in the same namespace.  \nClusterOverridePolicy can mutate object in any namespace.\n\nFor cluster scoped resource: \n- Apply ClusterOverridePolicy by policies name in ascending;  \n\nFor namespaced scoped resource, apply order is:\n- First apply ClusterOverridePolicy;\n- Then apply OverridePolicy;\n\n### Add transport middleware\nWhat you need to do is just call `RegisterPolicyTransport` func after `rest.Config` initialized and before client to initialize.\n\n```go\nimport(\n\t\"github.com/k-cloud-labs/pidalio\"\n)\n\n// the black magic code\npidalio.RegisterPolicyTransport(config, make(chan struct{}))\n\n```\n\n## Feature\n- [x] Support mutate k8s resource by (Cluster)OverridePolicy via plaintext jsonpatch.\n- [x] Support mutate k8s resource by (Cluster)OverridePolicy programmable via [CUE](https://cuelang.org/).\n- [x] Support render template to cue in transport(even policy is not created by others) ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fk-cloud-labs%2Fpidalio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fk-cloud-labs%2Fpidalio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fk-cloud-labs%2Fpidalio/lists"}