This repository contains the GitOps configurations and Helm charts for the Instavote application stack. It works in conjunction with the platform configuration repository to provide a complete multi-tenant deployment solution.
The Instavote application consists of multiple microservices deployed across different environments using ArgoCD and Helm. This repository contains the application-specific configurations and Helm charts, while platform-level configurations are maintained in the instavote-platform-config repository.
instavote-gitops/
├── charts/
│ ├── vote/ # Vote frontend service
│ │ ├── Chart.yaml
│ │ ├── values.yaml
│ │ ├── templates/
│ │ │ ├── rollout.yaml # Argo Rollouts configuration
│ │ │ ├── service.yaml # Main service
│ │ │ └── preview-service.yaml # Preview service for blue/green
│ │ └── env/
│ │ ├── dev.yaml # Dev environment values
│ │ ├── staging.yaml # Staging environment values
│ │ └── prod.yaml # Production environment values
│ └── redis/ # Redis service
│ ├── Chart.yaml
│ ├── values.yaml
│ ├── templates/
│ │ ├── deployment.yaml
│ │ └── service.yaml
│ └── env/
│ ├── dev.yaml
│ ├── staging.yaml
│ └── prod.yaml
└── docs/ # Additional documentation
└── architecture.md # Architecture documentation
The vote application is the frontend service that allows users to cast votes.
- Blue/Green deployment using Argo Rollouts
- Configurable resource limits
- Health checks and probes
- Service mesh integration ready
Key configuration parameters in values.yaml
:
replicaCount: 4
image:
repository: schoolofdevops/vote
tag: v2
pullPolicy: Always
resources:
requests:
cpu: "50m"
memory: "64Mi"
limits:
cpu: "250m"
memory: "128Mi"
Redis serves as the in-memory database for storing vote data.
- Standalone Redis instance
- Configurable persistence
- Resource management
- Security configurations
Each service has environment-specific values stored in the env/
directory:
dev.yaml
: Development environment configurationsstaging.yaml
: Staging environment configurationsprod.yaml
: Production environment configurations
- Kubernetes cluster
- ArgoCD v2.8 or later
- Access to the platform configuration repository
- Helm v3
The deployment is managed by ArgoCD ApplicationSets defined in the platform configuration repository. The ApplicationSet controller automatically creates ArgoCD Applications for each service in each environment.
Refer to the platform configuration repository for:
- Tenant configurations
- RBAC settings
- Network policies
- Resource quotas
- ApplicationSet definitions
- Create a new directory under
charts/
- Initialize Helm chart structure:
helm create charts/new-service
- Add environment-specific values in
env/
- Update platform repository ApplicationSet if needed
- Create a feature branch
- Make changes to relevant Helm chart or values
- Test in development environment
- Submit pull request
- After approval, changes will be automatically deployed by ArgoCD
-
Local Development:
# Test Helm chart locally helm template charts/vote -f charts/vote/env/dev.yaml # Lint chart helm lint charts/vote
-
Testing:
# Validate manifests kubectl apply --dry-run=client -f <generated-manifests>
- Fork the repository
- Create a feature branch
- Make changes
- Submit pull request
- Ensure CI checks pass
Common issues and solutions:
-
Sync Failures:
- Check Helm chart validity
- Verify environment values
- Check resource quotas
-
Deployment Issues:
- Validate resource requests/limits
- Check container image availability
- Verify network policies
Copyright 2025 Gourav Shah, Initcron Systems Private Limited (School of Devops)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
- Author: Gourav Shah
- Organization: Initcron Systems Private Limited (School of Devops)
- Website: https://www.schoolofdevops.com