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

Integrate ACK into kubeflow #339

Merged
merged 1 commit into from
Sep 1, 2022
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 awsconfigs/apps/pipeline/base/kustomization.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: kubeflow
bases:
- ../../../../upstream/apps/pipeline/upstream/env/cert-manager/platform-agnostic-multi-user

images:
- name: gcr.io/ml-pipeline/api-server
newName: public.ecr.aws/c9e4w0g3/ml-pipeline/api-server
newTag: dev-2.0.0-alpha.3

2 changes: 1 addition & 1 deletion awsconfigs/apps/pipeline/kustomization.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: kubeflow
bases:
- ../../../upstream/apps/pipeline/upstream/env/cert-manager/platform-agnostic-multi-user
- ./base
configMapGenerator:
- name: pipeline-install-config
env: ./rds/params.env
Expand Down
2 changes: 1 addition & 1 deletion awsconfigs/apps/pipeline/rds/kustomization.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: kubeflow
bases:
- ../../../../upstream/apps/pipeline/upstream/env/cert-manager/platform-agnostic-multi-user
- ../base
configMapGenerator:
- name: pipeline-install-config
env: params.env
Expand Down
2 changes: 1 addition & 1 deletion awsconfigs/apps/pipeline/s3/kustomization.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: kubeflow
bases:
- ../../../../upstream/apps/pipeline/upstream/env/cert-manager/platform-agnostic-multi-user
- ../base
configMapGenerator:
- name: pipeline-install-config
env: params.env
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
apiVersion: v1
kind: Namespace
metadata:
labels:
control-plane: controller
name: ack-system
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: ack-sagemaker-controller
namespace: ack-system
labels:
control-plane: controller
spec:
selector:
matchLabels:
control-plane: controller
replicas: 1
template:
metadata:
labels:
control-plane: controller
spec:
containers:
- command:
- ./bin/controller
args:
- --aws-region
- "$(AWS_REGION)"
- --aws-endpoint-url
- "$(AWS_ENDPOINT_URL)"
- --enable-development-logging
- "$(ACK_ENABLE_DEVELOPMENT_LOGGING)"
- --log-level
- "$(ACK_LOG_LEVEL)"
- --resource-tags
- "$(ACK_RESOURCE_TAGS)"
- --watch-namespace
- "$(ACK_WATCH_NAMESPACE)"
image: controller:latest
name: controller
ports:
- name: http
containerPort: 8080
resources:
limits:
cpu: 100m
memory: 300Mi
requests:
cpu: 100m
memory: 200Mi
env:
- name: ACK_SYSTEM_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: AWS_REGION
value: ""
- name: AWS_ENDPOINT_URL
value: ""
- name: ACK_WATCH_NAMESPACE
value: ""
- name: ACK_ENABLE_DEVELOPMENT_LOGGING
value: "false"
- name: ACK_LOG_LEVEL
value: "info"
- name: ACK_RESOURCE_TAGS
value: "services.k8s.aws/controller-version=%CONTROLLER_SERVICE%-%CONTROLLER_VERSION%,services.k8s.aws/namespace=%K8S_NAMESPACE%"
securityContext:
allowPrivilegeEscalation: false
privileged: false
runAsNonRoot: true
capabilities:
drop:
- ALL
terminationGracePeriodSeconds: 10
serviceAccountName: ack-sagemaker-controller
hostIPC: false
hostNetwork: false
hostPID: false
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
resources:
- deployment.yaml
- service.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
images:
- name: controller
newName: public.ecr.aws/aws-controllers-k8s/sagemaker-controller
newTag: v0.3.4
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
apiVersion: v1
kind: Service
metadata:
name: ack-sagemaker-metrics-service
namespace: ack-system
spec:
selector:
control-plane: controller
ports:
- name: metricsport
port: 8080
targetPort: http
protocol: TCP
type: NodePort
Original file line number Diff line number Diff line change
@@ -0,0 +1,176 @@

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.7.0
creationTimestamp: null
name: apps.sagemaker.services.k8s.aws
spec:
group: sagemaker.services.k8s.aws
names:
kind: App
listKind: AppList
plural: apps
singular: app
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .status.status
name: STATUS
type: string
name: v1alpha1
schema:
openAPIV3Schema:
description: App is the Schema for the Apps API
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/sig-architecture/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/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
description: AppSpec defines the desired state of App.
properties:
appName:
description: The name of the app.
type: string
appType:
description: The type of app. Supported apps are JupyterServer and
KernelGateway. TensorBoard is not supported.
type: string
domainID:
description: The domain ID.
type: string
resourceSpec:
description: The instance type and the Amazon Resource Name (ARN)
of the SageMaker image created on the instance.
properties:
instanceType:
type: string
lifecycleConfigARN:
type: string
sageMakerImageARN:
type: string
sageMakerImageVersionARN:
type: string
type: object
tags:
description: Each tag consists of a key and an optional value. Tag
keys must be unique per resource.
items:
description: "A tag object that consists of a key and an optional
value, used to manage metadata for SageMaker Amazon Web Services
resources. \n You can add tags to notebook instances, training
jobs, hyperparameter tuning jobs, batch transform jobs, models,
labeling jobs, work teams, endpoint configurations, and endpoints.
For more information on adding tags to SageMaker resources, see
AddTags. \n For more information on adding metadata to your Amazon
Web Services resources with tagging, see Tagging Amazon Web Services
resources (https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html).
For advice on best practices for managing Amazon Web Services
resources with tagging, see Tagging Best Practices: Implement
an Effective Amazon Web Services Resource Tagging Strategy (https://d1.awsstatic.com/whitepapers/aws-tagging-best-practices.pdf)."
properties:
key:
type: string
value:
type: string
type: object
type: array
userProfileName:
description: The user profile name.
type: string
required:
- appName
- appType
- domainID
- userProfileName
type: object
status:
description: AppStatus defines the observed state of App
properties:
ackResourceMetadata:
description: All CRs managed by ACK have a common `Status.ACKResourceMetadata`
member that is used to contain resource sync state, account ownership,
constructed ARN for the resource
properties:
arn:
description: 'ARN is the Amazon Resource Name for the resource.
This is a globally-unique identifier and is set only by the
ACK service controller once the controller has orchestrated
the creation of the resource OR when it has verified that an
"adopted" resource (a resource where the ARN annotation was
set by the Kubernetes user on the CR) exists and matches the
supplied CR''s Spec field values. TODO(vijat@): Find a better
strategy for resources that do not have ARN in CreateOutputResponse
https://github.com/aws/aws-controllers-k8s/issues/270'
type: string
ownerAccountID:
description: OwnerAccountID is the AWS Account ID of the account
that owns the backend AWS service API resource.
type: string
region:
description: Region is the AWS region in which the resource exists
or will exist.
type: string
required:
- ownerAccountID
- region
type: object
conditions:
description: All CRS managed by ACK have a common `Status.Conditions`
member that contains a collection of `ackv1alpha1.Condition` objects
that describe the various terminal states of the CR and its backend
AWS service API resource
items:
description: Condition is the common struct used by all CRDs managed
by ACK service controllers to indicate terminal states of the
CR and its backend AWS service API resource
properties:
lastTransitionTime:
description: Last time the condition transitioned from one status
to another.
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 is the type of the Condition
type: string
required:
- status
- type
type: object
type: array
status:
description: The status.
type: string
type: object
type: object
served: true
storage: true
subresources:
status: {}
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []
Loading