Skip to content
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
104 changes: 54 additions & 50 deletions core.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ k8s:
namespaces:
- name: argocd
app: argocd
disableIstioInjection: true
- name: cert-manager
disableIstioInjection: true
- name: cnpg-system
Expand All @@ -18,26 +19,20 @@ k8s:
disablePolicyChecks: true
- name: external-dns
disableIstioInjection: true
- name: external-secrets
disableIstioInjection: true
- name: falco
disableIstioInjection: true
disablePolicyChecks: true
- name: harbor
app: harbor
- name: gatekeeper-system
app: gatekeeper
- name: apl-harbor-operator
disableIstioInjection: true
- name: gitea
- name: gitea-operator
- name: apl-gitea-operator
disableIstioInjection: true
- name: grafana
app: grafana
- name: istio-system
disableIstioInjection: true
- name: istio-operator
istio-operator-managed: Reconcile
istio-injection: disabled
- name: httpbin
app: httpbin
- name: ingress
Expand All @@ -50,6 +45,8 @@ k8s:
app: jaeger
disableIstioInjection: true
- name: keycloak
- name: apl-keycloak-operator
disableIstioInjection: true
- name: kiali
app: kiali
- name: kiali-operator
Expand All @@ -59,12 +56,24 @@ k8s:
app: knative
disablePolicyChecks: true
disableIstioInjection: true
- name: knative-operator
app: knative
disablePolicyChecks: true
disableIstioInjection: true
- name: kfp
app: kubeflow-pipelines
disablePolicyChecks: true
disableIstioInjection: true
- name: kured
app: kured
disableIstioInjection: true
- name: kyverno
app: kyverno
disableIstioInjection: true
- name: thanos
app: thanos
disableIstioInjection: true
disablePolicyChecks: true
- name: tekton-pipelines
app: tekton
disableIstioInjection: true
Expand All @@ -87,16 +96,9 @@ k8s:
disablePolicyChecks: true
- name: monitoring
disableIstioInjection: true
disablePolicyChecks: true
- name: opa-exporter
disableIstioInjection: true
disablePolicyChecks: true
- name: otomi
- name: otomi-operator
disableIstioInjection: true
- name: cluster-overprovisioner
app: cluster-overprovisioner
disableIstioInjection: true
- name: rabbitmq
app: rabbitmq
disableIstioInjection: true
Expand All @@ -113,6 +115,7 @@ k8s:
- name: velero
app: velero
disablePolicyChecks: true
disableIstioInjection: true
- name: otomi-pipelines
app: tekton
disableIstioInjection: true
Expand Down Expand Up @@ -173,13 +176,9 @@ adminApps:
auth: true
- name: external-dns
tags: [ingress, security, tls]
- name: external-secrets
tags: [secrets, security, tls]
- name: falco
tags: [security]
deps: [prometheus, grafana]
- name: gatekeeper
tags: [security, policies, observability]
- name: gitea
tags: [git]
isShared: true
Expand All @@ -202,10 +201,6 @@ adminApps:
- authorization
type: public
auth: true
shortcuts:
- title: NGINX
description: NGINX ingress controller metrics
path: /d/nginx/nginx-ingress-controller?orgId=1&refresh=5s
- name: harbor
tags: [security]
isShared: true
Expand Down Expand Up @@ -259,13 +254,9 @@ adminApps:
ownHost: true
ingress:
- namespace: keycloak
svc: keycloak-service
svc: keycloak
type: public
port: 8080
shortcuts:
- title: Account
description: Edit your account settings.
path: /realms/otomi/account/
- name: kiali
tags: [tracing, telemetry, observability]
deps: [istio, prometheus]
Expand All @@ -281,6 +272,16 @@ adminApps:
- name: knative
tags: [serverless, functions]
deps: [istio]
- name: kubeflow-pipelines
tags: [ai, ml]
ownHost: true
isShared: true
ingress:
- svc: ml-pipeline-ui
namespace: kfp
port: 80
type: public
auth: true
- name: kured
tags: [security]
- name: tekton
Expand All @@ -295,21 +296,20 @@ adminApps:
auth: true
removeRequestHeaders:
- authorization
- name: thanos
tags: [metrics, observability]
ownHost: true
ingress:
- svc: thanos-query
port: 9090
namespace: thanos
type: public
auth: true
- name: loki
tags: [logging, telemetry, observability]
deps: [grafana, prometheus, minio]
deps: [grafana, prometheus]
useHost: grafana
path: /explore?orgId=1&left=%7B"datasource":"loki","queries":%5B%7B"refId":"A"%7D%5D,"range":%7B"from":"now-1h","to":"now"%7D%7D
shortcuts:
- title: Ingress logs
description: All logs generated in the "ingress" namespace
path: /explore?orgId=1&left=%5B"now-1h","now","Loki",%7B"expr":"%7Bnamespace%3D%5C"ingress%5C"%7D","refId":"A"%7D%5D
- title: OWASP violations
description: All OWASP rule violations
path: /explore?orgId=1&left=%5B"now-1h","now","Loki",%7B"expr":"%7Bnamespace%3D%5C"ingress%5C"%7D%20%7C%3D%5C"ModSecurity:%20%5C""%7D%5D
- title: Gatekeeper violations
description: Kube API violations logged by OPA gatekepeer
path: /explore?orgId=1&left=%5B"now-1h","now","Loki",%7B"expr":"%7Bnamespace%3D%5C"gatekeeper-system%5C"%7D%20%7C%3D%5C"Policy:%20%5C""%7D%5D
- name: minio
tags: [storage, backup]
ownHost: true
Expand All @@ -321,7 +321,7 @@ adminApps:
auth: true
removeRequestHeaders:
- authorization
- name: otomi
- name: console
hide: true
isShared: true
ownHost: true
Expand All @@ -335,6 +335,17 @@ adminApps:
namespace: otomi
type: public
auth: true
- name: api # Used by any client that do not support cookies
hide: true
isShared: true
ownHost: true
ingress:
- svc: otomi-api
namespace: otomi
type: public
# RequestAuthentication and AuthorizationPolicy ensure Authorization header validation
auth: false

- name: prometheus
tags: [metrics, observability]
ownHost: true
Expand All @@ -350,7 +361,7 @@ adminApps:
ownHost: true
- name: tempo
tags: [tracing]
deps: [prometheus, grafana, minio]
deps: [prometheus, grafana]
useHost: grafana
path: /explore?orgId=1&left=%7B"datasource":"tempo","queries":%5B%7B"refId":"A","datasource":%7B"type":"tempo","uid":"tempo"%7D,"queryType":"clear","limit":20%7D%5D,"range":%7B"from":"now-1h","to":"now"%7D%7D
- name: otel
Expand All @@ -368,6 +379,7 @@ adminApps:
teamApps:
- name: alertmanager
ownHost: true
path: /#/alerts?silenced=false&inhibited=false&active=true&filter=%7Bnamespace%3D"team-#TEAM#"%7D
ingress:
- svc: po-alertmanager
hasPrefix: true
Expand All @@ -388,14 +400,6 @@ teamApps:
- name: loki
useHost: grafana
path: /explore?orgId=1&left=%7B"datasource":"loki","queries":%5B%7B"refId":"A","expr":"","queryType":"range","datasource":%7B"type":"loki","uid":"loki"%7D%7D%5D,"range":%7B"from":"now-1h","to":"now"%7D%7D
- name: prometheus
ownHost: true
ingress:
- svc: po-prometheus
hasPrefix: true
port: 9090
type: public
auth: true
- name: tekton
ownHost: true
ingress:
Expand All @@ -405,4 +409,4 @@ teamApps:
type: public
auth: true
removeRequestHeaders:
- authorization
- authorization
19 changes: 19 additions & 0 deletions public/logos/kubeflow-pipelines_logo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
11 changes: 11 additions & 0 deletions src/components/AppCard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@ export default function ({
toggleApp,
isDeprecated,
isBeta,
isAlfa,
openModal,
}: any): React.ReactElement {
const { classes, cx } = useStyles()
Expand Down Expand Up @@ -156,6 +157,16 @@ export default function ({
</Box>
)}

{isAlfa && (
<Box>
<Chip
className={cx(classes.chip, isLight ? classes.chipLight : classes.chipDark)}
label='ALFA'
variant='outlined'
/>
</Box>
)}

{isDeprecated && (
<Box>
<Chip className={cx(classes.chip, classes.chipDeprecated)} label='DEPRECATED' variant='outlined' />
Expand Down
7 changes: 6 additions & 1 deletion src/components/Apps.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,11 @@ export default function Apps({ teamId, apps, teamSettings, setAppState, objSetti

const out = (items) =>
items?.map((item) => {
const { enabled, externalUrl, id, logo, logoAlt, isDeprecated, isBeta } = getAppData(session, teamId, item)
const { enabled, externalUrl, id, logo, logoAlt, isDeprecated, isAlfa, isBeta } = getAppData(
session,
teamId,
item,
)
return (
<Grid item xs={12} sm={6} md={4} lg={4} key={id}>
<AppCard
Expand All @@ -188,6 +192,7 @@ export default function Apps({ teamId, apps, teamSettings, setAppState, objSetti
toggleApp={() => toggleApp(id)}
isDeprecated={isDeprecated}
isBeta={isBeta}
isAlfa={isAlfa}
openModal={() => setOpenModal(id)}
/>
</Grid>
Expand Down
2 changes: 2 additions & 0 deletions src/redux/otomiApi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7368,6 +7368,7 @@ export type GetSettingsApiResponse = /** status 200 The request is successful. *
tempo?: string
gitea?: string
thanos?: string
kfp?: string
}
}
type: 'linode'
Expand Down Expand Up @@ -7630,6 +7631,7 @@ export type EditSettingsApiArg = {
tempo?: string
gitea?: string
thanos?: string
kfp?: string
}
}
type: 'linode'
Expand Down
10 changes: 10 additions & 0 deletions src/utils/data.ts
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,14 @@ const getBetaApp = (session, appId) => {
return app?.isBeta
}

const getAlfaApp = (session, appId) => {
const {
core: { appsInfo },
}: any = session
const app = appsInfo[appId]
return app?.isAlfa
}

const getDeprecationInfo = (session, appId) => {
const {
core: { appsInfo },
Expand Down Expand Up @@ -169,6 +177,7 @@ export const getAppData = (
const deps = coreApp.deps
const isDeprecated = getDeprecatedApp(session, appId)
const isBeta = getBetaApp(session, appId)
const isAlfa = getAlfaApp(session, appId)
const deprecationInfo = getDeprecationInfo(session, appId)
const replacementUrl = `https://${deprecationInfo?.replacement}.${cluster.domainSuffix}${deprecationInfo?.path ?? ''}`
return {
Expand All @@ -186,6 +195,7 @@ export const getAppData = (
hasShortcuts: !!ingress || useHost,
isDeprecated,
isBeta,
isAlfa,
deprecationInfo,
replacementUrl,
}
Expand Down