Files
loc_az_hci/gitops

GitOps Configuration

This directory contains GitOps manifests for Flux to manage infrastructure and applications.

Structure

gitops/
├── infrastructure/    # Base infrastructure (namespaces, RBAC, etc.)
└── apps/             # Application deployments
    ├── besu/
    ├── firefly/
    ├── chainlink/
    ├── blockscout/
    ├── cacti/
    └── nginx-proxy/

Setup Instructions

Prerequisites

  1. Gitea must be configured and accessible
  2. Flux must be installed in the K3s cluster
  3. Git repository must be created in Gitea

Steps

  1. Create Git Repository in Gitea:

  2. Push GitOps Manifests:

    git clone http://192.168.1.121:3000/hc-stack/gitops.git
    cd gitops
    # Copy manifests from this directory
    git add .
    git commit -m "Initial GitOps configuration"
    git push
    
  3. Configure Flux GitRepository:

    ssh ubuntu@192.168.1.188
    export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
    
    # Create GitRepository
    sudo kubectl apply -f - <<EOF
    apiVersion: source.toolkit.fluxcd.io/v1beta2
    kind: GitRepository
    metadata:
      name: gitops-repo
      namespace: flux-system
    spec:
      interval: 1m
      url: http://192.168.1.121:3000/hc-stack/gitops.git
      ref:
        branch: main
    EOF
    
  4. Create Kustomizations:

    # Infrastructure Kustomization
    sudo kubectl apply -f - <<EOF
    apiVersion: kustomize.toolkit.fluxcd.io/v1
    kind: Kustomization
    metadata:
      name: infrastructure
      namespace: flux-system
    spec:
      interval: 5m
      path: ./infrastructure
      prune: true
      sourceRef:
        kind: GitRepository
        name: gitops-repo
    EOF
    
    # Applications Kustomization
    sudo kubectl apply -f - <<EOF
    apiVersion: kustomize.toolkit.fluxcd.io/v1
    kind: Kustomization
    metadata:
      name: applications
      namespace: flux-system
    spec:
      interval: 5m
      path: ./apps
      prune: true
      sourceRef:
        kind: GitRepository
        name: gitops-repo
    EOF
    
  5. Monitor Reconciliation:

    sudo kubectl get gitrepository -n flux-system
    sudo kubectl get kustomization -n flux-system
    sudo kubectl logs -n flux-system -l app=kustomize-controller -f
    

Notes

  • If Gitea requires authentication, create a secret:

    sudo kubectl create secret generic gitops-repo-auth \
      --from-literal=username=<username> \
      --from-literal=password=<token> \
      -n flux-system
    

    Then update GitRepository to reference the secret:

    spec:
      secretRef:
        name: gitops-repo-auth