Skip to content

Commit

Permalink
Refactor: Convert README.rst to README.md (#12)
Browse files Browse the repository at this point in the history
* Refactor: remove README.rst

* Refactor: Create README.md

* Refactor: Changed values in pyproject.toml
  • Loading branch information
JTaeuber authored May 16, 2024
1 parent 7ec3d8f commit d3f8426
Show file tree
Hide file tree
Showing 3 changed files with 190 additions and 241 deletions.
187 changes: 187 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,187 @@
new-pykube
=========

Pykube (new-pykube) is a lightweight Python 3.6+ client library for Kubernetes.

This is a fork of [pykube-ng](https://codeberg.org/hjacobs/pykube-ng) which is no longer maintained.


## Features

* HTTP interface using requests using kubeconfig for authentication
* Python native querying of Kubernetes API objects


## Installation

To install pykube, use pip:
```bash
pip install pykube-ng
```


## Interactive Console

The `pykube` library module can be run as an interactive console locally for quick exploration.
It will automatically load `~/.kube/config` to provide the `api` object, and it loads pykube classes (`Deployment`, `Pod`, ..) into local context:

```bash
python3 -m pykube
>>> [d.name for d in Deployment.objects(api)]
```
## Usage
### Query for all ready pods in a custom namespace:
```python
import operator
import pykube

api = pykube.HTTPClient(pykube.KubeConfig.from_file())
pods = pykube.Pod.objects(api).filter(namespace="gondor-system")
ready_pods = filter(operator.attrgetter("ready"), pods)
```
### Access any attribute of the Kubernetes object:
```python
pod = pykube.Pod.objects(api).filter(namespace="gondor-system").get(name="my-pod")
pod.obj["spec"]["containers"][0]["image"]
```
### Selector query:
```python
pods = pykube.Pod.objects(api).filter(
namespace="gondor-system",
selector={"gondor.io/name__in": {"api-web", "api-worker"}},
)
pending_pods = pykube.objects.Pod.objects(api).filter(
field_selector={"status.phase": "Pending"}
)
```
### Watch query:
```python
watch = pykube.Job.objects(api, namespace="gondor-system")
watch = watch.filter(field_selector={"metadata.name": "my-job"}).watch()

# watch is a generator:
for watch_event in watch:
print(watch_event.type) # 'ADDED', 'DELETED', 'MODIFIED'
print(watch_event.object) # pykube.Job object
```
### Create a Deployment:
```python
obj = {
"apiVersion": "apps/v1",
"kind": "Deployment",
"metadata": {
"name": "my-deploy",
"namespace": "gondor-system"
},
"spec": {
"replicas": 3,
"selector": {
"matchLabels": {
"app": "nginx"
}
},
"template": {
"metadata": {
"labels": {
"app": "nginx"
}
},
"spec": {
"containers": [
{
"name": "nginx",
"image": "nginx",
"ports": [
{"containerPort": 80}
]
}
]
}
}
}
}
pykube.Deployment(api, obj).create()
```
### Delete a Deployment:
```python
obj = {
"apiVersion": "apps/v1",
"kind": "Deployment",
"metadata": {
"name": "my-deploy",
"namespace": "gondor-system"
}
}
pykube.Deployment(api, obj).delete()
```
### Check server version:
```python
api = pykube.HTTPClient(pykube.KubeConfig.from_file())
api.version
```
## Requirements
* Python 3.6+
* requests (included in `install_requires`)
* PyYAML (included in `install_requires`)
## Local Development
You can run pykube against your current kubeconfig context, e.g. local [Minikube](https://github.com/kubernetes/minikube):
```bash
poetry install
poetry run python3
>>> import pykube
>>> config = pykube.KubeConfig.from_file()
>>> api = pykube.HTTPClient(config)
>>> list(pykube.Deployment.objects(api))
```
To run PEP8 (flake8) checks and unit tests including coverage report:
```bash
make test
```
## License
The code in this project is licensed under the [Apache License, version 2.0](./LICENSE)
## Contributing
Easiest way to contribute is to provide feedback! We would love to hear what you like and what you think is missing.
Create an issue and we will take a look. PRs are welcome.
## Code of Conduct
In order to foster a kind, inclusive, and harassment-free community, this project follows the [Contributor Covenant Code of Conduct](http://contributor-covenant.org/version/1/4/).
Loading

0 comments on commit d3f8426

Please sign in to comment.