Skip to content

Commit

Permalink
Merge pull request #19 from mogenius/fix/README
Browse files Browse the repository at this point in the history
Updated README.
  • Loading branch information
cansurmeli authored Oct 12, 2023
2 parents a4e4aaa + 93f15f6 commit 08b8d46
Showing 1 changed file with 89 additions and 20 deletions.
109 changes: 89 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,24 +27,32 @@

# punq

punq provides a WebApp and CLI to easily manage multiple Kubernetes clusters. It comes with integrated team collaboration, logs, and workload editor for clusters across different infrastructures. The goal of this project is to make DevOps' lifes easier by improving Kubernetes operations especially in teams.
Punq streamlines Kubernetes cluster management through an intuitive WebApp and a user-friendly CLI, designed to simplify the lives of DevOps professionals.

## How it works
It offers unified team collaboration, comprehensive log access, and a sophisticated workload editor, facilitates seamless oversight and manipulation of clusters spanning various infrastructures.

punq is self-hosted on a Kubernetes cluster to run an instance for you and your team members. Each instance consists of the following services:
This project is dedicated to enhancing operational efficiency within Kubernetes environments, with a particular focus on bolstering team-based workflows.

- The operator written in Golang
- An Angular application serving the user interface
## How It Works

With punq you can then manage multiple Kubernetes clusters by adding them from your local kubeconfig. The configurations are stored as secrets on your cluster and based on them punq displays all workloads and resources in the application. This way, every user of your punq instance can monitor and manage clusters without requiring access to the kubeconfig.
Punq offers a self-hosted solution, residing directly within your Kubernetes cluster, to create a dedicated instance for your team. Each instance is composed of:

- An operator, meticulously crafted in Golang, that maintains the core functionalities,
- A dynamic UI, brought to life with Angular, that ensures a smooth user experience.

Punq empowers you to seamlessly oversee multiple Kubernetes clusters. Simply import them from your local kubeconfig, and punq handles the rest, securely tucking away your configurations as secrets within your cluster.

Leveraging these configurations, punq presents a comprehensive view of all workloads and resources through its application. Consequently, every team member using your punq instance gains the capability to monitor and manage clusters, all without the necessity to access the kubeconfig directly. This not only enhances security but also promotes operational efficiency and team collaboration.

![punq fpr k8s](images/punq.png)

## Installation

The setup of punq is done via the command line interface. You can install it with the following commands.
Setting up punq is straightforward and conducted through the command line interface (CLI).

Currently, [Homebrew](https://brew.sh/) covers installation on macOS and Linux platforms whereas if you are a Windows user you can leverage [Scoop](https://scoop.sh/).

### Mac/Linux
### macOS/Linux

```
brew tap mogenius/punq
Expand All @@ -54,52 +62,81 @@ brew install punq
### Windows

```
Install: https://scoop.sh/
scoop bucket add mogenius https://github.com/mogenius/punq
scoop install punq
```

## Getting started
## Getting Started

Once you installed the punq CLI here's how to get started.
After successfully installing punq, you're just a few steps away from harnessing its full potential. Here's how to get your journey started.

To install punq on your cluster within the current context and set up ingress routing, enabling you to access punq via your custom domain:

```
# Install punq on your cluster in your current context. This will also set up the ingress to deliver punq on your own domain. You'll be asked to confirm with "Y".
punq install -i punq.yourdomain.com
```

- In your domain's DNS settings, add a record for the punq domain, e.g. punq.yourdomain.com.
- Open punq in your browser.
- Log in with the admin credentials. They are prompted to your terminal once punq is installed. Make sure to store the admin credentials in a safe place, they will only be displayed once after installation.
- The cluster where punq was installed is set up per default in your punq instance. To add more clusters, use the dropdown in the top left corner and follow the instructions. Upload your kubeconfig to add more clusters.
And thereafter to finalize your punq setup, configure your domain, and getting started with using punq:

1. **Configure DNS Settings:**
- Navigate to your domain's DNS management page,
- Add a new DNS record for punq. This will typically be a CNAME record pointing `punq.yourdomain.com` to the address provided by your punq installation or the IP of your ingress controller. The exact setup may depend on your hosting or DNS provider,

2. **Access punq Interface:**
- Open your preferred web browser and visit `punq.yourdomain.com` (replace with your actual subdomain).
- If you've configured SSL (recommended for security reasons), ensure you're accessing punq over HTTPS (https://punq.yourdomain.com),

**🤘 You're ready to go, have fun with punq 🤘**
3. **Admin Login:**
- Log in using the admin credentials provided during the punq installation. These credentials are displayed in your terminal post-installation. It's crucial to save these details securely, as they're shown only **once** and are necessary for administrative access,

4. **Explore Your Default Cluster:**
- The cluster where punq is installed is automatically configured in your punq instance. Begin exploring the interface, reviewing workloads, and getting familiar with the environment,

5. **Add Additional Clusters:**
- To manage more clusters, click on the dropdown menu in the top left corner of the punq interface,
- Follow the on-screen instructions, which will include uploading your kubeconfig files for the additional clusters you want to manage,
- Ensure each kubeconfig file is correct and up-to-date to avoid connection issues,

6. **Get Started:**
- With your clusters added, you're ready to dive into using punq! 🤘 Start monitoring workloads, managing resources, and deploying applications across your clusters from one unified interface,

7. **Stay Secure:**
- Regularly update your login credentials and review your cluster's security settings to ensure your environment remains secure.

Remember, the punq community and documentation are valuable resources if you encounter any issues or have further questions as you embark on this streamlined Kubernetes management experience.

## Managing punq via CLI

Here are some basic punq commands to start with:

```
# List all available CLI features
punq help
# Install the punq operator in your current kubecontext
punq install
# Manage users and permissions
punq user
# Upgrade your punq instance to the recent version
punq upgrade
# Delete punq from your current kubecontext
punq clean
```

## Development

punq has a development application that you can install with the following commands.
This version points to the branch `develop`. Please note that you can't run `punq` and `punq-dev` simultaneously on a cluster.
If you're interested in running the development version of punq, which corresponds to the `develop` branch of the repository, you can do so by following these instructions:

```
brew tap mogenius/punq-dev
brew install punq-dev
```

> However, please be aware that you **cannot** run both the standard (punq) and development (punq-dev) versions on the same cluster at the same time.
To update the documentation please run (in project root):

```
Expand All @@ -109,7 +146,39 @@ swag init --parseDependency --parseInternal

## Contribution

punq is still in its early stages and we're inviting you to contribute. Feel free to pick up open issues and create PRs.
Punq is in its nascent stages, brimming with potential, and we're excited to extend an invitation for you to be part of this journey. Your insights, expertise, and contributions can significantly shape its evolution, enhancing this tool for many users and diverse needs. Here's how you can get involved:

1. **Explore Open Issues:**
- Visit our repository and delve into the "Issues" section. These are the gateways to the current developmental challenges and enhancements that punq is looking to address,
- Issues can range from simple documentation fixes, feature enhancements, to complex system builds, allowing you to contribute in areas that match your skills and interest,

2. **Choose an Issue:**
- Pick an issue that resonates with your expertise or piques your interest. We recommend starting with "good first issues" if you're new to the project; they're designed to help you get familiar with the codebase and contribution process,

3. **Communicate:**
- Before you start working, communicate your interest on the issue's thread. This step ensures transparency and prevents multiple contributors from working on the same issue unknowingly,
- Feel free to ask for clarification or guidance if needed; our community and maintainers are here to support you,

4. **Fork and Branch:**
- Fork the repository and create a new branch in your forked repository to work on the issue. It's a good practice to name your branch something descriptive that reflects the issue you're addressing,

5. **Code:**
- Dive into the code and work your magic! Ensure your contributions adhere to the project's coding standards and guidelines, which are typically available in the repository,

6. **Test:**
- After coding, rigorously test your changes. Contributions with thorough testing are more reliable and easier to merge,

7. **Create a Pull Request (PR):**
- Once you're confident in your contribution, push your branch to your fork and submit a pull request to the original repository. Provide a detailed description of the changes in your PR, and reference the issue number you're addressing,
- Await feedback or approval from the project maintainers. They may request some changes, improvements, or provide other feedback,

8. **Engage and Iterate:**
- Respond to comments on your pull request and make requested changes until your PR is ready to be merged. This process can be a rewarding cycle of review and revision, enriching both your contribution and your expertise,

9. **Celebrate: 🥳**
- Once your PR is merged, celebrate your contribution! It's a significant achievement to contribute to open-source projects,

Remember, open-source is not just about code. It's about collaboration, learning, and shared stewardship. Whether you're a seasoned developer or a newbie, your contributions are valuable and appreciated. So, let's shape the future of punq together!

![punq for k8s](images/punq_four.png)

Expand Down

0 comments on commit 08b8d46

Please sign in to comment.