Loading ansible/README.md +9 −7 Changes for ansible/README.md: 9 added lines, 7 removed lines. Original line number Diff line number Diff line Loading @@ -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 Loading ansible/automation/1-kind-cluster/kind-config.yaml +12 −0 Changes for ansible/automation/1-kind-cluster/kind-config.yaml: 12 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -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: Loading ansible/automation/1-kind-cluster/nfd-node-labels.yaml 0 → 100644 +41 −0 Changes for ansible/automation/1-kind-cluster/nfd-node-labels.yaml: 41 added lines, 0 removed lines. 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" --- ansible/automation/1-kind-cluster/prometheus-values.yaml 0 → 100644 +180 −0 Changes for ansible/automation/1-kind-cluster/prometheus-values.yaml: 180 added lines, 0 removed lines. 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 ansible/group_vars/all.yml +80 −6 Changes for ansible/group_vars/all.yml: 80 added lines, 6 removed lines. Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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
ansible/README.md +9 −7 Changes for ansible/README.md: 9 added lines, 7 removed lines. Original line number Diff line number Diff line Loading @@ -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 Loading
ansible/automation/1-kind-cluster/kind-config.yaml +12 −0 Changes for ansible/automation/1-kind-cluster/kind-config.yaml: 12 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -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: Loading
ansible/automation/1-kind-cluster/nfd-node-labels.yaml 0 → 100644 +41 −0 Changes for ansible/automation/1-kind-cluster/nfd-node-labels.yaml: 41 added lines, 0 removed lines. 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" ---
ansible/automation/1-kind-cluster/prometheus-values.yaml 0 → 100644 +180 −0 Changes for ansible/automation/1-kind-cluster/prometheus-values.yaml: 180 added lines, 0 removed lines. 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
ansible/group_vars/all.yml +80 −6 Changes for ansible/group_vars/all.yml: 80 added lines, 6 removed lines. Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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