Customizing Kubeflow on AWS

Tailoring a AWS deployment of Kubeflow

This guide describes how to customize your deployment of Kubeflow on Amazon EKS. These steps can be done before you run apply -V -f ${CONFIG_FILE} command. Please see the following sections for details. If you don’t understand the deployment process, please see deploy for details.

Customize your Amazon EKS cluster

Note: This is only working for user who like kfctl to create a new EKS cluster. If you already have the cluster, you can skip this section.

Before you run kfctl apply -V -f ${CONFIG_FILE}, you can edit the cluster configuration file to change cluster specification before you create the cluster.

For example, the following is a cluster manifest with one node group which has 2 p2.xlarge instances. You can easily enable SSH and configure a public key. All worker nodes will be in single Availability Zone.

  1. apiVersion: eksctl.io/v1alpha5
  2. kind: ClusterConfig
  3. metadata:
  4. # AWS_CLUSTER_NAME and AWS_REGION will override `name` and `region` here.
  5. name: kubeflow-example
  6. region: us-west-2
  7. version: '1.17'
  8. # If your region has multiple availability zones, you can specify 3 of them.
  9. #availabilityZones: ["us-west-2b", "us-west-2c", "us-west-2d"]
  10. # NodeGroup holds all configuration attributes that are specific to a nodegroup
  11. # You can have several node groups in your cluster.
  12. nodeGroups:
  13. - name: eks-gpu
  14. instanceType: p2.xlarge
  15. availabilityZones: ["us-west-2b"]
  16. desiredCapacity: 2
  17. minSize: 0
  18. maxSize: 2
  19. volumeSize: 30
  20. ssh:
  21. allow: true
  22. publicKeyPath: '~/.ssh/id_rsa.pub'
  23. # Example of GPU node group
  24. # - name: Tesla-V100
  25. # Choose your Instance type for the node group.
  26. # instanceType: p3.2xlarge
  27. # GPU cluster can use single availability zone to improve network performance
  28. # availabilityZones: ["us-west-2b"]
  29. # Autoscaling Groups settings
  30. # desiredCapacity: 0
  31. # minSize: 0
  32. # maxSize: 4
  33. # Node Root Disk
  34. # volumeSize: 50
  35. # Enable SSH out side your VPC.
  36. # allowSSH: true
  37. # publicKeyPath: '~/.ssh/id_rsa.pub'
  38. # Customize Labels
  39. # labels:
  40. # 'k8s.amazonaws.com/accelerator': 'nvidia-tesla-k80'
  41. # Setup pre-defined iam roles to node group.
  42. # iam:
  43. # withAddonPolicies:
  44. # autoScaler: true

Customize Authentication

If you use https://raw.githubusercontent.com/kubeflow/manifests/v1.1-branch/kfdef/kfctl_aws.v1.1.0.yaml, you can consider to change the default password in the configuration file. The configuration file contains:

  1. spec:
  2. auth:
  3. basicAuth:
  4. password: 12341234
  5. username: admin@kubeflow.org

If you use https://raw.githubusercontent.com/kubeflow/manifests/v1.1-branch/kfdef/kfctl_aws_cognito.v1.1.0.yaml, please see this section

Customize IAM Role for Pods

Please see this section

Customize Private Access

Please see this section

Customize Logging

Please see this section

Last modified 04.08.2020: Remove outdate banner for AWS docs (#2080) (efc5b0cf)