%global _empty_manifest_terminate_build 0 Name: python-kubetools Version: 13.10.0 Release: 1 Summary: Kubetools is a tool and processes for developing and deploying microservices to Kubernetes. License: MIT License URL: http://github.com/EDITD/kubetools Source0: https://mirrors.nju.edu.cn/pypi/web/packages/4f/b7/3507ab31ab75f4a9244d32583715a94a993aa29c46dfff08c0f675d4296c/kubetools-13.10.0.tar.gz BuildArch: noarch Requires: python3-click Requires: python3-docker Requires: python3-pyyaml Requires: python3-requests Requires: python3-pyretry Requires: python3-setuptools Requires: python3-kubernetes Requires: python3-tabulate Requires: python3-docker-compose Requires: python3-ipdb Requires: python3-pytest Requires: python3-pytest-cov Requires: python3-flake8 Requires: python3-flake8-import-order Requires: python3-flake8-commas %description [![Build Status](https://travis-ci.com/EDITD/kubetools.svg?branch=master)](https://travis-ci.com/EDITD/kubetools) [![Pypi Version](https://img.shields.io/pypi/v/kubetools.svg)](https://pypi.org/project/kubetools/) [![Python Versions](https://img.shields.io/pypi/pyversions/kubetools.svg)](https://pypi.org/project/kubetools/) # Kubetools Kubetools is a tool and processes for developing and deploying microservices to Kubernetes. Say that: + You have **a bunch of repositories, each containing one or more microservices** + You want to **deploy each of these microservices into one or more Kubernetes clusters** + You want a **single configuration file per project** (repository) And you would like: + **Development setup should be near-instant** - and _not_ require specific K8s knowledge + **Deployment to production can be automated** - and integrated with existing CI tooling Kubetools provides the tooling required to achieve this, by way of two CLI tools: + **`ktd`**: generates _100% local_ development environments using Docker/docker-compose + **`kubetools`**: deploys projects to Kubernetes, handling any changes/jobs as required Both of these use a single configuration file, `kubetools.yml`, for example a basic `django` app: ```yaml name: my-app containerContexts: django_app: build: registry: my-registry.net dockerfile: Dockerfile dev: volumes: - ./:/opt/django_app upgrades: - name: Upgrade database containerContext: django_app command: [./manage.py, migrate, --noinput] tests: - name: Nosetests containerContext: django_app command: [./manage.py, test] deployments: my-app-webserver: containers: uwsgi: command: [uwsgi, --ini, /etc/uwsgi.conf] containerContext: django_app ports: - 80 dev: command: [./manage.py, runserver, '0.0.0.0:80'] dependencies: mariadb: containers: mariadb: image: mariadb:v10.4.1 cronjobs: my-cronjob: batch-api-version: 'batch/v1beta1' # Must add if k8s version < 1.21+ schedule: "*/1 * * * *" concurrency_policy: "Replace" containers: hello: image: busybox command: [/bin/sh, -c, date; echo Hello from the Kubernetes cluster] ``` With this in your current directory, you can now: ```sh # Bring up a local development environment using docker-compose ktd up # Deploy the project to a Kubernetes namespace kubetools deploy my-namespace ``` ## Installing ```sh pip install kubetools ``` ## Configuration Users can configure some aspects of `kubetools`. The configuration folder location depends on the operating system of the user. See the [Click documentation](https://click.palletsprojects.com/en/8.1.x/api/#click.get_app_dir) to find the appropriate one for you. Note that we use the "POSIX" version (for example `~/.kubetools/` on Unix systems). * `kubetools.conf` contains key-value settings, see [`settings.py`](kubetools/settings.py) for the possible settings and their meaning. * `scripts/` can contain scripts to be made available to `ktd script` command ## Developing Install the package in editable mode, with the dev extras: ```sh pip install -e .[dev] ``` ## Releasing (admins/maintainers only) * Update [CHANGELOG](CHANGELOG.md) to add new version and document it * In GitHub, create a new release * Name the release `v` (for example `v1.2.3`) * Title the release with a highlight of the changes * Copy changes in the release from `CHANGELOG.md` into the release description * [GitHub Actions](https://github.com/EDITD/kubetools/actions) will package the release and publish it to [Pypi](https://pypi.org/project/kubetools/) %package -n python3-kubetools Summary: Kubetools is a tool and processes for developing and deploying microservices to Kubernetes. Provides: python-kubetools BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-kubetools [![Build Status](https://travis-ci.com/EDITD/kubetools.svg?branch=master)](https://travis-ci.com/EDITD/kubetools) [![Pypi Version](https://img.shields.io/pypi/v/kubetools.svg)](https://pypi.org/project/kubetools/) [![Python Versions](https://img.shields.io/pypi/pyversions/kubetools.svg)](https://pypi.org/project/kubetools/) # Kubetools Kubetools is a tool and processes for developing and deploying microservices to Kubernetes. Say that: + You have **a bunch of repositories, each containing one or more microservices** + You want to **deploy each of these microservices into one or more Kubernetes clusters** + You want a **single configuration file per project** (repository) And you would like: + **Development setup should be near-instant** - and _not_ require specific K8s knowledge + **Deployment to production can be automated** - and integrated with existing CI tooling Kubetools provides the tooling required to achieve this, by way of two CLI tools: + **`ktd`**: generates _100% local_ development environments using Docker/docker-compose + **`kubetools`**: deploys projects to Kubernetes, handling any changes/jobs as required Both of these use a single configuration file, `kubetools.yml`, for example a basic `django` app: ```yaml name: my-app containerContexts: django_app: build: registry: my-registry.net dockerfile: Dockerfile dev: volumes: - ./:/opt/django_app upgrades: - name: Upgrade database containerContext: django_app command: [./manage.py, migrate, --noinput] tests: - name: Nosetests containerContext: django_app command: [./manage.py, test] deployments: my-app-webserver: containers: uwsgi: command: [uwsgi, --ini, /etc/uwsgi.conf] containerContext: django_app ports: - 80 dev: command: [./manage.py, runserver, '0.0.0.0:80'] dependencies: mariadb: containers: mariadb: image: mariadb:v10.4.1 cronjobs: my-cronjob: batch-api-version: 'batch/v1beta1' # Must add if k8s version < 1.21+ schedule: "*/1 * * * *" concurrency_policy: "Replace" containers: hello: image: busybox command: [/bin/sh, -c, date; echo Hello from the Kubernetes cluster] ``` With this in your current directory, you can now: ```sh # Bring up a local development environment using docker-compose ktd up # Deploy the project to a Kubernetes namespace kubetools deploy my-namespace ``` ## Installing ```sh pip install kubetools ``` ## Configuration Users can configure some aspects of `kubetools`. The configuration folder location depends on the operating system of the user. See the [Click documentation](https://click.palletsprojects.com/en/8.1.x/api/#click.get_app_dir) to find the appropriate one for you. Note that we use the "POSIX" version (for example `~/.kubetools/` on Unix systems). * `kubetools.conf` contains key-value settings, see [`settings.py`](kubetools/settings.py) for the possible settings and their meaning. * `scripts/` can contain scripts to be made available to `ktd script` command ## Developing Install the package in editable mode, with the dev extras: ```sh pip install -e .[dev] ``` ## Releasing (admins/maintainers only) * Update [CHANGELOG](CHANGELOG.md) to add new version and document it * In GitHub, create a new release * Name the release `v` (for example `v1.2.3`) * Title the release with a highlight of the changes * Copy changes in the release from `CHANGELOG.md` into the release description * [GitHub Actions](https://github.com/EDITD/kubetools/actions) will package the release and publish it to [Pypi](https://pypi.org/project/kubetools/) %package help Summary: Development documents and examples for kubetools Provides: python3-kubetools-doc %description help [![Build Status](https://travis-ci.com/EDITD/kubetools.svg?branch=master)](https://travis-ci.com/EDITD/kubetools) [![Pypi Version](https://img.shields.io/pypi/v/kubetools.svg)](https://pypi.org/project/kubetools/) [![Python Versions](https://img.shields.io/pypi/pyversions/kubetools.svg)](https://pypi.org/project/kubetools/) # Kubetools Kubetools is a tool and processes for developing and deploying microservices to Kubernetes. Say that: + You have **a bunch of repositories, each containing one or more microservices** + You want to **deploy each of these microservices into one or more Kubernetes clusters** + You want a **single configuration file per project** (repository) And you would like: + **Development setup should be near-instant** - and _not_ require specific K8s knowledge + **Deployment to production can be automated** - and integrated with existing CI tooling Kubetools provides the tooling required to achieve this, by way of two CLI tools: + **`ktd`**: generates _100% local_ development environments using Docker/docker-compose + **`kubetools`**: deploys projects to Kubernetes, handling any changes/jobs as required Both of these use a single configuration file, `kubetools.yml`, for example a basic `django` app: ```yaml name: my-app containerContexts: django_app: build: registry: my-registry.net dockerfile: Dockerfile dev: volumes: - ./:/opt/django_app upgrades: - name: Upgrade database containerContext: django_app command: [./manage.py, migrate, --noinput] tests: - name: Nosetests containerContext: django_app command: [./manage.py, test] deployments: my-app-webserver: containers: uwsgi: command: [uwsgi, --ini, /etc/uwsgi.conf] containerContext: django_app ports: - 80 dev: command: [./manage.py, runserver, '0.0.0.0:80'] dependencies: mariadb: containers: mariadb: image: mariadb:v10.4.1 cronjobs: my-cronjob: batch-api-version: 'batch/v1beta1' # Must add if k8s version < 1.21+ schedule: "*/1 * * * *" concurrency_policy: "Replace" containers: hello: image: busybox command: [/bin/sh, -c, date; echo Hello from the Kubernetes cluster] ``` With this in your current directory, you can now: ```sh # Bring up a local development environment using docker-compose ktd up # Deploy the project to a Kubernetes namespace kubetools deploy my-namespace ``` ## Installing ```sh pip install kubetools ``` ## Configuration Users can configure some aspects of `kubetools`. The configuration folder location depends on the operating system of the user. See the [Click documentation](https://click.palletsprojects.com/en/8.1.x/api/#click.get_app_dir) to find the appropriate one for you. Note that we use the "POSIX" version (for example `~/.kubetools/` on Unix systems). * `kubetools.conf` contains key-value settings, see [`settings.py`](kubetools/settings.py) for the possible settings and their meaning. * `scripts/` can contain scripts to be made available to `ktd script` command ## Developing Install the package in editable mode, with the dev extras: ```sh pip install -e .[dev] ``` ## Releasing (admins/maintainers only) * Update [CHANGELOG](CHANGELOG.md) to add new version and document it * In GitHub, create a new release * Name the release `v` (for example `v1.2.3`) * Title the release with a highlight of the changes * Copy changes in the release from `CHANGELOG.md` into the release description * [GitHub Actions](https://github.com/EDITD/kubetools/actions) will package the release and publish it to [Pypi](https://pypi.org/project/kubetools/) %prep %autosetup -n kubetools-13.10.0 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-kubetools -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Wed May 31 2023 Python_Bot - 13.10.0-1 - Package Spec generated