Level up your small IRC network: Deploy it on Kubernetes.
This is a Kubernetes deployment repository for ngIRCd server.
This repository provides a Kubernetes deployment for running a scalable and secure ngIRCd server, ideal for hobbyists and businesses. ngIRCd is a popular Open Source IRC server daemon know for its stability and modular design.
This repository caters to users who want to:
- Set up a private IRC server for their community or group.
- Explore ngIRCd administration in a Kubernetes environment.
- Learn about deploying applications on Kubernetes.
To install this software into your Kubernetes cluster, you need the following:
To install the server locally, you need a local Kubernetes cluster such as Minikube. Otherwise, you can use any remote context you may have at your disposal.
For development purposes, you need container orchestration tool such as Podman or Docker.
First, download the repository:
git clone https://github.com/jremes-foss/kube-ngIRCd.git
Then, browse into cloned folder. Manifests are in kube
sub-folder. In this folder, you should apply the Kubernetes manifests in the following order:
- Namespace
- Service
- Deployment
For namespace, please use following syntax below:
kubectl -n namespace-here apply -f ngircd-namespace.yml
For service:
kubectl -n namespace-here apply -f ngircd-service.yml
For deployment:
kubectl -n namespace-here apply -f ngircd-deployment.yml
Dockerfile
is provided in case you wish to provide your own image. Please tag and upload the image to remote repository and change the URL. Link to default ngIRCd image is here. This ngIRCd image is maintained as part of the repository.
This stack is powered by the following software.
- Operating System: Alpine Linux 3.18
- IRC server: ngIRCd 26.1
Main configuration is in ngircd.conf
which sets the default parameters. This file is part of the Dockerfile
. Initially the deployment is configured to use ClusterPort, with 6667/tcp
as a default setting.
Operators (IRC server administrators) must be configured manually. I have automated this process with makeoperator.sh
shell script. This script takes the operator nick as first positional argument and then automatically generates a password with uuidgen
binary. Example below:
./makeoperator.sh administrator
If you want to log in as operator, read the password from ngircd.conf
configuration file and then type in your IRC client after logging to server:
/oper nick password
This elevates your privileges to operator.
Currently, the way to access the IRC server via client is through port-forwarding. Ingress to access the server directly via ingress will be added in later iteration.
In order to gain access to port forwarding, use the following kubectl syntax:
kubectl port-forward pods/pod-here local-port:target-port
Alternatively, you may let kubectl to choose and allocate the local port:
kubectl port-forward pods/pod-here :target-port
In order to connect to the server from outside the cluster, you need to expose the service via following kubectl
syntax.
kubectl -n ngircd expose deployment ngircd --port=6667 --target-port=6667 --type=NodePort --name=ngircd-svc
This project is licensed under the MIT License, please see the LICENSE file for details.
The MIT License is a permissive open-source license that allows for for-profit and non-profit use, redistribution, and modification of the software. By contributing to this project, you agree to the terms of the MIT License.