Cherry-picking several Azure changes for v1.2 release (#1661)

* Cherry-pick of 'Update jupyter web app image tag for Azure'

* Cherry-pick of 'Customize dashboard links in Azure Stack'

* Cherry-pick of 'Adds tests for Azure Stack centraldashboard links mod'

* Cherry-pick of 'Update Azure stack links and tests'

* Update generated tests
This commit is contained in:
Bernd Verst 2020-11-19 00:28:50 -08:00 committed by GitHub
parent 6794984104
commit 7d870dd84f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
20 changed files with 437 additions and 32 deletions

View File

@ -0,0 +1,12 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: centraldashboard
spec:
template:
spec:
containers:
- name: centraldashboard
env:
- name: DASHBOARD_LINKS_CONFIGMAP
value: centraldashboard-links-config

View File

@ -0,0 +1,8 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: kubeflow
resources:
- ../../../../common/centraldashboard/overlays/stacks
patchesStrategicMerge:
- links-configmap.yaml
- deployment_patch.yaml

View File

@ -0,0 +1,67 @@
apiVersion: v1
data:
links: |-
{
"menuLinks": [
{
"link": "/pipeline/",
"text": "Pipelines"
},
{
"link": "/jupyter/",
"text": "Notebook Servers"
},
{
"link": "/katib/",
"text": "Katib"
}
],
"externalLinks": [],
"quickLinks": [
{
"text": "Upload a pipeline",
"desc": "Pipelines",
"link": "/pipeline/"
},
{
"text": "View all pipeline runs",
"desc": "Pipelines",
"link": "/pipeline/#/runs"
},
{
"text": "Create a new Notebook server",
"desc": "Notebook Servers",
"link": "/jupyter/new?namespace=kubeflow"
},
{
"text": "View Katib Experiments",
"desc": "Katib",
"link": "/katib/"
}
],
"documentationItems": [
{
"text": "Kubeflow Overview",
"desc": "An overview of Kubeflow architecture and workflows",
"link": "https://www.kubeflow.org/docs/started/kubeflow-overview/"
},
{
"text": "Kubeflow on Azure",
"desc": "Running Kubeflow on AKS and Microsoft Azure",
"link": "https://www.kubeflow.org/docs/azure/"
},
{
"text": "Azure Machine Learning Docs",
"desc": "Azure Machine Learning Documentation",
"link": "https://aka.ms/kubeflow-azureml-docs"
},
{
"text": "Azure Kubernetes Service Docs",
"desc": "Azure Kubernetes Service Documentation",
"link": "https://aka.ms/kubeflow-aks-docs"
},
]
}
kind: ConfigMap
metadata:
name: centraldashboard-links-config

View File

@ -10,7 +10,7 @@ namespace: kubeflow
images: images:
- name: gcr.io/kubeflow-images-public/jupyter-web-app - name: gcr.io/kubeflow-images-public/jupyter-web-app
newName: gcr.io/kubeflow-images-public/jupyter-web-app newName: gcr.io/kubeflow-images-public/jupyter-web-app
newTag: vmaster-gd9be4b9e newTag: vmaster-g845af298
resources: resources:
- ../../../../../jupyter/jupyter-web-app/base/cluster-role-binding.yaml - ../../../../../jupyter/jupyter-web-app/base/cluster-role-binding.yaml
- ../../../../../jupyter/jupyter-web-app/base/cluster-role.yaml - ../../../../../jupyter/jupyter-web-app/base/cluster-role.yaml

View File

@ -3,13 +3,13 @@ kind: Kustomization
namespace: kubeflow namespace: kubeflow
resources: resources:
- ../../admission-webhook/webhook/v3 - ../../admission-webhook/webhook/v3
- ../../common/centraldashboard/overlays/stacks
- ../../kubeflow-roles/base - ../../kubeflow-roles/base
- ./application/jupyter-web-app - ./application/jupyter-web-app
- ../../jupyter/notebook-controller/base_v3 - ../../jupyter/notebook-controller/base_v3
- ../../profiles/base_v3 - ../../profiles/base_v3
- ./application/spark-operator - ./application/spark-operator
- ./application/spartakus - ./application/spartakus
- ./application/centraldashboard
# Training Operators # Training Operators
- ../../pytorch-job/pytorch-job-crds/overlays/application - ../../pytorch-job/pytorch-job-crds/overlays/application
- ../../pytorch-job/pytorch-operator/overlays/application - ../../pytorch-job/pytorch-operator/overlays/application

View File

@ -0,0 +1,15 @@
package centraldashboard
import (
"github.com/kubeflow/manifests/tests"
"testing"
)
func TestKustomize(t *testing.T) {
testCase := &tests.KustomizeTestCase{
Package: "../../../../../stacks/azure/application/centraldashboard",
Expected: "test_data/expected",
}
tests.RunTestCase(t, testCase)
}

View File

@ -0,0 +1,53 @@
apiVersion: app.k8s.io/v1beta1
kind: Application
metadata:
labels:
app.kubernetes.io/component: centraldashboard
app.kubernetes.io/name: centraldashboard
name: centraldashboard
namespace: kubeflow
spec:
addOwnerRef: true
componentKinds:
- group: core
kind: ConfigMap
- group: apps
kind: Deployment
- group: rbac.authorization.k8s.io
kind: Role
- group: rbac.authorization.k8s.io
kind: RoleBinding
- group: core
kind: Service
- group: core
kind: ServiceAccount
- group: networking.istio.io
kind: VirtualService
descriptor:
description: Provides a Dashboard UI for kubeflow
keywords:
- centraldashboard
- kubeflow
links:
- description: About
url: https://github.com/kubeflow/kubeflow/tree/master/components/centraldashboard
maintainers:
- email: prodonjs@gmail.com
name: Jason Prodonovich
- email: apverma@google.com
name: Apoorv Verma
- email: adhita94@gmail.com
name: Adhita Selvaraj
owners:
- email: prodonjs@gmail.com
name: Jason Prodonovich
- email: apverma@google.com
name: Apoorv Verma
- email: adhita94@gmail.com
name: Adhita Selvaraj
type: centraldashboard
version: v1beta1
selector:
matchLabels:
app.kubernetes.io/component: centraldashboard
app.kubernetes.io/name: centraldashboard

View File

@ -0,0 +1,52 @@
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: centraldashboard
app.kubernetes.io/component: centraldashboard
app.kubernetes.io/name: centraldashboard
name: centraldashboard
namespace: kubeflow
spec:
replicas: 1
selector:
matchLabels:
app: centraldashboard
app.kubernetes.io/component: centraldashboard
app.kubernetes.io/name: centraldashboard
template:
metadata:
annotations:
sidecar.istio.io/inject: "false"
labels:
app: centraldashboard
app.kubernetes.io/component: centraldashboard
app.kubernetes.io/name: centraldashboard
spec:
containers:
- env:
- name: USERID_HEADER
valueFrom:
configMapKeyRef:
key: userid-header
name: kubeflow-config
- name: USERID_PREFIX
valueFrom:
configMapKeyRef:
key: userid-prefix
name: kubeflow-config
- name: DASHBOARD_LINKS_CONFIGMAP
value: centraldashboard-links-config
image: gcr.io/kubeflow-images-public/centraldashboard:vmaster-g8097cfeb
imagePullPolicy: IfNotPresent
livenessProbe:
httpGet:
path: /healthz
port: 8082
initialDelaySeconds: 30
periodSeconds: 30
name: centraldashboard
ports:
- containerPort: 8082
protocol: TCP
serviceAccountName: centraldashboard

View File

@ -0,0 +1,24 @@
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
labels:
app.kubernetes.io/component: centraldashboard
app.kubernetes.io/name: centraldashboard
name: centraldashboard
namespace: kubeflow
spec:
gateways:
- kubeflow-gateway
hosts:
- '*'
http:
- match:
- uri:
prefix: /
rewrite:
uri: /
route:
- destination:
host: centraldashboard.$(namespace).svc.$(clusterDomain)
port:
number: 80

View File

@ -0,0 +1,19 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app: centraldashboard
app.kubernetes.io/component: centraldashboard
app.kubernetes.io/name: centraldashboard
name: centraldashboard
rules:
- apiGroups:
- ""
resources:
- events
- namespaces
- nodes
verbs:
- get
- list
- watch

View File

@ -0,0 +1,16 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
labels:
app: centraldashboard
app.kubernetes.io/component: centraldashboard
app.kubernetes.io/name: centraldashboard
name: centraldashboard
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: centraldashboard
subjects:
- kind: ServiceAccount
name: centraldashboard
namespace: kubeflow

View File

@ -0,0 +1,29 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
labels:
app: centraldashboard
app.kubernetes.io/component: centraldashboard
app.kubernetes.io/name: centraldashboard
name: centraldashboard
namespace: kubeflow
rules:
- apiGroups:
- ""
- app.k8s.io
resources:
- applications
- pods
- pods/exec
- pods/log
verbs:
- get
- list
- watch
- apiGroups:
- ""
resources:
- secrets
- configmaps
verbs:
- get

View File

@ -0,0 +1,17 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
labels:
app: centraldashboard
app.kubernetes.io/component: centraldashboard
app.kubernetes.io/name: centraldashboard
name: centraldashboard
namespace: kubeflow
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: centraldashboard
subjects:
- kind: ServiceAccount
name: centraldashboard
namespace: kubeflow

View File

@ -0,0 +1,71 @@
apiVersion: v1
data:
links: |-
{
"menuLinks": [
{
"link": "/pipeline/",
"text": "Pipelines"
},
{
"link": "/jupyter/",
"text": "Notebook Servers"
},
{
"link": "/katib/",
"text": "Katib"
}
],
"externalLinks": [],
"quickLinks": [
{
"text": "Upload a pipeline",
"desc": "Pipelines",
"link": "/pipeline/"
},
{
"text": "View all pipeline runs",
"desc": "Pipelines",
"link": "/pipeline/#/runs"
},
{
"text": "Create a new Notebook server",
"desc": "Notebook Servers",
"link": "/jupyter/new?namespace=kubeflow"
},
{
"text": "View Katib Experiments",
"desc": "Katib",
"link": "/katib/"
}
],
"documentationItems": [
{
"text": "Kubeflow Overview",
"desc": "An overview of Kubeflow architecture and workflows",
"link": "https://www.kubeflow.org/docs/started/kubeflow-overview/"
},
{
"text": "Kubeflow on Azure",
"desc": "Running Kubeflow on AKS and Microsoft Azure",
"link": "https://www.kubeflow.org/docs/azure/"
},
{
"text": "Azure Machine Learning Docs",
"desc": "Azure Machine Learning Documentation",
"link": "https://aka.ms/kubeflow-azureml-docs"
},
{
"text": "Azure Kubernetes Service Docs",
"desc": "Azure Kubernetes Service Documentation",
"link": "https://aka.ms/kubeflow-aks-docs"
},
]
}
kind: ConfigMap
metadata:
labels:
app.kubernetes.io/component: centraldashboard
app.kubernetes.io/name: centraldashboard
name: centraldashboard-links-config
namespace: kubeflow

View File

@ -0,0 +1,29 @@
apiVersion: v1
kind: Service
metadata:
annotations:
getambassador.io/config: |-
---
apiVersion: ambassador/v0
kind: Mapping
name: centralui-mapping
prefix: /
rewrite: /
service: centraldashboard.$(namespace)
labels:
app: centraldashboard
app.kubernetes.io/component: centraldashboard
app.kubernetes.io/name: centraldashboard
name: centraldashboard
namespace: kubeflow
spec:
ports:
- port: 80
protocol: TCP
targetPort: 8082
selector:
app: centraldashboard
app.kubernetes.io/component: centraldashboard
app.kubernetes.io/name: centraldashboard
sessionAffinity: None
type: ClusterIP

View File

@ -0,0 +1,8 @@
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
app.kubernetes.io/component: centraldashboard
app.kubernetes.io/name: centraldashboard
name: centraldashboard
namespace: kubeflow

View File

@ -48,7 +48,7 @@ spec:
configMapKeyRef: configMapKeyRef:
key: userid-prefix key: userid-prefix
name: kubeflow-config name: kubeflow-config
image: gcr.io/kubeflow-images-public/jupyter-web-app:vmaster-gd9be4b9e image: gcr.io/kubeflow-images-public/jupyter-web-app:vmaster-g845af298
imagePullPolicy: Always imagePullPolicy: Always
name: jupyter-web-app name: jupyter-web-app
ports: ports:

View File

@ -48,7 +48,7 @@ spec:
configMapKeyRef: configMapKeyRef:
key: userid-prefix key: userid-prefix
name: kubeflow-config name: kubeflow-config
image: gcr.io/kubeflow-images-public/jupyter-web-app:vmaster-gd9be4b9e image: gcr.io/kubeflow-images-public/jupyter-web-app:vmaster-g845af298
imagePullPolicy: Always imagePullPolicy: Always
name: jupyter-web-app name: jupyter-web-app
ports: ports:

View File

@ -48,7 +48,7 @@ spec:
configMapKeyRef: configMapKeyRef:
key: userid-prefix key: userid-prefix
name: kubeflow-config-bk4bc7m928 name: kubeflow-config-bk4bc7m928
image: gcr.io/kubeflow-images-public/jupyter-web-app:vmaster-gd9be4b9e image: gcr.io/kubeflow-images-public/jupyter-web-app:vmaster-g845af298
imagePullPolicy: Always imagePullPolicy: Always
name: jupyter-web-app name: jupyter-web-app
ports: ports:

View File

@ -41,40 +41,25 @@ data:
], ],
"documentationItems": [ "documentationItems": [
{ {
"text": "Getting Started with Kubeflow", "text": "Kubeflow Overview",
"desc": "Get your machine-learning workflow up and running on Kubeflow", "desc": "An overview of Kubeflow architecture and workflows",
"link": "https://www.kubeflow.org/docs/started/getting-started/" "link": "https://www.kubeflow.org/docs/started/kubeflow-overview/"
}, },
{ {
"text": "MiniKF", "text": "Kubeflow on Azure",
"desc": "A fast and easy way to deploy Kubeflow locally", "desc": "Running Kubeflow on AKS and Microsoft Azure",
"link": "https://www.kubeflow.org/docs/started/getting-started-minikf/" "link": "https://www.kubeflow.org/docs/azure/"
}, },
{ {
"text": "Microk8s for Kubeflow", "text": "Azure Machine Learning Docs",
"desc": "Quickly get Kubeflow running locally on native hypervisors", "desc": "Azure Machine Learning Documentation",
"link": "https://www.kubeflow.org/docs/started/getting-started-multipass/" "link": "https://aka.ms/kubeflow-azureml-docs"
}, },
{ {
"text": "Minikube for Kubeflow", "text": "Azure Kubernetes Service Docs",
"desc": "Quickly get Kubeflow running locally", "desc": "Azure Kubernetes Service Documentation",
"link": "https://www.kubeflow.org/docs/started/getting-started-minikube/" "link": "https://aka.ms/kubeflow-aks-docs"
}, },
{
"text": "Kubeflow on GCP",
"desc": "Running Kubeflow on Kubernetes Engine and Google Cloud Platform",
"link": "https://www.kubeflow.org/docs/gke/"
},
{
"text": "Kubeflow on AWS",
"desc": "Running Kubeflow on Elastic Container Service and Amazon Web Services",
"link": "https://www.kubeflow.org/docs/aws/"
},
{
"text": "Requirements for Kubeflow",
"desc": "Get more detailed information about using Kubeflow and its components",
"link": "https://www.kubeflow.org/docs/started/requirements/"
}
] ]
} }
kind: ConfigMap kind: ConfigMap