diff --git a/clusters/noble/apps/eclipse-che/README.md b/clusters/noble/apps/eclipse-che/README.md new file mode 100644 index 0000000..b43a154 --- /dev/null +++ b/clusters/noble/apps/eclipse-che/README.md @@ -0,0 +1,15 @@ +# Eclipse Che (optional — Argo CD) + +Three **Application** resources (sync waves **0 → 1 → 2**): + +| Wave | Application | Purpose | +|------|-------------|---------| +| 0 | `eclipse-che-devworkspace` | [DevWorkspace operator](https://github.com/devfile/devworkspace-operator) **v0.33.0** (`devworkspace/kustomization.yaml` → remote `combined.yaml`) | +| 1 | `eclipse-che-operator` | [Eclipse Che Helm chart](https://artifacthub.io/packages/helm/eclipse-che/eclipse-che) **7.116.0** (operator in **`eclipse-che`**) | +| 2 | `eclipse-che-cluster` | **`CheCluster`** (`checluster.yaml`) — Traefik + **cert-manager** TLS | + +**Prerequisites (cluster):** **cert-manager** + **Traefik** (noble bootstrap). **DNS:** `che.apps.noble.lab.pcenicni.dev` → Traefik LB (edit **`checluster.yaml`** if your domain differs). + +**First sync:** Wave ordering applies to **Application** CRs under **noble-root**; if the operator starts before DevWorkspace is ready, **Refresh**/**Sync** the child apps once. See [Eclipse Che on Kubernetes](https://eclipse.dev/che/docs/stable/administration-guide/installing-che-on-kubernetes/). + +**URL:** `kubectl get checluster eclipse-che -n eclipse-che -o jsonpath='{.status.cheURL}{"\n"}'` after **Phase** is **Active**. diff --git a/clusters/noble/apps/eclipse-che/application-checluster.yaml b/clusters/noble/apps/eclipse-che/application-checluster.yaml new file mode 100644 index 0000000..a9a8acc --- /dev/null +++ b/clusters/noble/apps/eclipse-che/application-checluster.yaml @@ -0,0 +1,27 @@ +# CheCluster CR — sync wave 2 (operator must be Ready to reconcile). +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: eclipse-che-cluster + namespace: argocd + annotations: + argocd.argoproj.io/sync-wave: "2" + finalizers: + - resources-finalizer.argocd.argoproj.io/background +spec: + project: default + source: + repoURL: https://gitea.pcenicni.ca/gsdavidp/home-server.git + targetRevision: HEAD + path: clusters/noble/apps/eclipse-che + directory: + include: checluster.yaml + destination: + server: https://kubernetes.default.svc + namespace: eclipse-che + syncPolicy: + automated: + prune: true + selfHeal: true + syncOptions: + - ServerSideApply=true diff --git a/clusters/noble/apps/eclipse-che/application-devworkspace.yaml b/clusters/noble/apps/eclipse-che/application-devworkspace.yaml new file mode 100644 index 0000000..6088221 --- /dev/null +++ b/clusters/noble/apps/eclipse-che/application-devworkspace.yaml @@ -0,0 +1,26 @@ +# DevWorkspace operator — must sync before Eclipse Che Helm (sync wave 0). +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: eclipse-che-devworkspace + namespace: argocd + annotations: + argocd.argoproj.io/sync-wave: "0" + finalizers: + - resources-finalizer.argocd.argoproj.io/background +spec: + project: default + source: + repoURL: https://gitea.pcenicni.ca/gsdavidp/home-server.git + targetRevision: HEAD + path: clusters/noble/apps/eclipse-che/devworkspace + destination: + server: https://kubernetes.default.svc + namespace: devworkspace-controller + syncPolicy: + automated: + prune: true + selfHeal: true + syncOptions: + - CreateNamespace=true + - ServerSideApply=true diff --git a/clusters/noble/apps/eclipse-che/application-operator.yaml b/clusters/noble/apps/eclipse-che/application-operator.yaml new file mode 100644 index 0000000..8da44c1 --- /dev/null +++ b/clusters/noble/apps/eclipse-che/application-operator.yaml @@ -0,0 +1,28 @@ +# Eclipse Che operator (Helm) — sync wave 1 (after DevWorkspace CRDs/controller). +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: eclipse-che-operator + namespace: argocd + annotations: + argocd.argoproj.io/sync-wave: "1" + finalizers: + - resources-finalizer.argocd.argoproj.io/background +spec: + project: default + source: + repoURL: https://eclipse-che.github.io/che-operator/charts + chart: eclipse-che + targetRevision: 7.116.0 + helm: + releaseName: eclipse-che + destination: + server: https://kubernetes.default.svc + namespace: eclipse-che + syncPolicy: + automated: + prune: true + selfHeal: true + syncOptions: + - CreateNamespace=true + - ServerSideApply=true diff --git a/clusters/noble/apps/eclipse-che/checluster.yaml b/clusters/noble/apps/eclipse-che/checluster.yaml new file mode 100644 index 0000000..627fd00 --- /dev/null +++ b/clusters/noble/apps/eclipse-che/checluster.yaml @@ -0,0 +1,14 @@ +# Eclipse Che instance — applied after **che-operator** is running (sync wave 2). +# Edit **hostname** / **domain** if your ingress DNS differs from the noble lab pattern. +apiVersion: org.eclipse.che/v2 +kind: CheCluster +metadata: + name: eclipse-che + namespace: eclipse-che +spec: + networking: + domain: apps.noble.lab.pcenicni.dev + hostname: che.apps.noble.lab.pcenicni.dev + ingressClassName: traefik + annotations: + cert-manager.io/cluster-issuer: letsencrypt-prod diff --git a/clusters/noble/apps/eclipse-che/devworkspace/kustomization.yaml b/clusters/noble/apps/eclipse-che/devworkspace/kustomization.yaml new file mode 100644 index 0000000..39762fb --- /dev/null +++ b/clusters/noble/apps/eclipse-che/devworkspace/kustomization.yaml @@ -0,0 +1,6 @@ +# DevWorkspace operator — prerequisite for Eclipse Che (pinned tag). +# https://github.com/devfile/devworkspace-operator +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - https://raw.githubusercontent.com/devfile/devworkspace-operator/v0.33.0/deploy/deployment/kubernetes/combined.yaml diff --git a/clusters/noble/apps/kustomization.yaml b/clusters/noble/apps/kustomization.yaml index d0d72de..9f58d5a 100644 --- a/clusters/noble/apps/kustomization.yaml +++ b/clusters/noble/apps/kustomization.yaml @@ -5,3 +5,6 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - homepage/application.yaml + - eclipse-che/application-devworkspace.yaml + - eclipse-che/application-operator.yaml + - eclipse-che/application-checluster.yaml