This document captures the major issues encountered during the implementation of the project, their root causes, and the solutions applied.
Jenkins service failed immediately after installation.
Failed to start jenkins.service
The latest Jenkins release requires Java 21 while Java 17 was installed on the server.
- Installed OpenJDK 21.
- Restarted the Jenkins service.
sudo systemctl status jenkinsGitHub rejected repository push operations.
File terraform-provider-aws is 760 MB and exceeds GitHub limit.
Terraform provider binaries and state files were accidentally committed.
Added:
.terraform/
*.tfstate
*.tfstate.backup
to .gitignore and removed the files from Git history.
Docker image push failed during Jenkins pipeline execution.
insufficient_scope: authorization failed
The Jenkins user was not authenticated with Docker Hub.
Logged into Docker Hub using:
docker loginunder the Jenkins user account.
Pods failed to start because container images could not be pulled.
ImagePullBackOff
Images were initially built on Apple Silicon architecture and were incompatible with Kubernetes worker nodes.
Rebuilt and pushed Linux compatible images and implemented Jenkins build number tagging.
kubectl commands failed after cluster initialization.
The connection to the server 172.x.x.x:6443 was refused
Control plane services were still initializing.
Verified: - kube-apiserver - etcd - kube-controller-manager - kube-scheduler
until all components became healthy.
Calico networking pods repeatedly crashed.
containerd cgroup driver mismatch.
Enabled:
SystemdCgroup=true
inside /etc/containerd/config.toml.
Restarted:
sudo systemctl restart containerd
sudo systemctl restart kubeletApplication pods continuously restarted on worker nodes.
Worker nodes required the same containerd cgroup configuration as the control plane.
Applied the same containerd configuration to all worker nodes and restarted services.
Pipeline execution failed during parsing.
MultipleCompilationErrorsException
Invalid stage and brace structure inside Jenkinsfile.
Rebuilt the pipeline using valid Declarative Pipeline syntax.
Website changes were not visible after deployment.
Kubernetes reused cached Docker images because a static image tag (v1)
was used.
Implemented dynamic image tagging using Jenkins build numbers:
anshu9103/capstone-website:${BUILD_NUMBER}
Jenkins pipelines only worked when triggered manually.
GitHub webhook integration was not configured.
Configured GitHub Webhooks and enabled:
GitHub hook trigger for GITScm polling
- Infrastructure as Code significantly improves reproducibility.
- Configuration Management removes manual setup errors.
- CI/CD pipelines reduce deployment time and improve consistency.
- Containerization simplifies portability across environments.
- Kubernetes provides scalability and high availability.
- Troubleshooting skills are as important as implementation skills in real-world DevOps environments.
All major issues were successfully resolved and the platform achieved:
- Automated Infrastructure Provisioning
- Automated Configuration Management
- Automated CI/CD Pipeline
- Automated Docker Image Deployment
- Automated Kubernetes Rollout
The project successfully demonstrated an end-to-end DevOps lifecycle implementation.