Add new infra architecture 3
This commit is contained in:
194
Tiltfile
194
Tiltfile
@@ -239,11 +239,10 @@ local_resource(
|
||||
echo "Creating namespaces..."
|
||||
kubectl apply -f infrastructure/namespaces/bakery-ia.yaml
|
||||
kubectl apply -f infrastructure/namespaces/tekton-pipelines.yaml
|
||||
kubectl apply -f infrastructure/namespaces/flux-system.yaml
|
||||
|
||||
# Wait for namespaces to be ready
|
||||
echo "Waiting for namespaces to be ready..."
|
||||
for ns in bakery-ia tekton-pipelines flux-system; do
|
||||
for ns in bakery-ia tekton-pipelines; do
|
||||
until kubectl get namespace $ns 2>/dev/null; do
|
||||
echo "Waiting for namespace $ns to be created..."
|
||||
sleep 2
|
||||
@@ -267,11 +266,10 @@ local_resource(
|
||||
kubectl apply -f infrastructure/platform/storage/minio/minio-secrets.yaml
|
||||
kubectl apply -f infrastructure/platform/storage/minio/secrets/minio-tls-secret.yaml
|
||||
|
||||
# Apply Mail/SMTP secrets
|
||||
kubectl apply -f infrastructure/platform/mail/mailu/mailu-secrets.yaml
|
||||
# Apply Mail/SMTP secrets (already included in common/configs/secrets.yaml)
|
||||
|
||||
# Apply CI/CD secrets
|
||||
kubectl apply -f infrastructure/cicd/tekton/secrets/secrets.yaml
|
||||
kubectl apply -f infrastructure/cicd/tekton-helm/templates/secrets.yaml
|
||||
|
||||
echo "Security configurations applied"
|
||||
''',
|
||||
@@ -482,8 +480,67 @@ k8s_resource('nominatim', labels=['01-infrastructure'])
|
||||
k8s_resource('minio', resource_deps=['security-setup'], labels=['01-infrastructure'])
|
||||
k8s_resource('minio-bucket-init', resource_deps=['minio'], labels=['01-infrastructure'])
|
||||
|
||||
# Mail Infrastructure (Mailu)
|
||||
k8s_resource('mailu-front', resource_deps=['security-setup'], labels=['01-infrastructure'])
|
||||
# Mail Infrastructure (Mailu) - Manual trigger for Helm deployment
|
||||
local_resource(
|
||||
'mailu-helm',
|
||||
cmd='''
|
||||
echo "Deploying Mailu via Helm..."
|
||||
echo ""
|
||||
|
||||
# Check if Mailu is already deployed
|
||||
if helm list -n bakery-ia | grep -q mailu; then
|
||||
echo "Mailu already deployed, checking status..."
|
||||
helm status mailu -n bakery-ia
|
||||
else
|
||||
echo "Installing Mailu..."
|
||||
|
||||
# Add Mailu Helm repository if not already added
|
||||
helm repo add mailu https://mailu.github.io/helm-charts 2>/dev/null || true
|
||||
helm repo update mailu
|
||||
|
||||
# Determine environment (dev or prod) based on context
|
||||
ENVIRONMENT="dev"
|
||||
if [[ "$(kubectl config current-context)" == *"prod"* ]]; then
|
||||
ENVIRONMENT="prod"
|
||||
fi
|
||||
|
||||
echo "Environment detected: $ENVIRONMENT"
|
||||
|
||||
# Install Mailu with appropriate values
|
||||
if [ "$ENVIRONMENT" = "dev" ]; then
|
||||
helm upgrade --install mailu mailu/mailu \
|
||||
-n bakery-ia \
|
||||
--create-namespace \
|
||||
-f infrastructure/platform/mail/mailu-helm/values.yaml \
|
||||
-f infrastructure/platform/mail/mailu-helm/dev/values.yaml \
|
||||
--timeout 10m \
|
||||
--wait
|
||||
else
|
||||
helm upgrade --install mailu mailu/mailu \
|
||||
-n bakery-ia \
|
||||
--create-namespace \
|
||||
-f infrastructure/platform/mail/mailu-helm/values.yaml \
|
||||
-f infrastructure/platform/mail/mailu-helm/prod/values.yaml \
|
||||
--timeout 10m \
|
||||
--wait
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "Mailu deployment completed"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "Mailu Access Information:"
|
||||
echo " Admin Panel: https://mail.[domain]/admin"
|
||||
echo " Webmail: https://mail.[domain]/webmail"
|
||||
echo " SMTP: mail.[domain]:587 (STARTTLS)"
|
||||
echo " IMAP: mail.[domain]:993 (SSL/TLS)"
|
||||
echo ""
|
||||
echo "To check pod status: kubectl get pods -n bakery-ia | grep mailu"
|
||||
''',
|
||||
labels=['01-infrastructure'],
|
||||
auto_init=False, # Manual trigger only
|
||||
)
|
||||
|
||||
# =============================================================================
|
||||
# MONITORING RESOURCES - SigNoz (Unified Observability)
|
||||
@@ -535,6 +592,53 @@ local_resource(
|
||||
auto_init=False,
|
||||
)
|
||||
|
||||
# Deploy Flux CD using Helm with automatic deployment and progress tracking
|
||||
local_resource(
|
||||
'flux-cd-deploy',
|
||||
cmd='''
|
||||
echo "Deploying Flux CD GitOps Toolkit..."
|
||||
echo ""
|
||||
|
||||
# Check if Flux is already deployed
|
||||
if helm list -n flux-system | grep -q flux-cd; then
|
||||
echo "Flux CD already deployed, checking status..."
|
||||
helm status flux-cd -n flux-system
|
||||
else
|
||||
echo "Installing Flux CD..."
|
||||
|
||||
# Install Flux CRDs first if not already installed
|
||||
if ! kubectl get crd gitrepositories.source.toolkit.fluxcd.io >/dev/null 2>&1; then
|
||||
echo "Installing Flux CRDs..."
|
||||
curl -sL https://fluxcd.io/install.sh | sudo bash
|
||||
flux install --namespace=flux-system --network-policy=false
|
||||
fi
|
||||
|
||||
# Create the namespace if it doesn't exist
|
||||
kubectl create namespace flux-system --dry-run=client -o yaml | kubectl apply -f -
|
||||
|
||||
# Install Flux CD with custom values using the local chart
|
||||
helm upgrade --install flux-cd infrastructure/cicd/flux \
|
||||
-n flux-system \
|
||||
--create-namespace \
|
||||
--timeout 10m \
|
||||
--wait
|
||||
|
||||
echo ""
|
||||
echo "Flux CD deployment completed"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "Flux CD Access Information:"
|
||||
echo "To check status: flux check"
|
||||
echo "To check GitRepository: kubectl get gitrepository -n flux-system"
|
||||
echo "To check Kustomization: kubectl get kustomization -n flux-system"
|
||||
echo ""
|
||||
echo "To check pod status: kubectl get pods -n flux-system"
|
||||
''',
|
||||
labels=['99-cicd'],
|
||||
auto_init=False,
|
||||
)
|
||||
|
||||
|
||||
# Optional exporters (in monitoring namespace) - DISABLED since using SigNoz
|
||||
# k8s_resource('node-exporter', labels=['05-monitoring'])
|
||||
@@ -708,11 +812,11 @@ watch_settings(
|
||||
# CI/CD INFRASTRUCTURE - MANUAL TRIGGERS
|
||||
# =============================================================================
|
||||
|
||||
# Tekton Pipelines - Manual trigger for local development
|
||||
# Tekton Pipelines - Manual trigger for local development using Helm
|
||||
local_resource(
|
||||
'tekton-pipelines',
|
||||
cmd='''
|
||||
echo "Setting up Tekton Pipelines for CI/CD..."
|
||||
echo "Setting up Tekton Pipelines for CI/CD using Helm..."
|
||||
echo ""
|
||||
|
||||
# Check if Tekton CRDs are already installed
|
||||
@@ -730,45 +834,29 @@ local_resource(
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "Applying Tekton configurations..."
|
||||
kubectl apply -f infrastructure/cicd/tekton/kustomization.yaml
|
||||
kubectl apply -f infrastructure/cicd/tekton/rbac/
|
||||
kubectl apply -f infrastructure/cicd/tekton/tasks/
|
||||
kubectl apply -f infrastructure/cicd/tekton/pipelines/
|
||||
echo "Installing Tekton configurations via Helm..."
|
||||
|
||||
# Check if Tekton Helm release is already deployed
|
||||
if helm list -n tekton-pipelines | grep -q tekton-cicd; then
|
||||
echo " Updating existing Tekton CICD deployment..."
|
||||
helm upgrade --install tekton-cicd infrastructure/cicd/tekton-helm \
|
||||
-n tekton-pipelines \
|
||||
--create-namespace \
|
||||
--timeout 10m \
|
||||
--wait
|
||||
else
|
||||
echo " Installing new Tekton CICD deployment..."
|
||||
helm upgrade --install tekton-cicd infrastructure/cicd/tekton-helm \
|
||||
-n tekton-pipelines \
|
||||
--create-namespace \
|
||||
--timeout 10m \
|
||||
--wait
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "Tekton setup complete!"
|
||||
echo "To check status: kubectl get pods -n tekton-pipelines"
|
||||
''',
|
||||
labels=['99-cicd'],
|
||||
auto_init=False, # Manual trigger only
|
||||
)
|
||||
|
||||
# Flux CD - Manual trigger for GitOps
|
||||
local_resource(
|
||||
'flux-cd',
|
||||
cmd='''
|
||||
echo "Setting up Flux CD for GitOps..."
|
||||
echo ""
|
||||
|
||||
# Check if Flux CRDs are already installed
|
||||
if kubectl get crd gitrepositories.source.toolkit.fluxcd.io >/dev/null 2>&1; then
|
||||
echo " Flux CRDs already installed"
|
||||
else
|
||||
echo " Installing Flux v2.2.3..."
|
||||
curl -sL https://fluxcd.io/install.sh | sudo bash
|
||||
flux install --version=latest
|
||||
|
||||
echo " Flux installed and ready"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "Applying Flux configurations..."
|
||||
kubectl apply -f infrastructure/cicd/flux/
|
||||
|
||||
echo ""
|
||||
echo "Flux setup complete!"
|
||||
echo "To check status: flux check"
|
||||
echo "To check Helm release: helm status tekton-cicd -n tekton-pipelines"
|
||||
''',
|
||||
labels=['99-cicd'],
|
||||
auto_init=False, # Manual trigger only
|
||||
@@ -781,15 +869,23 @@ local_resource(
|
||||
echo "Setting up Gitea for local Git server..."
|
||||
echo ""
|
||||
|
||||
# Apply Gitea configurations
|
||||
# Create namespace
|
||||
kubectl create namespace gitea || true
|
||||
kubectl apply -f infrastructure/cicd/gitea/
|
||||
|
||||
# Create admin secret first
|
||||
chmod +x infrastructure/cicd/gitea/setup-admin-secret.sh
|
||||
./infrastructure/cicd/gitea/setup-admin-secret.sh
|
||||
|
||||
# Install Gitea using Helm
|
||||
helm repo add gitea https://dl.gitea.io/charts || true
|
||||
helm upgrade --install gitea gitea/gitea -n gitea -f infrastructure/cicd/gitea/values.yaml
|
||||
|
||||
echo ""
|
||||
echo "Gitea setup complete!"
|
||||
echo "Access Gitea at: http://gitea.local (add to /etc/hosts)"
|
||||
echo "Default credentials: admin/admin123 (change after first login)"
|
||||
echo "To check status: kubectl get pods -n gitea"
|
||||
echo "Access Gitea at: http://gitea.bakery-ia.local (for dev) or http://gitea.bakewise.ai (for prod)"
|
||||
echo "Make sure to add the appropriate hostname to /etc/hosts or configure DNS"
|
||||
echo "Check status: kubectl get pods -n gitea"
|
||||
echo "To uninstall: helm uninstall gitea -n gitea"
|
||||
''',
|
||||
labels=['99-cicd'],
|
||||
auto_init=False, # Manual trigger only
|
||||
|
||||
Reference in New Issue
Block a user