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

Add v1alpha1 XGBoostJob manifests #1113

Merged
merged 3 commits into from
Apr 29, 2020
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
11 changes: 11 additions & 0 deletions xgboost-job/xgboost-operator/base/cluster-role-binding.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: cluster-role-binding
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-role
subjects:
- kind: ServiceAccount
name: service-account
75 changes: 75 additions & 0 deletions xgboost-job/xgboost-operator/base/cluster-role.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: cluster-role
rules:
- apiGroups:
- apps
resources:
- deployments
- deployments/status
verbs:
- get
- list
- watch
- create
- update
- patch
- delete
- apiGroups:
- xgboostjob.kubeflow.org
resources:
- xgboostjobs
- xgboostjobs/status
verbs:
- get
- list
- watch
- create
- update
- patch
- delete
- apiGroups:
- admissionregistration.k8s.io
resources:
- mutatingwebhookconfigurations
- validatingwebhookconfigurations
verbs:
- get
- list
- watch
- create
- update
- patch
- delete
- apiGroups:
- ""
resources:
- configmaps
- endpoints
- events
- namespaces
- persistentvolumeclaims
- pods
- secrets
- services
verbs:
- get
- list
- watch
- create
- update
- patch
- delete
- apiGroups:
- storage.k8s.io
resources:
- storageclasses
verbs:
- get
- list
- watch
- create
- update
- patch
- delete
127 changes: 127 additions & 0 deletions xgboost-job/xgboost-operator/base/crd.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: xgboostjobs.xgboostjob.kubeflow.org
spec:
group: xgboostjob.kubeflow.org
names:
kind: XGBoostJob
plural: xgboostjobs
scope: Namespaced
validation:
openAPIV3Schema:
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation
of an object. Servers should convert recognized schemas to the latest
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this
object represents. Servers may infer this from the endpoint the client
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
properties:
activeDeadlineSeconds:
description: Specifies the duration in seconds relative to the startTime
that the job may be active before the system tries to terminate it;
value must be positive integer.
format: int64
type: integer
backoffLimit:
description: Optional number of retries before marking this job failed.
format: int32
type: integer
cleanPodPolicy:
description: CleanPodPolicy defines the policy to kill pods after the
job completes. Default to Running.
type: string
schedulingPolicy:
description: SchedulingPolicy defines the policy related to scheduling,
e.g. gang-scheduling
properties:
minAvailable:
format: int32
type: integer
type: object
ttlSecondsAfterFinished:
description: TTLSecondsAfterFinished is the TTL to clean up jobs. It
may take extra ReconcilePeriod seconds for the cleanup, since reconcile
gets called periodically. Default to infinite.
format: int32
type: integer
xgbReplicaSpecs:
type: object
required:
- xgbReplicaSpecs
type: object
status:
properties:
completionTime:
description: Represents time when the job was completed. It is not guaranteed
to be set in happens-before order across separate operations. It is
represented in RFC3339 form and is in UTC.
format: date-time
type: string
conditions:
description: Conditions is an array of current observed job conditions.
items:
properties:
lastTransitionTime:
description: Last time the condition transitioned from one status
to another.
format: date-time
type: string
lastUpdateTime:
description: The last time this condition was updated.
format: date-time
type: string
message:
description: A human readable message indicating details about
the transition.
type: string
reason:
description: The reason for the condition's last transition.
type: string
status:
description: Status of the condition, one of True, False, Unknown.
type: string
type:
description: Type of job condition.
type: string
required:
- type
- status
type: object
type: array
lastReconcileTime:
description: Represents last time when the job was reconciled. It is
not guaranteed to be set in happens-before order across separate operations.
It is represented in RFC3339 form and is in UTC.
format: date-time
type: string
replicaStatuses:
description: ReplicaStatuses is map of ReplicaType and ReplicaStatus,
specifies the status of each replica.
type: object
startTime:
description: Represents time when the job was acknowledged by the job
controller. It is not guaranteed to be set in happens-before order
across separate operations. It is represented in RFC3339 form and
is in UTC.
format: date-time
type: string
required:
- conditions
- replicaStatuses
type: object
version: v1alpha1
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []
18 changes: 18 additions & 0 deletions xgboost-job/xgboost-operator/base/deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: deployment
spec:
template:
metadata:
labels:
app: xgboost-operator
spec:
containers:
- name: xgboost-operator
command:
- /root/manager
- -mode=in-cluster
image: gcr.io/kubeflow-images-public/xgboost-operator:v1.0
imagePullPolicy: Always
serviceAccountName: service-account
18 changes: 18 additions & 0 deletions xgboost-job/xgboost-operator/base/kustomization.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- cluster-role.yaml
- cluster-role-binding.yaml
- crd.yaml
- deployment.yaml
- service-account.yaml
- service.yaml
namespace: kubeflow
nameprefix: xgboost-operator-
configMapGenerator:
- name: xgboost-operator-config
env: params.env
images:
- name: gcr.io/kubeflow-images-public/xgboost-operator
newName: gcr.io/kubeflow-images-public/xgboost-operator
newTag: 8e29825
Empty file.
4 changes: 4 additions & 0 deletions xgboost-job/xgboost-operator/base/service-account.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: service-account
16 changes: 16 additions & 0 deletions xgboost-job/xgboost-operator/base/service.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
apiVersion: v1
kind: Service
metadata:
name: service
annotations:
prometheus.io/path: /metrics
prometheus.io/scrape: "true"
prometheus.io/port: "8080"
labels:
app: xgboost-operator
spec:
type: ClusterIP
selector:
app: xgboost-operator
ports:
- port: 443
39 changes: 39 additions & 0 deletions xgboost-job/xgboost-operator/overlays/application/application.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
apiVersion: app.k8s.io/v1beta1
kind: Application
metadata:
name: xgboost-operator
spec:
selector:
matchLabels:
app.kubernetes.io/name: xgboost-operator
app.kubernetes.io/instance: xgboost-operator
app.kubernetes.io/managed-by: kfctl
app.kubernetes.io/component: xgboostjob
app.kubernetes.io/part-of: kubeflow
componentKinds:
- group: core
kind: Service
- group: extensions/v1beta1
kind: Deployment
- group: core
kind: ServiceAccount
- group: xgboostjob.kubeflow.org
kind: XGBoostJob
descriptor:
type: xgboostjob
version: v1alpha1
description: XGBoost is an optimized distributed gradient boosting library designed to be highly efficient, flexible and portable
maintainers:
- name: Yuan Tang
email: terrytangyuan@gmail.com
- name: Hemantha kumara
email: mshemantha@gmail.com
owners:
- name: Yuan Tang
email: terrytangyuan@gmail.com
keywords:
- xgboost
links:
- description: About
url: "https://xgboost.ai/about"
addOwnerRef: true
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
apiVersion: kustomize.config.k8s.io/v1beta1
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Application should not depend on base.
The application manifest is not overloading any resources defined in the base package.
So either

  1. create a single package which includes the application resource
    or
  2. Create 2 separate packages one with the base resources and one with the application resource
    and then create a 3rd package to update them.

kind: Kustomization
bases:
- ../../base
resources:
- application.yaml
commonLabels:
app.kubernetes.io/name: xgboost-operator
app.kubernetes.io/instance: xgboost-operator
app.kubernetes.io/managed-by: kfctl
app.kubernetes.io/component: xgboostjob
app.kubernetes.io/part-of: kubeflow