-
Notifications
You must be signed in to change notification settings - Fork 19
[ITEP:83537] Orchestrator Component Status Service #1322
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
bbd3108
c893c5b
c3c7556
fb9ea56
0f25811
a5fbbe2
558d0e1
a02278e
086344a
6fb631e
70bc334
79df439
126e3b7
3aa4ca2
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,8 @@ | ||
| # SPDX-FileCopyrightText: 2025 Intel Corporation | ||
| # | ||
| # SPDX-License-Identifier: Apache-2.0 | ||
|
|
||
| # Component status service configuration | ||
| # This will be populated by the installer based on which features are enabled | ||
|
|
||
| resources: null |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,149 @@ | ||
| # SPDX-FileCopyrightText: 2025 Intel Corporation | ||
| # | ||
| # SPDX-License-Identifier: Apache-2.0 | ||
|
|
||
| image: | ||
| registry: {{.Values.argo.containerRegistryURL }} | ||
| repository: common/component-status | ||
| imagePullSecrets: | ||
| {{- with .Values.argo.imagePullSecrets }} | ||
| {{- toYaml . | nindent 2 }} | ||
| {{- end }} | ||
|
|
||
| {{- with .Values.argo.resources.componentStatus }} | ||
| resources: | ||
| {{- toYaml . | nindent 2 }} | ||
| {{- end }} | ||
|
|
||
| # Traefik IngressRoute configuration | ||
| # Priority must be > 30 to override nexus-api-gw's generic /v route (priority 30) | ||
| traefikRoute: | ||
| enabled: true | ||
| matchHost: "Host(`api.{{ .Values.argo.clusterDomain }}`)" | ||
| matchPath: "PathPrefix(`/v1/orchestrator`)" | ||
| priority: 40 | ||
| namespace: orch-gateway | ||
| secretName: tls-orch | ||
| middlewares: | ||
| - validate-jwt | ||
| - secure-headers | ||
| {{- if .Values.argo.traefik }} | ||
| tlsOption: {{ .Values.argo.traefik.tlsOption | default "" | quote }} | ||
| {{- end }} | ||
|
|
||
| # Component status configuration | ||
| # This configuration reflects which features are ACTUALLY installed in the orchestrator | ||
| # Detection method - Checks which profile files are loaded in root-app | ||
| componentStatus: | ||
| schema-version: "1.0" | ||
| orchestrator: | ||
| version: {{ .Values.argo.orchestratorVersion | default .Chart.Version | quote }} | ||
| features: | ||
| # Application Orchestration - Enabled when app-orch profile is loaded | ||
| # Detection - enable-app-orch.yaml in root-app valueFiles | ||
| application-orchestration: | ||
| installed: {{ index .Values.argo.enabled "app-orch-catalog" | default false }} | ||
|
|
||
| # Cluster Orchestration - Enabled when cluster-orch profile is loaded | ||
| # Detection - enable-cluster-orch.yaml in root-app valueFiles | ||
| cluster-orchestration: | ||
| installed: {{ index .Values.argo.enabled "cluster-manager" | default false }} | ||
|
|
||
| # Cluster management core API and lifecycle operations | ||
| cluster-management: | ||
| installed: {{ index .Values.argo.enabled "cluster-manager" | default false }} | ||
|
|
||
| # CAPI (Cluster API) integration for declarative cluster management | ||
| capi: | ||
| installed: {{ index .Values.argo.enabled "capi-operator" | default false }} | ||
|
|
||
| # Infrastructure provider for Intel platforms | ||
| intel-provider: | ||
| installed: {{ index .Values.argo.enabled "intel-infra-provider" | default false }} | ||
|
|
||
| # Edge Infrastructure Manager - Enabled when edge-infra profile is loaded | ||
| # Detection - enable-edgeinfra.yaml in root-app valueFiles | ||
| # EIM is NOT broken down at app level (all workflows need core+managers+onboarding) | ||
| # Instead, different APIs/managers/configs enable different workflow-level capabilities | ||
| # Hierarchical fallback - CLI checks sub-feature first, falls back to parent if not found | ||
| edge-infrastructure-manager: | ||
| installed: {{ or (index .Values.argo.enabled "infra-core") (index .Values.argo.enabled "infra-managers") (index .Values.argo.enabled "infra-onboarding") (index .Values.argo.enabled "infra-external") | default false }} | ||
guptagunjan marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
| # Day2 - Day 2 operations (maintenance, updates, troubleshooting) | ||
| # Detection - maintenance-manager is configured in infra-managers | ||
| day2: | ||
| installed: {{ if hasKey .Values.argo "infra-managers" }}{{ $infraManagers := index .Values.argo "infra-managers" }}{{ if hasKey $infraManagers "maintenance-manager" }}true{{ else }}false{{ end }}{{ else }}false{{ end }} | ||
|
|
||
| # Onboarding - Device discovery, registration, and enrollment workflow | ||
| # Detection - onboarding-manager is configured and enabled in infra-onboarding | ||
| onboarding: | ||
| installed: {{ if hasKey .Values.argo "infra-onboarding" }}{{ $infraOnboarding := index .Values.argo "infra-onboarding" }}{{ if hasKey $infraOnboarding "onboarding-manager" }}{{ $onboardingMgr := index $infraOnboarding "onboarding-manager" }}{{ $onboardingMgr.enabled | default false }}{{ else }}false{{ end }}{{ else }}false{{ end }} | ||
|
|
||
| # OOB (Out-of-Band) - vPRO/AMT management capabilities | ||
| # Detection - AMT is configured in infra-external (vPRO/AMT managers deployed) | ||
| oob: | ||
| installed: {{ if and (index .Values.argo.enabled "infra-external" | default false) (hasKey .Values.argo "infra-external") }}{{ $infraExternal := index .Values.argo "infra-external" }}{{ if hasKey $infraExternal "import" }}{{ if hasKey $infraExternal.import "amt" }}{{ $infraExternal.import.amt.enabled | default false }}{{ else }}false{{ end }}{{ else }}false{{ end }}{{ else }}false{{ end }} | ||
|
|
||
| # Provisioning - Automatic OS provisioning workflow | ||
| # Detection - autoProvision is enabled in infra-managers (os-resource-manager handles automatic provisioning) | ||
| provisioning: | ||
| installed: {{ if and (index .Values.argo.enabled "infra-managers" | default false) (hasKey .Values.argo "infra-managers") }}{{ $infraManagers := index .Values.argo "infra-managers" }}{{ if hasKey $infraManagers "autoProvision" }}{{ $infraManagers.autoProvision.enabled | default false }}{{ else }}false{{ end }}{{ else }}false{{ end }} | ||
|
|
||
| # Observability - Enabled when o11y profile is loaded | ||
| # Detection - enable-o11y.yaml in root-app valueFiles | ||
| observability: | ||
| installed: {{ index .Values.argo.enabled "orchestrator-observability" | default false }} | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Since orchestrator and edge node observability pipelines are separate and can be deployed independently of each other, instead of having observability shown as installed if one pipeline is enabled, we should have separate status checks for each pipelines, e.g. Using a single status to cover both pipeline statuses will cause confusion on which pipeline is enabled if only the |
||
|
|
||
| # Metrics collection and monitoring for orchestrator components | ||
| orchestrator-monitoring: | ||
| installed: {{ index .Values.argo.enabled "orchestrator-observability" | default false }} | ||
|
|
||
| # Metrics collection and monitoring for edge nodes | ||
| edge-node-monitoring: | ||
| installed: {{ index .Values.argo.enabled "edgenode-observability" | default false }} | ||
|
|
||
| # Pre-built dashboards for orchestrator metrics | ||
| orchestrator-dashboards: | ||
| installed: {{ index .Values.argo.enabled "orchestrator-dashboards" | default false }} | ||
|
|
||
| # Pre-built dashboards for edge node metrics | ||
| edge-node-dashboards: | ||
| installed: {{ index .Values.argo.enabled "edgenode-dashboards" | default false }} | ||
|
|
||
| # Alerting and monitoring rules | ||
| alerting: | ||
| installed: {{ index .Values.argo.enabled "alerting-monitor" | default false }} | ||
|
|
||
| # Web UI - Enabled when full-ui profile is loaded | ||
| # Detection - enable-full-ui.yaml in root-app valueFiles | ||
| web-ui: | ||
| installed: {{ or (index .Values.argo.enabled "web-ui-root") (index .Values.argo.enabled "web-ui-app-orch") (index .Values.argo.enabled "web-ui-cluster-orch") (index .Values.argo.enabled "web-ui-infra") | default false }} | ||
| orchestrator-ui-root: | ||
| installed: {{ index .Values.argo.enabled "web-ui-root" | default false }} | ||
| application-orchestration-ui: | ||
| installed: {{ index .Values.argo.enabled "web-ui-app-orch" | default false }} | ||
| cluster-orchestration-ui: | ||
| installed: {{ index .Values.argo.enabled "web-ui-cluster-orch" | default false }} | ||
| infrastructure-ui: | ||
| installed: {{ index .Values.argo.enabled "web-ui-infra" | default false }} | ||
|
|
||
| # Multitenancy - Tenancy services (tenancy-manager, tenancy-api-mapping, tenancy-datamodel) | ||
| # are always deployed as part of root-app, so multitenancy is always enabled | ||
| # The default-tenant-only sub-feature indicates single-tenant mode (when defaultTenancy profile is loaded) | ||
| multitenancy: | ||
| installed: true | ||
| default-tenant-only: | ||
| installed: {{ index .Values.argo.enabled "defaultTenancy" | default false }} | ||
|
|
||
| # Kyverno - Policy engine for Kubernetes admission control and governance | ||
| # Detection - enable-kyverno.yaml in root-app valueFiles | ||
| kyverno: | ||
| installed: {{ index .Values.argo.enabled "kyverno" | default false }} | ||
|
|
||
| # Kyverno policy engine core | ||
| policy-engine: | ||
| installed: {{ index .Values.argo.enabled "kyverno" | default false }} | ||
|
|
||
| # Pre-defined security and governance policies | ||
| policies: | ||
| installed: {{ index .Values.argo.enabled "kyverno-policy" | default false }} | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,52 @@ | ||
| # SPDX-FileCopyrightText: 2025 Intel Corporation | ||
| # | ||
| # SPDX-License-Identifier: Apache-2.0 | ||
|
|
||
| {{- $appName := "component-status" }} | ||
| {{- $namespace := "orch-platform" }} | ||
| {{- $syncWave := "2000" }} | ||
| --- | ||
| {{- if (index .Values.argo.enabled $appName) }} | ||
| apiVersion: argoproj.io/v1alpha1 | ||
| kind: Application | ||
| metadata: | ||
| annotations: | ||
| argocd.argoproj.io/sync-wave: "{{ $syncWave }}" | ||
| name: {{$appName}} | ||
| namespace: {{ required "A valid namespace entry required!" .Values.argo.namespace }} | ||
| finalizers: | ||
| - resources-finalizer.argocd.argoproj.io | ||
| spec: | ||
| project: {{ required "A valid projectName entry required!" .Values.argo.project }} | ||
| sources: | ||
| - repoURL: {{ required "A valid chartRepoURL entry required!" .Values.argo.chartRepoURL }} | ||
| chart: common/charts/{{$appName}} | ||
| targetRevision: 26.0.3 | ||
| helm: | ||
| releaseName: {{$appName}} | ||
| valuesObject: | ||
| {{- $customFile := printf "custom/%s.tpl" $appName }} | ||
| {{- $customConfig := tpl (.Files.Get $customFile) . | fromYaml }} | ||
| {{- $baseFile := printf "configs/%s.yaml" $appName }} | ||
| {{- $baseConfig := .Files.Get $baseFile|fromYaml}} | ||
| {{- $overwrite := (get .Values.postCustomTemplateOverwrite $appName ) | default dict }} | ||
| {{- mergeOverwrite $baseConfig $customConfig $overwrite | toYaml | nindent 10 }} | ||
| destination: | ||
| namespace: {{$namespace}} | ||
| server: {{ required "A valid targetServer entry required!" .Values.argo.targetServer }} | ||
| syncPolicy: | ||
| {{- if .Values.argo.autosync }} | ||
| automated: | ||
| prune: true | ||
| selfHeal: true | ||
| retry: | ||
| limit: 5 | ||
| backoff: | ||
| duration: 5s | ||
| maxDuration: 3m0s | ||
| factor: 2 | ||
| {{- end }} | ||
| syncOptions: | ||
| - CreateNamespace=true | ||
| - ApplyOutOfSyncOnly=true | ||
| {{- end }} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This plus the
cluster-managementcheck are on the same setting but if only capi is installed then the status service will say that cluster-orchestration is disabled. Shouldn't the check here be to see if anycluster-management,capiorintel-providerare installed and, if at least one is enabled, thencluster-orchestrationis considered enabled?