1
0
Fork 0
mirror of https://github.com/kyverno/kyverno.git synced 2024-12-14 11:57:48 +00:00

update dev docs (#10089)

* update dev docs

Signed-off-by: Jim Bugwadia <jim@nirmata.com>

* update dev docs

Signed-off-by: Jim Bugwadia <jim@nirmata.com>

---------

Signed-off-by: Jim Bugwadia <jim@nirmata.com>
This commit is contained in:
Jim Bugwadia 2024-04-22 22:47:16 -07:00 committed by GitHub
parent d01ff4d29b
commit ec730bc560
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 91 additions and 0 deletions

View file

@ -27,6 +27,10 @@ It contains instructions to build, run, and test Kyverno.
- [Generating helm charts CRDs](#generating-helm-charts-crds) - [Generating helm charts CRDs](#generating-helm-charts-crds)
- [Generating helm charts docs](#generating-helm-charts-docs) - [Generating helm charts docs](#generating-helm-charts-docs)
- [Debugging local code](#debugging-local-code) - [Debugging local code](#debugging-local-code)
- [Profiling](#profiling)
- [Other Topics](#other-topics)
- [Selecting Issues](#selecting-issues)
## Open project in devcontainer (recommended) ## Open project in devcontainer (recommended)
- Clone the project to your local machine. - Clone the project to your local machine.
@ -427,3 +431,83 @@ go run ./cmd/kyverno/ --kubeconfig ~/.kube/config --serverIP=<local-ip>:9443 --b
``` ```
You will need to adapt those steps to run debug sessions in your IDE of choice, but the general idea remains the same. You will need to adapt those steps to run debug sessions in your IDE of choice, but the general idea remains the same.
## Profiling
### Enable profiling
To profile Kyverno application running inside a Kubernetes pod, set `--profile` flag to `true` in [install.yaml](https://github.com/kyverno/kyverno/blob/main/definitions/install.yaml). The default profiling port is 6060, and it can be configured via `profile-port`.
```
--profile
Set this flag to 'true', to enable profiling.
--profile-port string
Enable profiling at given port, defaults to 6060. (default "6060")
```
### Expose the endpoint on a local port
You can get at the application in the pod by port forwarding with kubectl, for example:
````shell
$ kubectl -n kyverno get pod
NAME READY STATUS RESTARTS AGE
kyverno-7d67c967c6-slbpr 1/1 Running 0 19s
````
````bash
$ kubectl -n kyverno port-forward kyverno-7d67c967c6-slbpr 6060
Forwarding from 127.0.0.1:6060 -> 6060
Forwarding from [::1]:6060 -> 6060
````
The HTTP endpoint will now be available as a local port.
Alternatively, use a Service of the type `LoadBalancer` to expose Kyverno. An example Service manifest is given below:
```yaml
apiVersion: v1
kind: Service
metadata:
name: pproc-service
namespace: kyverno
spec:
selector:
app: kyverno
ports:
- protocol: TCP
port: 6060
targetPort: 6060
type: LoadBalancer
```
### Generate the data
You can then generate the file for the **memory** profile with curl and pipe the data to a file:
````shell
$ curl http://localhost:6060/debug/pprof/heap > heap.pprof
````
Generate the file for the **CPU** profile with curl and pipe the data to a file:
```shell
curl "http://localhost:6060/debug/pprof/profile?seconds=60" > cpu.pprof
```
### Analyze the data
To analyze the data:
````shell
go tool pprof heap.pprof
````
### Read more about profiling
- [Profiling Golang Programs on Kubernetes](https://danlimerick.wordpress.com/2017/01/24/profiling-golang-programs-on-kubernetes/)
- [Official GO blog](https://blog.golang.org/pprof)
## Other Topics
Additional advanced developer docs are avaialable in the [developer docs folder](./docs/dev/).
## Selecting Issues
When you are ready to contribute, you can select issue at [Good First Issues](https://github.com/orgs/kyverno/projects/10).

7
docs/dev/README.md Normal file
View file

@ -0,0 +1,7 @@
# Developer Documentation (Advanced Topics)
This folder contains developer documentation.
To get started see: [DEVELOPMENT.md](../../DEVELOPMENT.md).
When you are ready to contribute, you can select issue at [Good First Issues](https://github.com/orgs/kyverno/projects/10).