argo-cd is a free and open-source declarative GitOps CD for Kubernetes. Argo CD automates deployment of applications to Kubernetes clusters using Git repositories as the source of truth
1. Prerequisites
2. Supported Operating Systems
This guide supports installation on:
3. Installation
RHEL/CentOS/Rocky Linux/AlmaLinux
# Install EPEL repository if needed
sudo dnf install -y epel-release
# Install argo-cd
sudo dnf install -y argocd
# Enable and start service
sudo systemctl enable --now argocd-server
# Configure firewall
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
# Verify installation
argocd version
Debian/Ubuntu
# Update package index
sudo apt update
# Install argo-cd
sudo apt install -y argocd
# Enable and start service
sudo systemctl enable --now argocd-server
# Configure firewall
sudo ufw allow 8080
# Verify installation
argocd version
Arch Linux
# Install argo-cd
sudo pacman -S argocd
# Enable and start service
sudo systemctl enable --now argocd-server
# Verify installation
argocd version
Alpine Linux
# Install argo-cd
apk add --no-cache argocd
# Enable and start service
rc-update add argocd-server default
rc-service argocd-server start
# Verify installation
argocd version
openSUSE/SLES
# Install argo-cd
sudo zypper install -y argocd
# Enable and start service
sudo systemctl enable --now argocd-server
# Configure firewall
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
# Verify installation
argocd version
macOS
# Using Homebrew
brew install argocd
# Start service
brew services start argocd
# Verify installation
argocd version
FreeBSD
# Using pkg
pkg install argocd
# Enable in rc.conf
echo 'argocd-server_enable="YES"' >> /etc/rc.conf
# Start service
service argocd-server start
# Verify installation
argocd version
Windows
# Using Chocolatey
choco install argocd
# Or using Scoop
scoop install argocd
# Verify installation
argocd version
Initial Configuration
Basic Configuration
# Create configuration directory
sudo mkdir -p /etc/argocd
# Set up basic configuration
# See official documentation for detailed configuration options
# Test configuration
argocd version
5. Service Management
systemd (RHEL, Debian, Ubuntu, Arch, openSUSE)
# Enable service
sudo systemctl enable argocd-server
# Start service
sudo systemctl start argocd-server
# Stop service
sudo systemctl stop argocd-server
# Restart service
sudo systemctl restart argocd-server
# Check status
sudo systemctl status argocd-server
# View logs
sudo journalctl -u argocd-server -f
OpenRC (Alpine Linux)
# Enable service
rc-update add argocd-server default
# Start service
rc-service argocd-server start
# Stop service
rc-service argocd-server stop
# Restart service
rc-service argocd-server restart
# Check status
rc-service argocd-server status
rc.d (FreeBSD)
# Enable in /etc/rc.conf
echo 'argocd-server_enable="YES"' >> /etc/rc.conf
# Start service
service argocd-server start
# Stop service
service argocd-server stop
# Restart service
service argocd-server restart
# Check status
service argocd-server status
launchd (macOS)
# Using Homebrew services
brew services start argocd
brew services stop argocd
brew services restart argocd
# Check status
brew services list | grep argocd
Windows Service Manager
# Start service
net start argocd-server
# Stop service
net stop argocd-server
# Using PowerShell
Start-Service argocd-server
Stop-Service argocd-server
Restart-Service argocd-server
# Check status
Get-Service argocd-server
Advanced Configuration
See the official documentation for advanced configuration options.
Reverse Proxy Setup
nginx Configuration
upstream argocd_backend {
server 127.0.0.1:8080;
}
server {
listen 80;
server_name argocd.example.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name argocd.example.com;
ssl_certificate /etc/ssl/certs/argocd.example.com.crt;
ssl_certificate_key /etc/ssl/private/argocd.example.com.key;
location / {
proxy_pass http://argocd_backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Apache Configuration
<VirtualHost *:80>
ServerName argocd.example.com
Redirect permanent / https://argocd.example.com/
</VirtualHost>
<VirtualHost *:443>
ServerName argocd.example.com
SSLEngine on
SSLCertificateFile /etc/ssl/certs/argocd.example.com.crt
SSLCertificateKeyFile /etc/ssl/private/argocd.example.com.key
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
</VirtualHost>
HAProxy Configuration
frontend argocd_frontend
bind *:80
bind *:443 ssl crt /etc/ssl/certs/argocd.pem
redirect scheme https if !{ ssl_fc }
default_backend argocd_backend
backend argocd_backend
balance roundrobin
server argocd1 127.0.0.1:8080 check
Security Configuration
Basic Security Setup
# Set appropriate permissions
sudo chown -R argocd:argocd /etc/argocd
sudo chmod 750 /etc/argocd
# Configure firewall
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
# Enable SELinux policies (if applicable)
sudo setsebool -P httpd_can_network_connect on
Database Setup
See official documentation for database configuration requirements.
Performance Optimization
System Tuning
# Basic system tuning
echo 'net.core.somaxconn = 65535' | sudo tee -a /etc/sysctl.conf
echo 'net.ipv4.tcp_max_syn_backlog = 65535' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
Monitoring
Basic Monitoring
# Check service status
sudo systemctl status argocd-server
# View logs
sudo journalctl -u argocd-server -f
# Monitor resource usage
top -p $(pgrep argocd)
9. Backup and Restore
Backup Script
#!/bin/bash
# Basic backup script
BACKUP_DIR="/backup/argocd"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p "$BACKUP_DIR"
tar -czf "$BACKUP_DIR/argocd-backup-$DATE.tar.gz" /etc/argocd /var/lib/argocd
echo "Backup completed: $BACKUP_DIR/argocd-backup-$DATE.tar.gz"
Restore Procedure
# Stop service
sudo systemctl stop argocd-server
# Restore from backup
tar -xzf /backup/argocd/argocd-backup-*.tar.gz -C /
# Start service
sudo systemctl start argocd-server
6. Troubleshooting
Common Issues
1. Service won't start:
# Check logs
sudo journalctl -u argocd-server -n 100
sudo tail -f /var/log/argocd/argocd.log
# Check configuration
argocd version
# Check permissions
ls -la /etc/argocd
2. Connection issues:
# Check if service is listening
sudo ss -tlnp | grep 8080
# Test connectivity
telnet localhost 8080
# Check firewall
sudo firewall-cmd --list-all
3. Performance issues:
# Check resource usage
top -p $(pgrep argocd)
# Check disk I/O
iotop -p $(pgrep argocd)
# Check connections
ss -an | grep 8080
Integration Examples
Docker Compose Example
version: '3.8'
services:
argocd:
image: argocd:latest
ports:
- "8080:8080"
volumes:
- ./config:/etc/argocd
- ./data:/var/lib/argocd
restart: unless-stopped
Maintenance
Update Procedures
# RHEL/CentOS/Rocky/AlmaLinux
sudo dnf update argocd
# Debian/Ubuntu
sudo apt update && sudo apt upgrade argocd
# Arch Linux
sudo pacman -Syu argocd
# Alpine Linux
apk update && apk upgrade argocd
# openSUSE
sudo zypper update argocd
# FreeBSD
pkg update && pkg upgrade argocd
# Always backup before updates
tar -czf /backup/argocd-pre-update-$(date +%Y%m%d).tar.gz /etc/argocd
# Restart after updates
sudo systemctl restart argocd-server
Regular Maintenance
# Log rotation
sudo logrotate -f /etc/logrotate.d/argocd
# Clean old logs
find /var/log/argocd -name "*.log" -mtime +30 -delete
# Check disk usage
du -sh /var/lib/argocd
Additional Resources
---
Note: This guide is part of the HowToMgr collection. Always refer to official documentation for the most up-to-date information.