diff options
Diffstat (limited to 'python-kubetools.spec')
-rw-r--r-- | python-kubetools.spec | 435 |
1 files changed, 435 insertions, 0 deletions
diff --git a/python-kubetools.spec b/python-kubetools.spec new file mode 100644 index 0000000..a938e39 --- /dev/null +++ b/python-kubetools.spec @@ -0,0 +1,435 @@ +%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 +[](https://travis-ci.com/EDITD/kubetools) +[](https://pypi.org/project/kubetools/) +[](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<version>` (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 +[](https://travis-ci.com/EDITD/kubetools) +[](https://pypi.org/project/kubetools/) +[](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<version>` (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 +[](https://travis-ci.com/EDITD/kubetools) +[](https://pypi.org/project/kubetools/) +[](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<version>` (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 <Python_Bot@openeuler.org> - 13.10.0-1 +- Package Spec generated |