Commit d49c54bc authored by Sergio Gimenez's avatar Sergio Gimenez
Browse files

[WIP] Deploy i2edge using ansible

parent a5b53a10
Loading
Loading
Loading
Loading
+9 −7
Original line number Diff line number Diff line
@@ -12,16 +12,18 @@ This directory contains Ansible playbooks and roles for automating the deploymen
- **kubectl**: Installed (for cluster verification)

### Install Ansible

Install Python virtual environment

```bash
# Ubuntu/Debian
sudo apt update
sudo apt install ansible python3-pip
sudo apt install python3-virtualenv
```

# or using pip
pip3 install ansible

# Verify installation
ansible --version

```bash
source venv/bin/activate  # Activate your Python virtual environment
pip install ansible
```

### Install Required Collections
+12 −0
Original line number Diff line number Diff line
@@ -12,6 +12,18 @@ nodes:
          - "localhost"
          - "127.0.0.1"
    extraPortMappings:
      - containerPort: 6443
        hostPort: 6443
        listenAddress: "0.0.0.0"
        protocol: TCP
      - containerPort: 30090
        hostPort: 30090
        listenAddress: "0.0.0.0"
        protocol: TCP
      - containerPort: 30769
        hostPort: 30769
        listenAddress: "0.0.0.0"
        protocol: TCP
  - role: worker
  - role: worker
containerdConfigPatches:
+41 −0
Original line number Diff line number Diff line
---
# NodeFeature resources for custom node labels
apiVersion: nfd.k8s-sigs.io/v1alpha1
kind: NodeFeature
metadata:
  labels:
    nfd.node.kubernetes.io/node-name: operator-platform-control-plane
  name: features-operator-platform-control-plane
  namespace: extra-node-feature
spec:
  labels:
    feature.node.kubernetes.io/zoneID: "Omega12345"
    feature.node.kubernetes.io/geolocation: "p41.388043_p2.114966"
    feature.node.kubernetes.io/geographyDetails: "university_city_env"
---
apiVersion: nfd.k8s-sigs.io/v1alpha1
kind: NodeFeature
metadata:
  labels:
    nfd.node.kubernetes.io/node-name: operator-platform-worker
  name: features-operator-platform-worker
  namespace: extra-node-feature
spec:
  labels:
    feature.node.kubernetes.io/zoneID: "Omega12345"
    feature.node.kubernetes.io/geolocation: "p41.388043_p2.114966"
    feature.node.kubernetes.io/geographyDetails: "university_city_env"
---
apiVersion: nfd.k8s-sigs.io/v1alpha1
kind: NodeFeature
metadata:
  labels:
    nfd.node.kubernetes.io/node-name: operator-platform-worker2
  name: features-operator-platform-worker2
  namespace: extra-node-feature
spec:
  labels:
    feature.node.kubernetes.io/zoneID: "Omega12345"
    feature.node.kubernetes.io/geolocation: "p41.388043_p2.114966"
    feature.node.kubernetes.io/geographyDetails: "university_city_env"
---
+180 −0
Original line number Diff line number Diff line
fullnameOverride: prometheus

defaultRules:
  create: true
  rules:
    alertmanager: true
    etcd: true
    configReloaders: true
    general: true
    k8s: true
    kubeApiserverAvailability: true
    kubeApiserverBurnrate: true
    kubeApiserverHistogram: true
    kubeApiserverSlos: true
    kubelet: true
    kubeProxy: true
    kubePrometheusGeneral: true
    kubePrometheusNodeRecording: true
    kubernetesApps: true
    kubernetesResources: true
    kubernetesStorage: true
    kubernetesSystem: true
    kubeScheduler: true
    kubeStateMetrics: true
    network: true
    node: true
    nodeExporterAlerting: true
    nodeExporterRecording: true
    prometheus: true
    prometheusOperator: true

alertmanager:
  fullnameOverride: alertmanager
  enabled: true
  ingress:
    enabled: false

grafana:
  enabled: true
  fullnameOverride: grafana
  forceDeployDatasources: false
  forceDeployDashboards: false
  defaultDashboardsEnabled: true
  defaultDashboardsTimezone: utc
  serviceMonitor:
    enabled: true
  admin:
    existingSecret: grafana-admin-credentials
    userKey: admin-user
    passwordKey: admin-password

kubeApiServer:
  enabled: true

kubelet:
  enabled: true
  serviceMonitor:
    metricRelabelings:
      - action: replace
        sourceLabels:
          - node
        targetLabel: instance

kubeControllerManager:
  enabled: true
  endpoints:
    - 172.26.0.4

coreDns:
  enabled: true

kubeDns:
  enabled: false

kubeEtcd:
  enabled: true
  endpoints:
    - 172.26.0.4
  service:
    enabled: true
    port: 2381
    targetPort: 2381

kubeScheduler:
  enabled: true
  endpoints:
    - 172.26.0.4

kubeProxy:
  enabled: true
  endpoints:
    - 172.26.0.4
    - 172.26.0.3
    - 172.26.0.2

kubeStateMetrics:
  enabled: true

kube-state-metrics:
  fullnameOverride: kube-state-metrics
  selfMonitor:
    enabled: true
  prometheus:
    monitor:
      enabled: true
      relabelings:
        - action: replace
          regex: (.*)
          replacement: $1
          sourceLabels:
            - __meta_kubernetes_pod_node_name
          targetLabel: kubernetes_node

nodeExporter:
  enabled: true
  serviceMonitor:
    relabelings:
      - action: replace
        regex: (.*)
        replacement: $1
        sourceLabels:
          - __meta_kubernetes_pod_node_name
        targetLabel: kubernetes_node

prometheus-node-exporter:
  fullnameOverride: node-exporter
  podLabels:
    jobLabel: node-exporter
  extraArgs:
    - --collector.filesystem.mount-points-exclude=^/(dev|proc|sys|var/lib/docker/.+|var/lib/kubelet/.+)($|/)
    - --collector.filesystem.fs-types-exclude=^(autofs|binfmt_misc|bpf|cgroup2?|configfs|debugfs|devpts|devtmpfs|fusectl|hugetlbfs|iso9660|mqueue|nsfs|overlay|proc|procfs|pstore|rpc_pipefs|securityfs|selinuxfs|squashfs|sysfs|tracefs)$
  service:
    portName: http-metrics
  prometheus:
    monitor:
      enabled: true
      relabelings:
        - action: replace
          regex: (.*)
          replacement: $1
          sourceLabels:
            - __meta_kubernetes_pod_node_name
          targetLabel: kubernetes_node
  resources:
    requests:
      memory: 512Mi
      cpu: 250m
    limits:
      memory: 2048Mi

prometheusOperator:
  enabled: true
  prometheusConfigReloader:
    resources:
      requests:
        cpu: 200m
        memory: 50Mi
      limits:
        memory: 100Mi

prometheus:
  enabled: true
  service:
    type: NodePort
    nodePort: 30090
  prometheusSpec:
    replicas: 1
    replicaExternalLabelName: "replica"
    ruleSelectorNilUsesHelmValues: false
    serviceMonitorSelectorNilUsesHelmValues: false
    podMonitorSelectorNilUsesHelmValues: false
    probeSelectorNilUsesHelmValues: false
    retention: 15d
    enableAdminAPI: true
    walCompression: true
    scrapeInterval: 30s
    evaluationInterval: 30s

thanosRuler:
  enabled: false
+80 −6
Original line number Diff line number Diff line
@@ -18,18 +18,15 @@ api_server_port: 6443

# Port mappings
port_mappings:
  - name: kubernetes-api
    container_port: 6443
  - container_port: 6443
    host_port: 6443
    listen_address: "0.0.0.0"
    protocol: TCP
  - name: prometheus
    container_port: 30090
  - container_port: 30090
    host_port: 30090
    listen_address: "0.0.0.0"
    protocol: TCP
  - name: i2edge-service
    container_port: 30769
  - container_port: 30769
    host_port: 30769
    listen_address: "0.0.0.0"
    protocol: TCP
@@ -49,3 +46,80 @@ kubeconfig_server_host: "localhost" # Change to your host IP for remote access (
kubeconfig_server_url: "https://{{ kubeconfig_server_host }}:6443"
kubeconfig_output_dir: "{{ op_automation_base }}/automation/1-kind-cluster"
kubeconfig_filename: operator-platform-external-kubeconfig.yaml

# ==========================================
# i2edge Dependencies Configuration
# ==========================================

# Helm configuration
helm_version: v3.13.0
helm_install_script_url: https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
helm_binary_path: /usr/local/bin/helm
helm_force_reinstall: false

# Prometheus configuration
prometheus_namespace: monitoring
prometheus_release_name: prometheus
prometheus_chart: prometheus-community/kube-prometheus-stack
prometheus_nodeport: 30090
prometheus_retention: 15d
prometheus_storage_size: 10Gi
prometheus_install_timeout: 300
prometheus_ready_timeout: 300

# Grafana credentials
grafana_admin_user: admin
grafana_admin_password: admin
grafana_credentials_secret_name: grafana-admin-credentials

# Prometheus endpoints (auto-discovered if empty)
prometheus_control_plane_ips: []
prometheus_worker_ips: []

# Node Feature Discovery configuration
nfd_version: v0.16.2
nfd_namespace: node-feature-discovery
nfd_custom_namespace: extra-node-feature
nfd_ready_timeout: 300
nfd_apply_custom_labels: true

# Custom node labels
nfd_custom_labels:
  zoneID: "Omega12345"
  geolocation: "p41.388043_p2.114966"
  geographyDetails: "university_city_env"

# ==========================================
# i2edge Application Configuration
# ==========================================

# i2edge paths
i2edge_path: "{{ i2edge_base_path }}"
i2edge_image: i2edge:develop
i2edge_namespace: i2edge

# Deployment settings
i2edge_deploy_timeout: 180
i2edge_ready_delay: 5
i2edge_image_load_retries: 2

# Storage configuration
i2edge_storage_base: /opt/i2edge
i2edge_storage_dirs:
  - artefactfile
  - charts
  - conffile
  - deployedartefacts
  - smdbdata

# Build options
i2edge_rebuild_image: false
i2edge_skip_build: false

# Cleanup options
i2edge_cleanup_storage: true
i2edge_remove_docker_image: false

# Verification
i2edge_verify_deployments: true
i2edge_handle_image_pull_errors: true
Loading