commit a615e8a1f9b272f3cb34e4c382229d890d93553b Author: jon brookes Date: Fri Nov 28 18:26:42 2025 +0000 first commit diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..d2ebd3a --- /dev/null +++ b/LICENSE @@ -0,0 +1,141 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for + software and other kinds of works. + + The licenses for most software and other practical works are designed + to take away your freedom to share and change the works. By contrast, + the GNU General Public License is intended to guarantee your freedom to + share and change all versions of a program--to make sure it remains free + software for all its users. We, the Free Software Foundation, use the + GNU General Public License for most of our software; it applies also to + any other work released this way by its authors. You can apply it to + your programs, too. + + When we speak of free software, we are referring to freedom, not + price. Our General Public Licenses are designed to make sure that you + have the freedom to distribute copies of free software (and charge for + them if you wish), that you receive source code or can get it if you + want it, that you can change the software or use pieces of it in new + free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you + these rights or asking you to surrender the rights. Therefore, you have + certain responsibilities if you distribute copies of the software, or if + you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether + gratis or for a fee, you must pass on to the recipients the same + freedoms that you received. You must make sure that they, too, receive + or can get the source code. And you must show them these terms so they + know their rights. + + Developers that use the GNU GPL protect your rights with two steps: + (1) assert copyright on the software, and (2) offer you this License + giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains + that there is no warranty for this free software. For both users' and + authors' sake, the GPL requires that modified versions be marked as + changed, so that their problems will not be attributed erroneously to + authors of previous versions. + + Some devices are designed to deny users access to install or run + modified versions of the software inside them, although the manufacturer + can do so. This is fundamentally incompatible with the objective of + protecting users' freedom to change the software. The systematic + pattern of such abuse occurs in the area of products for individuals to + use, which is precisely where it is most unacceptable. Therefore, we + have designed this version of the GPL to prohibit the practice for those + products. If such problems arise substantially in other domains, we + stand ready to extend this provision to those domains in future versions + of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. + States should not allow patents to restrict development and use of + software on general-purpose computers, but in those that do, we wish to + avoid the special danger that patents applied to a free program could + make it effectively proprietary. To prevent this, the GPL assures that + patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and + modification follow. + + ===================== + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + ===================== + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of + works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this + License. Each licensee is addressed as "you". "Licensees" and + "recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work + in a fashion requiring copyright permission, other than the making of an + exact copy. The resulting work is called a "modified version" of the + earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based + on the Program. + + To "propagate" a work means to do anything with it that, without + permission, would make you directly or secondarily liable for + infringement under applicable copyright law, except executing it on a + computer or modifying a private copy. Propagation includes copying, + distribution (with or without modification), making available to the + public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other + parties to make or receive copies. Mere interaction with a user through + a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" + to the extent that it includes a convenient and prominently visible + feature that (1) displays an appropriate copyright notice, and (2) + tells the user that there is no warranty for the work (except to the + extent that warranties are provided), that licensees may convey the + work under this License, and how to view a copy of this License. If + the interface presents a list of user commands or options, such as a + menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work for + making modifications to it. "Object code" means any non-source form + of a work. + + A "Standard Interface" means an interface that either is an official + standard defined by a recognized standards body, or, in the case of + interfaces specified for a particular programming language, one that + is widely used among developers working in that language. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of + copyright on the Program, and are irrevocable provided the stated + conditions are met. This License explicitly affirms your unlimited + permission to run the unmodified Program. The output from running a + covered work is covered by this License only if the output, given its + content, constitutes a covered work. This License acknowledges your + rights of fair use or other equivalent, as provided by copyright law. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + ...[Full license text continues here.] + + For the complete terms and conditions, see the full GNU GPL v3 text at: + https://www.gnu.org/licenses/gpl-3.0.txt diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fe4375 --- /dev/null +++ b/README.md @@ -0,0 +1,56 @@ +**Project**: inftools-cn + +**Purpose**: This repository contains a small helper container image and scripts to build and run a debugging/admin container for working with Docker and lightweight Kubernetes (k3d). The image includes `kubectl`, the Docker CLI, and `k3d` so you can create and administer a local k3d cluster from inside the container. + +**Key Files**: +- `Dockerfile`: Builds the helper image (Debian Bookworm) with `kubectl`, `k3d`, and the Docker CLI. +- `build.sh`: Ensures the `inftools-cn:latest` image exists, creates a user Docker network (`student-net`) if missing, and (when needed) runs `k3d cluster create mycluster` inside the helper container. It also edits the kubeconfig stored in the `mykube` Docker volume so the cluster API uses the load-balancer node. +- `run.sh`: Launches an interactive shell in the helper container, mounting the Docker socket and the `mykube` volume. + +**Image / Resources**: +- Image name: `inftools-cn:latest` +- Docker network used: `student-net` +- Docker volume used for kubeconfig: `mykube` + +**Requirements**: +- Docker must be installed and the user must be able to access the Docker daemon (the scripts bind-mount `/var/run/docker.sock`). +- Host can run containers and create networks/volumes. + +**Quick Usage**: + +- Build and create the k3d cluster (recommended): + + ```bash + ./build.sh + ``` + +- Start an interactive shell inside the helper container (uses the pre-built `inftools-cn:latest` image): + + ```bash + ./run.sh + ``` + +see [this demo](http://ascii.headshed.dev/a/dbfdZXIGo2wrvwn9ePsf9TFPs) of `build.sh` and `run.sh` on a debian bookworm OS + + + +- Manual docker build/run (if you prefer): + + ```bash + docker build -t inftools-cn:latest . + docker network create student-net # if not present + docker run --rm -it --network student-net -v /var/run/docker.sock:/var/run/docker.sock -v mykube:/root/.kube inftools-cn:latest bash + ``` + +**What `build.sh` does (summary)**: +- Ensures the `inftools-cn:latest` image exists (builds it from `Dockerfile` if missing). +- Creates `student-net` Docker network if it doesn't exist. +- Runs the `k3d cluster create mycluster` command inside the helper container, captures the output to find the load-balancer node, and updates the kubeconfig in the `mykube` volume so the cluster API endpoint points to the LB node on port `6443`. + +**Security notes**: +- The container mounts the host Docker socket (`/var/run/docker.sock`) into the container which grants the container broad control over the host Docker daemon. Only run this in trusted environments. + +**License**: +- This project is licensed under the GNU General Public License v3.0 (GPL-3.0). +- See the `LICENSE` file in this repository for the full license text. +