2021
[Raspberry Pi] CI/CD Pipeline on Pi Cluster (IV)
In the fourth part of my Raspberry Pi CI/CD pipeline series, I integrated SonarQube into the workflow for continuous code quality and security. I installed SonarQube on my Raspberry Pi Cluster, utilizing a custom Docker image. Additionally, I replaced Gitea with Gitlab for enhanced compatibility with SonarQube. I built and deployed Gitlab on the cluster, managing persistent storage with Longhorn volumes. For seamless integration, I configured Gitlab settings, created a Jenkins user, and set up access tokens. Lastly, I prepared Jenkins by installing necessary plugins and establishing connections with Gitlab. The result is an extended CI/CD pipeline with SonarQube, Jenkins, and Gitlab on a Raspberry Pi Cluster.
2021
[Raspberry Pi] CI/CD Pipeline on Pi Cluster (III)
In the third part of my Raspberry Pi CI/CD pipeline series, I incorporated JFrog Container Registry. Following the previous guide, I installed the registry, configured Docker images, and set up Longhorn volumes. Configuring the JFrog Container Registry involved adding local repositories, setting permissions, and configuring HTTP settings. I demonstrated testing the registry with Docker login and pushing an image. For Kubernetes integration, I created registry secrets and updated deployment files. The result is a complete CI/CD pipeline on a Raspberry Pi Cluster with JFrog Container Registry supporting Docker images. Optional Jenkins configuration is provided for maven-agent support.
2021
[Raspberry Pi] CI/CD Pipeline on Pi Cluster (II)
In the second installment of my Raspberry Pi CI/CD pipeline series, I seamlessly integrated JFrog Artifactory. Following the groundwork laid in [Part I], I extended the pipeline by configuring Maven-agent for Longhorn volume mounting, building a Raspberry Pi-compatible Artifactory Docker image, and configuring Artifactory. I demonstrated the process of creating permissions, Maven settings, and deploying JAR files. The integration with Jenkins involved plugin installation, settings configuration, and Jenkinsfile creation for artifact deployment. The result is a robust CI/CD pipeline on a Raspberry Pi Cluster, efficiently deploying artifacts to Artifactory. Troubleshooting tips address Longhorn volume stability and Jenkins volume permission issues.
2021
[Raspberry Pi] CI/CD Pipeline on Pi Cluster (I)
In this series, I documented my journey building a CI/CD pipeline on a Raspberry Pi Cluster, featuring 3 master and 1 worker nodes, all housed in a custom LEGO structure. The setup includes tools like Metallb for load balancing, along with specific volumes for MySQL, Gitea, Jenkins, and Maven-agent. I detailed the installation processes for MySQL, Gitea, Jenkins, and Maven-agent, complete with YAML deployment files. The configuration steps for Jenkins, both for Kubernetes and Gitea integration, were outlined. The troubleshooting section covers issues related to Kubernetes connection errors and finding the Jenkins initial admin password. The final result showcases a functional CI/CD pipeline: when code is committed, it triggers the CI pipeline, with the Maven-agent building and compiling the code successfully.
2021
[Raspberry Pi] Pi Cluster with Longhorn
I documented my journey setting up a Raspberry Pi Cluster with Longhorn for simplified cloud-native persistent block storage. The process took 30 minutes and assumed a functional Raspberry Pi Cluster. I prepared the environment by installing Helm, Calico CLI, and optionally, Kubernetes Dashboard. Then, I detailed the installation of Longhorn with Helm, including verification steps. Accessing Longhorn involved port-forwarding to the frontend service. The result: a highly available persistent storage solution for my Raspberry Pi Cluster, as depicted in the Longhorn dashboard. I addressed troubleshooting issues related to Calico and Longhorn uninstallation, ensuring a smooth experience.
2021
[Raspberry Pi] K8s Pi Cluster with Ansible
I documented my journey configuring a Kubernetes Cluster on a Raspberry Pi using Ansible, totaling 50 minutes. I deployed three Raspberry Pi 4 Model B 8GB as master nodes and one Raspberry Pi 3 Model B as a worker. After installing Ansible, Flash, and kubectl, I prepared the SD cards with customized cloud-config.yml files. Ansible inventory was configured accordingly. Additional SSH and system adjustments were made on each node. Customizations were applied, and the Kubernetes cluster setup was initiated using the Ansible playbook. Troubleshooting tips were provided for potential issues. Finally, the Kubernetes Pi Cluster with Ansible was ready for use.