Skip to content

Commit 6a77f26

Browse files
Merge pull request #5309 from pmtk/healthcheck-optionals
USHIFT-5204: Healthcheck: Detect and wait for optional MicroShift workloads
2 parents 6f8ac55 + 0a2d0dd commit 6a77f26

10 files changed

+85
-196
lines changed

packaging/greenboot/microshift-running-check-ai-model-serving.sh

Lines changed: 0 additions & 38 deletions
This file was deleted.

packaging/greenboot/microshift-running-check-cert-manager.sh

Lines changed: 0 additions & 37 deletions
This file was deleted.

packaging/greenboot/microshift-running-check-gateway-api.sh

Lines changed: 0 additions & 37 deletions
This file was deleted.

packaging/greenboot/microshift-running-check-multus.sh

Lines changed: 0 additions & 37 deletions
This file was deleted.

packaging/greenboot/microshift-running-check-olm.sh

Lines changed: 0 additions & 37 deletions
This file was deleted.

packaging/rpm/microshift.spec

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -420,7 +420,6 @@ install -d -m755 %{buildroot}/%{_prefix}/lib/microshift/manifests.d/001-microshi
420420
# Copy all the OLM manifests except the arch specific ones
421421
install -p -m644 assets/optional/operator-lifecycle-manager/0000* %{buildroot}/%{_prefix}/lib/microshift/manifests.d/001-microshift-olm
422422
install -p -m644 assets/optional/operator-lifecycle-manager/kustomization.yaml %{buildroot}/%{_prefix}/lib/microshift/manifests.d/001-microshift-olm
423-
install -p -m755 packaging/greenboot/microshift-running-check-olm.sh %{buildroot}%{_sysconfdir}/greenboot/check/required.d/50_microshift_running_check_olm.sh
424423

425424
%ifarch %{arm} aarch64
426425
cat assets/optional/operator-lifecycle-manager/kustomization.aarch64.yaml >> %{buildroot}/%{_prefix}/lib/microshift/manifests.d/001-microshift-olm/kustomization.yaml
@@ -437,7 +436,6 @@ install -p -m644 assets/optional/operator-lifecycle-manager/release-olm-{x86_64,
437436
# multus
438437
install -d -m755 %{buildroot}%{_sysconfdir}/microshift/config.d
439438
install -p -m644 packaging/microshift/dropins/enable-multus.yaml %{buildroot}%{_sysconfdir}/microshift/config.d/00-enable-multus.yaml
440-
install -p -m755 packaging/greenboot/microshift-running-check-multus.sh %{buildroot}%{_sysconfdir}/greenboot/check/required.d/41_microshift_running_check_multus.sh
441439
install -p -m755 packaging/crio.conf.d/12-microshift-multus.conf %{buildroot}%{_sysconfdir}/crio/crio.conf.d/12-microshift-multus.conf
442440

443441
# multus-release-info
@@ -518,7 +516,6 @@ install -p -m755 packaging/tuned/microshift-tuned.py %{buildroot}%{_bindir}/micr
518516
install -d -m755 %{buildroot}/%{_prefix}/lib/microshift/manifests.d/000-microshift-gateway-api
519517
install -p -m644 assets/optional/gateway-api/0* %{buildroot}/%{_prefix}/lib/microshift/manifests.d/000-microshift-gateway-api
520518
install -p -m644 assets/optional/gateway-api/kustomization.yaml %{buildroot}/%{_prefix}/lib/microshift/manifests.d/000-microshift-gateway-api
521-
install -p -m755 packaging/greenboot/microshift-running-check-gateway-api.sh %{buildroot}%{_sysconfdir}/greenboot/check/required.d/41_microshift_running_check_gateway_api.sh
522519

523520
%ifarch %{arm} aarch64
524521
cat assets/optional/gateway-api/kustomization.aarch64.yaml >> %{buildroot}/%{_prefix}/lib/microshift/manifests.d/000-microshift-gateway-api/kustomization.yaml
@@ -571,7 +568,6 @@ install -d -m755 %{buildroot}/%{_prefix}/lib/microshift/manifests.d/050-microshi
571568
install -p -m644 assets/optional/ai-model-serving/runtimes/*.yaml %{buildroot}/%{_prefix}/lib/microshift/manifests.d/050-microshift-ai-model-serving-runtimes
572569
rm -v %{buildroot}/%{_prefix}/lib/microshift/manifests.d/050-microshift-ai-model-serving-runtimes/kustomization.x86_64.yaml
573570

574-
install -p -m755 packaging/greenboot/microshift-running-check-ai-model-serving.sh %{buildroot}%{_sysconfdir}/greenboot/check/required.d/41_microshift_running_check_ai_model_serving.sh
575571

576572
cat assets/optional/ai-model-serving/runtimes/kustomization.x86_64.yaml >> %{buildroot}/%{_prefix}/lib/microshift/manifests.d/050-microshift-ai-model-serving-runtimes/kustomization.yaml
577573
%endif
@@ -604,7 +600,6 @@ install -p -m644 assets/optional/cert-manager/manager/*.yaml %{buildroot}/%{_pre
604600
install -d -m755 %{buildroot}/%{_prefix}/lib/microshift/manifests.d/060-microshift-cert-manager/rbac
605601
install -p -m644 assets/optional/cert-manager/rbac/*.yaml %{buildroot}/%{_prefix}/lib/microshift/manifests.d/060-microshift-cert-manager/rbac
606602
install -p -m644 assets/optional/cert-manager/kustomization.yaml %{buildroot}/%{_prefix}/lib/microshift/manifests.d/060-microshift-cert-manager
607-
install -p -m755 packaging/greenboot/microshift-running-check-cert-manager.sh %{buildroot}%{_sysconfdir}/greenboot/check/required.d/60_microshift_running_check_cert_manager.sh
608603

609604
# cert-manager-release-info
610605
mkdir -p -m755 %{buildroot}%{_datadir}/microshift/release
@@ -733,14 +728,12 @@ fi
733728
%files olm
734729
%dir %{_prefix}/lib/microshift/manifests.d/001-microshift-olm
735730
%{_prefix}/lib/microshift/manifests.d/001-microshift-olm/*
736-
%{_sysconfdir}/greenboot/check/required.d/50_microshift_running_check_olm.sh
737731

738732
%files olm-release-info
739733
%{_datadir}/microshift/release/release-olm-{x86_64,aarch64}.json
740734

741735
%files multus
742736
%{_sysconfdir}/microshift/config.d/00-enable-multus.yaml
743-
%{_sysconfdir}/greenboot/check/required.d/41_microshift_running_check_multus.sh
744737
%{_sysconfdir}/crio/crio.conf.d/12-microshift-multus.conf
745738

746739
%files multus-release-info
@@ -779,7 +772,6 @@ fi
779772
%files gateway-api
780773
%dir %{_prefix}/lib/microshift/manifests.d/000-microshift-gateway-api
781774
%{_prefix}/lib/microshift/manifests.d/000-microshift-gateway-api/*
782-
%{_sysconfdir}/greenboot/check/required.d/41_microshift_running_check_gateway_api.sh
783775

784776
%files gateway-api-release-info
785777
%{_datadir}/microshift/release/release-gateway-api-{x86_64,aarch64}.json
@@ -791,7 +783,6 @@ fi
791783
%dir %{_prefix}/lib/microshift/manifests.d/050-microshift-ai-model-serving-runtimes
792784
%{_prefix}/lib/microshift/manifests.d/010-microshift-ai-model-serving-kserve/*
793785
%{_prefix}/lib/microshift/manifests.d/050-microshift-ai-model-serving-runtimes/*
794-
%{_sysconfdir}/greenboot/check/required.d/41_microshift_running_check_ai_model_serving.sh
795786
%endif
796787

797788
%files ai-model-serving-release-info
@@ -808,7 +799,6 @@ fi
808799
%files cert-manager
809800
%dir %{_prefix}/lib/microshift/manifests.d/060-microshift-cert-manager
810801
%{_prefix}/lib/microshift/manifests.d/060-microshift-cert-manager/*
811-
%{_sysconfdir}/greenboot/check/required.d/60_microshift_running_check_cert_manager.sh
812802

813803
%files cert-manager-release-info
814804
%{_datadir}/microshift/release/release-cert-manager-{x86_64,aarch64}.json
@@ -817,6 +807,9 @@ fi
817807
# Use Git command to generate the log and replace the VERSION string
818808
# LANG=C git log --date="format:%a %b %d %Y" --pretty="tformat:* %cd %an <%ae> VERSION%n- %s%n" packaging/rpm/microshift.spec
819809
%changelog
810+
* Mon Aug 11 2025 Patryk Matuszak <[email protected]> 4.20.0
811+
- Remove healthcheck scripts: optional MicroShift workloads are now part of healthcheck command
812+
820813
* Wed Aug 06 2025 Evgeny Slutsky <[email protected]> 4.20.0
821814
- Remove firewalld service override configuration to avoid flushing of iptables
822815

pkg/healthcheck/healthcheck.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ func MicroShiftHealthcheck(ctx context.Context, timeout time.Duration) error {
2121
return err
2222
}
2323

24+
if err := fillOptionalMicroShiftWorkloads(workloads); err != nil {
25+
return err
26+
}
27+
2428
if err := waitForWorkloads(ctx, timeout, workloads); err != nil {
2529
return err
2630
}

pkg/healthcheck/microshift_core_workloads.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,13 @@ func fillOptionalWorkloadsIfApplicable(cfg *config.Config, workloads map[string]
119119
Deployments: comps,
120120
}
121121
}
122+
123+
if cfg.Network.Multus.IsEnabled() {
124+
workloads["openshift-multus"] = NamespaceWorkloads{
125+
DaemonSets: []string{"multus", "dhcp-daemon"},
126+
}
127+
}
128+
122129
return nil
123130
}
124131

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package healthcheck
2+
3+
import (
4+
"github.com/openshift/microshift/pkg/util"
5+
"k8s.io/klog/v2"
6+
)
7+
8+
type optionalWorkloads struct {
9+
Namespace string
10+
Workloads NamespaceWorkloads
11+
}
12+
13+
// optionalWorkloadPaths defines the mapping of manifest filepath to the namespace and workloads.
14+
var optionalWorkloadPaths = map[string]optionalWorkloads{
15+
"/usr/lib/microshift/manifests.d/001-microshift-olm": {
16+
Namespace: "openshift-operator-lifecycle-manager",
17+
Workloads: NamespaceWorkloads{Deployments: []string{"olm-operator", "catalog-operator"}},
18+
},
19+
20+
"/usr/lib/microshift/manifests.d/000-microshift-gateway-api": {
21+
Namespace: "openshift-gateway-api",
22+
Workloads: NamespaceWorkloads{
23+
Deployments: []string{"servicemesh-operator3", "istiod-openshift-gateway-api"},
24+
},
25+
},
26+
27+
"/usr/lib/microshift/manifests.d/060-microshift-cert-manager": {
28+
Namespace: "cert-manager",
29+
Workloads: NamespaceWorkloads{Deployments: []string{"cert-manager", "cert-manager-webhook", "cert-manager-cainjector"}},
30+
},
31+
32+
"/usr/lib/microshift/manifests.d/010-microshift-ai-model-serving-kserve": {
33+
Namespace: "redhat-ods-applications",
34+
Workloads: NamespaceWorkloads{Deployments: []string{"kserve-controller-manager"}},
35+
},
36+
}
37+
38+
// fillOptionalMicroShiftWorkloads assembles list of optional MicroShift workloads
39+
// existing on the filesystem as manifests (in comparison to Multus which
40+
// manifests are part of MicroShift binary).
41+
func fillOptionalMicroShiftWorkloads(workloadsToCheck map[string]NamespaceWorkloads) error {
42+
for path, ow := range optionalWorkloadPaths {
43+
if exists, err := util.PathExists(path); err != nil {
44+
return err
45+
} else if exists {
46+
klog.Infof("Optional component path exists: %s - expecting %v in namespace %q", path, ow.Workloads.String(), ow.Namespace)
47+
workloadsToCheck[ow.Namespace] = ow.Workloads
48+
}
49+
}
50+
return nil
51+
}

pkg/healthcheck/workloads.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,26 @@ type NamespaceWorkloads struct {
2727
StatefulSets []string `json:"statefulsets"`
2828
}
2929

30+
func (nw NamespaceWorkloads) String() string {
31+
var parts []string
32+
33+
if len(nw.Deployments) > 0 {
34+
parts = append(parts, fmt.Sprintf("Deployments: [%s]", strings.Join(nw.Deployments, ", ")))
35+
}
36+
if len(nw.DaemonSets) > 0 {
37+
parts = append(parts, fmt.Sprintf("DaemonSets: [%s]", strings.Join(nw.DaemonSets, ", ")))
38+
}
39+
if len(nw.StatefulSets) > 0 {
40+
parts = append(parts, fmt.Sprintf("StatefulSets: [%s]", strings.Join(nw.StatefulSets, ", ")))
41+
}
42+
43+
if len(parts) == 0 {
44+
return ""
45+
}
46+
47+
return strings.Join(parts, ", ")
48+
}
49+
3050
func waitForWorkloads(ctx context.Context, timeout time.Duration, workloads map[string]NamespaceWorkloads) error {
3151
kubeconfigPath := filepath.Join(config.DataDir, "resources", string(config.KubeAdmin), "kubeconfig")
3252
restConfig, err := clientcmd.BuildConfigFromFlags("", kubeconfigPath)

0 commit comments

Comments
 (0)