-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add support for Standalone KFP on AWS
- Loading branch information
Yao Xiao
authored and
Yao Xiao
committed
Aug 13, 2020
1 parent
1d8abb7
commit 54327b1
Showing
10 changed files
with
255 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
approvers: | ||
- Jeffwan | ||
- PatrickXYS |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
# Sample installation | ||
|
||
1. Create an EKS cluster and setup kubectl context | ||
|
||
Using configuration file to simplify EKS cluster creation process: | ||
``` | ||
apiVersion: eksctl.io/v1alpha5 | ||
kind: ClusterConfig | ||
metadata: | ||
name: kfworkshop | ||
region: us-west-2 | ||
version: '1.17' | ||
# If your region has multiple availability zones, you can specify 3 of them. | ||
availabilityZones: ["us-west-2b", "us-west-2c", "us-west-2d"] | ||
# NodeGroup holds all configuration attributes that are specific to a nodegroup | ||
# You can have several node group in your cluster. | ||
nodeGroups: | ||
- name: cpu-nodegroup | ||
instanceType: m5.xlarge | ||
desiredCapacity: 2 | ||
minSize: 0 | ||
maxSize: 4 | ||
volumeSize: 50 | ||
# ssh: | ||
# allow: true | ||
# publicKeyPath: '~/.ssh/id_rsa.pub' | ||
# Example of GPU node group | ||
- name: Tesla-V100 | ||
instanceType: p3.8xlarge | ||
# Make sure the availability zone here is one of cluster availability zones. | ||
availabilityZones: ["us-west-2b"] | ||
desiredCapacity: 0 | ||
minSize: 0 | ||
maxSize: 4 | ||
volumeSize: 50 | ||
# ssh: | ||
# allow: true | ||
# publicKeyPath: '~/.ssh/id_rsa.pub' | ||
``` | ||
Run this command to create EKS cluster | ||
``` | ||
eksctl create cluster -f cluster.yaml | ||
``` | ||
|
||
2. Prepare S3 | ||
|
||
Create S3 bucket. [Console](https://console.aws.amazon.com/s3/home). | ||
|
||
Run this command to create S3 bucket by changing `<YOUR_S3_BUCKET_NAME>` to your prefer s3 bucket name. | ||
|
||
``` | ||
export S3_BUCKET=<YOUR_S3_BUCKET_NAME> | ||
export AWS_REGION=us-west-2 | ||
aws s3 mb s3://$S3_BUCKET --region $AWS_REGION | ||
``` | ||
|
||
3. Prepare RDS | ||
|
||
Follow this [doc](https://www.kubeflow.org/docs/aws/rds/#deploy-amazon-rds-mysql-in-your-environment) to set up AWS RDS instance. | ||
|
||
4. Customize your values | ||
- Edit [params.env](params.env), [secret.env](secret.env) and [minio-artifact-secret-patch.env](minio-artifact-secret-patch.env) | ||
|
||
5. Install | ||
|
||
``` | ||
kubectl apply -k ../../cluster-scoped-resources | ||
kubectl wait crd/applications.app.k8s.io --for condition=established --timeout=60s | ||
kubectl apply -k ./ | ||
# If upper one action got failed, e.x. you used wrong value, try delete, fix and apply again | ||
# kubectl delete -k ./ | ||
kubectl wait applications/mypipeline -n kubeflow --for condition=Ready --timeout=1800s | ||
kubectl port-forward -n kubeflow svc/ml-pipeline-ui 8080:80 | ||
``` | ||
|
||
Now you can access via `localhost:8080` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
apiVersion: apps/v1 | ||
kind: Deployment | ||
metadata: | ||
name: ml-pipeline-ui | ||
spec: | ||
template: | ||
metadata: | ||
labels: | ||
app: ml-pipeline-ui | ||
spec: | ||
volumes: | ||
- name: config-volume | ||
configMap: | ||
name: ml-pipeline-ui-configmap | ||
containers: | ||
- name: ml-pipeline-ui | ||
env: | ||
- name: AWS_ACCESS_KEY_ID | ||
valueFrom: | ||
secretKeyRef: | ||
name: mlpipeline-minio-artifact | ||
key: accesskey | ||
- name: AWS_SECRET_ACCESS_KEY | ||
valueFrom: | ||
secretKeyRef: | ||
name: mlpipeline-minio-artifact | ||
key: secretkey | ||
|
||
--- | ||
apiVersion: apps/v1 | ||
kind: Deployment | ||
metadata: | ||
name: ml-pipeline | ||
spec: | ||
template: | ||
metadata: | ||
labels: | ||
app: ml-pipeline | ||
spec: | ||
containers: | ||
- env: | ||
- name: OBJECTSTORECONFIG_SECURE | ||
value: "true" | ||
- name: OBJECTSTORECONFIG_BUCKETNAME | ||
valueFrom: | ||
configMapKeyRef: | ||
name: pipeline-install-config | ||
key: bucketName | ||
- name: OBJECTSTORECONFIG_HOST | ||
valueFrom: | ||
configMapKeyRef: | ||
name: pipeline-install-config | ||
key: minioServiceHost | ||
- name: OBJECTSTORECONFIG_REGION | ||
valueFrom: | ||
configMapKeyRef: | ||
name: pipeline-install-config | ||
key: minioServiceRegion | ||
- name: OBJECTSTORECONFIG_PORT | ||
value: "" | ||
name: ml-pipeline-api-server |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
{ | ||
namespace: $(kfp-namespace), | ||
executorImage: gcr.io/ml-pipeline/argoexec:v2.7.5-license-compliance, | ||
containerRuntimeExecutor: $(kfp-container-runtime-executor), | ||
artifactRepository: | ||
{ | ||
s3: { | ||
bucket: $(kfp-artifact-bucket-name), | ||
keyPrefix: artifacts, | ||
endpoint: s3.amazonaws.com, | ||
insecure: true, | ||
accessKeySecret: { | ||
name: mlpipeline-minio-artifact, | ||
key: accesskey | ||
}, | ||
secretKeySecret: { | ||
name: mlpipeline-minio-artifact, | ||
key: secretkey | ||
} | ||
}, | ||
archiveLogs: true | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
apiVersion: kustomize.config.k8s.io/v1beta1 | ||
kind: Kustomization | ||
namespace: kubeflow | ||
bases: | ||
- ../../env/platform-agnostic | ||
configMapGenerator: | ||
- name: pipeline-install-config | ||
env: params.env | ||
behavior: merge | ||
- name: workflow-controller-configmap | ||
behavior: replace | ||
files: | ||
- config | ||
- name: ml-pipeline-ui-configmap | ||
behavior: replace | ||
files: | ||
- viewer-pod-template.json | ||
secretGenerator: | ||
- name: mysql-secret | ||
env: secret.env | ||
behavior: merge | ||
- name: mlpipeline-minio-artifact | ||
env: minio-artifact-secret-patch.env | ||
behavior: merge | ||
generatorOptions: | ||
disableNameSuffixHash: true | ||
patchesStrategicMerge: | ||
- aws-configuration-patch.yaml | ||
# Identifier for application manager to apply ownerReference. | ||
# The ownerReference ensures the resources get garbage collected | ||
# when application is deleted. | ||
commonLabels: | ||
application-crd-id: kubeflow-pipelines |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
accesskey=YOUR_AWS_ACCESS_ID | ||
secretkey=YOUR_AWS_SECRET_KEY |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
dbHost=YOUR_RDS_ENDPOINT | ||
|
||
bucketName=YOUR_S3_BUCKET_NAME | ||
minioServiceHost=s3.amazonaws.com | ||
minioServiceRegion=YOUR_AWS_REGION |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
username=YOUR_RDS_USERNAME | ||
password=YOUR_RDS_PASSWORD |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
{ | ||
"spec": { | ||
"containers": [ | ||
{ | ||
"env": [ | ||
{ | ||
"name": "AWS_ACCESS_KEY_ID", | ||
"valueFrom": { | ||
"secretKeyRef": { | ||
"name": "mlpipeline-minio-artifact", | ||
"key": "accesskey" | ||
} | ||
} | ||
}, | ||
{ | ||
"name": "AWS_SECRET_ACCESS_KEY", | ||
"valueFrom": { | ||
"secretKeyRef": { | ||
"name": "mlpipeline-minio-artifact", | ||
"key": "secretkey" | ||
} | ||
} | ||
}, | ||
{ | ||
"name": "AWS_REGION", | ||
"valueFrom": { | ||
"configMapKeyRef": { | ||
"name": "pipeline-install-config", | ||
"key": "minioServiceRegion" | ||
} | ||
} | ||
} | ||
] | ||
} | ||
] | ||
} | ||
} |