Skip to content
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

Kustomize package for mxnet operator #279

Merged
merged 2 commits into from
Aug 27, 2019
Merged
Show file tree
Hide file tree
Changes from all 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
13 changes: 13 additions & 0 deletions mxnet-job/mxnet-operator/base/cluster-role-binding.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
labels:
app: mxnet-operator
name: mxnet-operator
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: mxnet-operator
subjects:
- kind: ServiceAccount
name: mxnet-operator
49 changes: 49 additions & 0 deletions mxnet-job/mxnet-operator/base/cluster-role.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
labels:
app: mxnet-operator
name: mxnet-operator
rules:
- apiGroups:
- kubeflow.org
resources:
- mxjobs
verbs:
- '*'
- apiGroups:
- apiextensions.k8s.io
resources:
- customresourcedefinitions
verbs:
- '*'
- apiGroups:
- storage.k8s.io
resources:
- storageclasses
verbs:
- '*'
- apiGroups:
- batch
resources:
- jobs
verbs:
- '*'
- apiGroups:
- ""
resources:
- configmaps
- pods
- services
- endpoints
- persistentvolumeclaims
- events
verbs:
- '*'
- apiGroups:
- apps
- extensions
resources:
- deployments
verbs:
- '*'
12 changes: 12 additions & 0 deletions mxnet-job/mxnet-operator/base/crd.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: mxjobs.kubeflow.org
spec:
group: kubeflow.org
names:
kind: MXJob
plural: mxjobs
singular: mxjob
version: v1beta1
scope: Namespaced
29 changes: 29 additions & 0 deletions mxnet-job/mxnet-operator/base/deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: mxnet-operator
spec:
replicas: 1
template:
metadata:
labels:
name: mxnet-operator
spec:
containers:
- command:
- /opt/kubeflow/mxnet-operator.v1beta1
- --alsologtostderr
- -v=1
env:
- name: MY_POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
image: mxjob/mxnet-operator:v1beta1
imagePullPolicy: Always
name: mxnet-operator
serviceAccountName: mxnet-operator
15 changes: 15 additions & 0 deletions mxnet-job/mxnet-operator/base/kustomization.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: kubeflow
resources:
- cluster-role-binding.yaml
- cluster-role.yaml
- crd.yaml
- deployment.yaml
- service-account.yaml
commonLabels:
kustomize.component: mxnet-operator
images:
- name: mxjob/mxnet-operator
newName: mxjob/mxnet-operator
newTag: v1beta1
6 changes: 6 additions & 0 deletions mxnet-job/mxnet-operator/base/service-account.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
app: mxnet-operator
name: mxnet-operator
38 changes: 38 additions & 0 deletions mxnet-job/mxnet-operator/overlays/application/application.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
apiVersion: app.k8s.io/v1beta1
kind: Application
metadata:
name: mxnet-operator
spec:
selector:
matchLabels:
app.kubernetes.io/name: mxnet-operator
app.kubernetes.io/instance: mxnet-operator
app.kubernetes.io/version: v0.6.0
app.kubernetes.io/component: mxnet
app.kubernetes.io/part-of: kubeflow
app.kubernetes.io/managed-by: kfctl
componentKinds:
- group: apps
kind: Deployment
- group: core
kind: ServiceAccount
- group: kubeflow.org
kind: MXJob
descriptor:
type: "mxnet-operator"
version: "v1beta1"
description: "mxnet-operator allows users to create and manage the \"MXJob\" custom resource."
maintainers:
- name: Lei Su
email: [email protected]
owners:
- name: Lei Su
email: [email protected]
keywords:
- "MXjob"
- "mxnet-operator"
- "mxnet-training"
links:
- description: About
url: "https://github.com/kubeflow/mxnet-operator"
addOwnerRef: true
13 changes: 13 additions & 0 deletions mxnet-job/mxnet-operator/overlays/application/kustomization.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
bases:
- ../../base
resources:
- application.yaml
commonLabels:
app.kubernetes.io/name: mxnet-operator
app.kubernetes.io/instance: mxnet-operator
app.kubernetes.io/version: v0.6.0
app.kubernetes.io/component: mxnet
app.kubernetes.io/part-of: kubeflow
app.kubernetes.io/managed-by: kfctl
177 changes: 177 additions & 0 deletions tests/mxnet-operator-base_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,177 @@
package tests_test

import (
"sigs.k8s.io/kustomize/k8sdeps/kunstruct"
"sigs.k8s.io/kustomize/k8sdeps/transformer"
"sigs.k8s.io/kustomize/pkg/fs"
"sigs.k8s.io/kustomize/pkg/loader"
"sigs.k8s.io/kustomize/pkg/resmap"
"sigs.k8s.io/kustomize/pkg/resource"
"sigs.k8s.io/kustomize/pkg/target"
"testing"
)

func writeMxnetOperatorBase(th *KustTestHarness) {
th.writeF("/manifests/mxnet-job/mxnet-operator/base/cluster-role-binding.yaml", `
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
labels:
app: mxnet-operator
name: mxnet-operator
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: mxnet-operator
subjects:
- kind: ServiceAccount
name: mxnet-operator
`)
th.writeF("/manifests/mxnet-job/mxnet-operator/base/cluster-role.yaml", `
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
labels:
app: mxnet-operator
name: mxnet-operator
rules:
- apiGroups:
- kubeflow.org
resources:
- mxjobs
verbs:
- '*'
- apiGroups:
- apiextensions.k8s.io
resources:
- customresourcedefinitions
verbs:
- '*'
- apiGroups:
- storage.k8s.io
resources:
- storageclasses
verbs:
- '*'
- apiGroups:
- batch
resources:
- jobs
verbs:
- '*'
- apiGroups:
- ""
resources:
- configmaps
- pods
- services
- endpoints
- persistentvolumeclaims
- events
verbs:
- '*'
- apiGroups:
- apps
- extensions
resources:
- deployments
verbs:
- '*'
`)
th.writeF("/manifests/mxnet-job/mxnet-operator/base/crd.yaml", `
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: mxjobs.kubeflow.org
spec:
group: kubeflow.org
names:
kind: MXJob
plural: mxjobs
singular: mxjob
version: v1beta1
scope: Namespaced
`)
th.writeF("/manifests/mxnet-job/mxnet-operator/base/deployment.yaml", `
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: mxnet-operator
spec:
replicas: 1
template:
metadata:
labels:
name: mxnet-operator
spec:
containers:
- command:
- /opt/kubeflow/mxnet-operator.v1beta1
- --alsologtostderr
- -v=1
env:
- name: MY_POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
image: mxjob/mxnet-operator:v1beta1
imagePullPolicy: Always
name: mxnet-operator
serviceAccountName: mxnet-operator
`)
th.writeF("/manifests/mxnet-job/mxnet-operator/base/service-account.yaml", `
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
app: mxnet-operator
name: mxnet-operator
`)
th.writeK("/manifests/mxnet-job/mxnet-operator/base", `
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: kubeflow
resources:
- cluster-role-binding.yaml
- cluster-role.yaml
- crd.yaml
- deployment.yaml
- service-account.yaml
commonLabels:
kustomize.component: mxnet-operator
images:
- name: mxjob/mxnet-operator
newName: mxjob/mxnet-operator
newTag: v1beta1
`)
}

func TestMxnetOperatorBase(t *testing.T) {
th := NewKustTestHarness(t, "/manifests/mxnet-job/mxnet-operator/base")
writeMxnetOperatorBase(th)
m, err := th.makeKustTarget().MakeCustomizedResMap()
if err != nil {
t.Fatalf("Err: %v", err)
}
targetPath := "../mxnet-job/mxnet-operator/base"
fsys := fs.MakeRealFS()
_loader, loaderErr := loader.NewLoader(targetPath, fsys)
if loaderErr != nil {
t.Fatalf("could not load kustomize loader: %v", loaderErr)
}
rf := resmap.NewFactory(resource.NewFactory(kunstruct.NewKunstructuredFactoryImpl()))
kt, err := target.NewKustTarget(_loader, rf, transformer.NewFactoryImpl())
if err != nil {
th.t.Fatalf("Unexpected construction error %v", err)
}
n, err := kt.MakeCustomizedResMap()
if err != nil {
t.Fatalf("Err: %v", err)
}
expected, err := n.EncodeAsYaml()
th.assertActualEqualsExpected(m, string(expected))
}
Loading