<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Kubeflow – Deployment</title>
    <link>/docs/aws/deploy/</link>
    <description>Recent content in Deployment on Kubeflow</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    
	  <atom:link href="/docs/aws/deploy/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>Docs: Install Kubeflow</title>
      <link>/docs/aws/deploy/install-kubeflow/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/aws/deploy/install-kubeflow/</guid>
      <description>
        
        
        &lt;p&gt;This guide describes how to use the kfctl CLI to
deploy Kubeflow on Amazon Web Services (AWS).&lt;/p&gt;
&lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Install &lt;a href=&#34;https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-kubectl&#34;&gt;kubectl&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Install and configure the AWS Command Line Interface (AWS CLI):
&lt;ul&gt;
&lt;li&gt;Install the &lt;a href=&#34;https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html&#34;&gt;AWS Command Line Interface&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Configure the AWS CLI by running the following command: &lt;code&gt;aws configure&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Enter your Access Keys (&lt;a href=&#34;https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys&#34;&gt;Access Key ID and Secret Access Key&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;Enter your preferred AWS Region and default output options.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Install &lt;a href=&#34;https://github.com/weaveworks/eksctl&#34;&gt;eksctl&lt;/a&gt; (version 0.1.31 or newer) and the &lt;a href=&#34;https://docs.aws.amazon.com/eks/latest/userguide/install-aws-iam-authenticator.html&#34;&gt;aws-iam-authenticator&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;eks-cluster&#34;&gt;EKS cluster&lt;/h2&gt;
&lt;p&gt;There&amp;rsquo;re many ways to provision EKS cluster, using AWS EKS CLI, CloudFormation or Terraform, AWS CDK or eksctl.
Here, we highly recommend you to create an EKS cluster using &lt;a href=&#34;https://github.com/weaveworks/eksctl&#34;&gt;eksctl&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You are required to have an existing Amazon Elastic Kubernetes Service (Amazon EKS) cluster before moving the next step.&lt;/p&gt;
&lt;p&gt;The installation tool uses the &lt;code&gt;eksctl&lt;/code&gt; command and doesn&amp;rsquo;t support the &lt;code&gt;--profile&lt;/code&gt; option in that command.
If you need to switch role, use the &lt;code&gt;aws sts assume-role&lt;/code&gt; commands. See the AWS guide to &lt;a href=&#34;https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html&#34;&gt;using temporary security credentials to request access to AWS resources&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a id=&#34;prepare-environment&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;prepare-your-environment&#34;&gt;Prepare your environment&lt;/h2&gt;
&lt;p&gt;In order to deploy Kubeflow on your existing Amazon EKS cluster, you need to provide &lt;code&gt;AWS_CLUSTER_NAME&lt;/code&gt;, &lt;code&gt;cluster region&lt;/code&gt; and &lt;code&gt;worker roles&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Follow these steps to download the kfctl binary for the Kubeflow CLI and set
some handy environment variables:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Download the kfctl v1.0.2 release from the
&lt;a href=&#34;https://github.com/kubeflow/kfctl/releases/tag/v1.0.2&#34;&gt;Kubeflow releases
page&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Unpack the tar ball:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;tar -xvf kfctl_v1.0.2_&amp;lt;platform&amp;gt;.tar.gz
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Create environment variables to make the deployment process easier:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# Add kfctl to PATH, to make the kfctl binary easier to use.
export PATH=$PATH:&amp;quot;&amp;lt;path to kfctl&amp;gt;&amp;quot;

# Use the following kfctl configuration file for the AWS setup without authentication:
export CONFIG_URI=&amp;quot;https://raw.githubusercontent.com/kubeflow/manifests/v1.0-branch/kfdef/kfctl_aws.v1.0.2.yaml&amp;quot;

# Alternatively, use the following kfctl configuration if you want to enable
# authentication, authorization and multi-user:
export CONFIG_URI=&amp;quot;https://raw.githubusercontent.com/kubeflow/manifests/v1.0-branch/kfdef/kfctl_aws_cognito.v1.0.2.yaml&amp;quot;

# Set an environment variable for your AWS cluster name, and set the name
# of the Kubeflow deployment to the same as the cluster name.
export AWS_CLUSTER_NAME=&amp;lt;YOUR EKS CLUSTER NAME&amp;gt;
export KF_NAME=${AWS_CLUSTER_NAME}

# Set the path to the base directory where you want to store one or more
# Kubeflow deployments. For example, /opt/.
# Then set the Kubeflow application directory for this deployment.
export BASE_DIR=&amp;lt;path to a base directory&amp;gt;
export KF_DIR=${BASE_DIR}/${KF_NAME}
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Notes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;${CONFIG_URI}&lt;/strong&gt; - The GitHub address of the configuration YAML file that
you want to use to deploy Kubeflow. For AWS deployments, the following
configurations are available:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;https://raw.githubusercontent.com/kubeflow/manifests/v1.0-branch/kfdef/kfctl_aws.v1.0.2.yaml&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;https://raw.githubusercontent.com/kubeflow/manifests/v1.0-branch/kfdef/kfctl_aws_cognito.v1.0.2.yaml&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;When you run &lt;code&gt;kfctl apply&lt;/code&gt; or &lt;code&gt;kfctl build&lt;/code&gt; (see the next step), kfctl creates
a local version of the configuration YAML file which you can further
customize if necessary.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;${KF_NAME}&lt;/strong&gt; - The name of your Kubeflow deployment.
You should set this value to be the same as your AWS cluster name.
The value of KF_NAME must consist of lower case alphanumeric characters or
&amp;lsquo;-&amp;rsquo;, and must start and end with an alphanumeric character.
The value of this variable cannot be greater than 25 characters. It must
contain just a name, not a directory path.
This value also becomes the name of the directory where your Kubeflow
configurations are stored, that is, the Kubeflow application directory.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;${KF_DIR}&lt;/strong&gt; - The full path to your Kubeflow application directory.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;set-up-your-kubeflow-configuration&#34;&gt;Set up your Kubeflow configuration&lt;/h2&gt;
&lt;p&gt;Download your configuration files, so that you can customize the
configuration before deploying Kubeflow:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mkdir -p ${KF_DIR}
cd ${KF_DIR}

wget -O kfctl_aws.yaml $CONFIG_URI
export CONFIG_FILE=${KF_DIR}/kfctl_aws.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;configure-kubeflow&#34;&gt;Configure Kubeflow&lt;/h2&gt;
&lt;p&gt;In v1.0.1, Kubeflow supports to use &lt;a href=&#34;https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html&#34;&gt;AWS IAM Roles for Service Account&lt;/a&gt; to fine grain control AWS service access.
kfctl will create two roles &lt;code&gt;kf-admin-${cluster_name}&lt;/code&gt; and &lt;code&gt;kf-user-${cluster_name}&lt;/code&gt; and Kubernetes service account &lt;code&gt;kf-admin&lt;/code&gt; and &lt;code&gt;kf-user&lt;/code&gt; under kubeflow namespace. &lt;code&gt;kf-admin-${cluster_name}&lt;/code&gt; will be assumed by components like &lt;code&gt;alb-ingress-controller&lt;/code&gt;, &lt;code&gt;profile-controller&lt;/code&gt; or any Kubeflow control plane components which need to talk to AWS services. &lt;code&gt;kf-user-${cluster_name}&lt;/code&gt; can be used by user&amp;rsquo;s application.&lt;/p&gt;
&lt;p&gt;This is only available on EKS, for DIY Kubernetes on AWS, check out &lt;a href=&#34;https://github.com/aws/amazon-eks-pod-identity-webhook/&#34;&gt;aws/amazon-eks-pod-identity-webhook&lt;/a&gt; to setup webhook.&lt;/p&gt;
&lt;p&gt;Traditional way to attach IAM policies to node group role is still working, feel free choose the way you like to use.&lt;/p&gt;
&lt;h3 id=&#34;option-1-use-iam-for-service-account&#34;&gt;Option 1: Use IAM For Service Account&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;kfctl&lt;/code&gt; will help create or reuse IAM OIDC Identity Provider, create role and handle trust relationship binding with Kubernetes Service Accounts.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Note: By default, we don&amp;rsquo;t attach any policies to &lt;code&gt;kf-user-${cluster_name}&lt;/code&gt;, you can attach policies based on your need.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Add &lt;code&gt;enablePodIamPolicy: true&lt;/code&gt; in your &lt;code&gt;${CONFIG_FILE}&lt;/code&gt; file:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;region: us-west-2
enablePodIamPolicy: true

# you can delete following roles settings.
#roles:
#- eksctl-kubeflow-example-nodegroup-ng-185-NodeInstanceRole-1DDJJXQBG9EM6
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Check &lt;a href=&#34;/docs/aws/iam-for-sa&#34;&gt;IAM Role For Service Account&lt;/a&gt; for more usage.&lt;/p&gt;
&lt;h3 id=&#34;option-2-use-node-group-role&#34;&gt;Option 2: Use Node Group Role&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Replace the AWS cluster name in your &lt;code&gt;${CONFIG_FILE}&lt;/code&gt; file, by changing
the value &lt;code&gt;kubeflow-aws&lt;/code&gt; to &lt;code&gt;${AWS_CLUSTER_NAME}&lt;/code&gt; in multiple locations in
the file. For example, use this &lt;code&gt;sed&lt;/code&gt; command:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sed -i&#39;.bak&#39; -e &#39;s/kubeflow-aws/&#39;&amp;quot;$AWS_CLUSTER_NAME&amp;quot;&#39;/&#39; ${CONFIG_FILE}
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Retrieve the AWS Region and IAM role name for your worker nodes.
To get the IAM role name for your Amazon EKS worker node, run the following
command:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;aws iam list-roles \
    | jq -r &amp;quot;.Roles[] \
    | select(.RoleName \
    | startswith(\&amp;quot;eksctl-$AWS_CLUSTER_NAME\&amp;quot;) and contains(\&amp;quot;NodeInstanceRole\&amp;quot;)) \
    .RoleName&amp;quot;

eksctl-kubeflow-example-nodegroup-ng-185-NodeInstanceRole-1DDJJXQBG9EM6
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Note: The above command assumes that you used &lt;code&gt;eksctl&lt;/code&gt; to create your
cluster. If you use other provisioning tools to create your worker node
groups, find the role that is associated with your worker nodes in the
Amazon EC2 console.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Change cluster region and worker role names in your &lt;code&gt;${CONFIG_FILE}&lt;/code&gt; file:&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;region: us-west-2
roles:
- eksctl-kubeflow-example-nodegroup-ng-185-NodeInstanceRole-1DDJJXQBG9EM6
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If you have multiple node groups, you will see corresponding number of node group roles. In that case, please provide the role names as an array.&lt;/p&gt;
&lt;h2 id=&#34;deploy-kubeflow&#34;&gt;Deploy Kubeflow&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Run the following commands to initialize the Kubeflow cluster:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd ${KF_DIR}
kfctl apply -V -f ${CONFIG_FILE}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;em&gt;Important!!!&lt;/em&gt; By default, these scripts create an AWS Application Load Balancer for Kubeflow that is open to public. This is good for development testing and for short term use, but we do not recommend that you use this configuration for production workloads.&lt;/p&gt;
&lt;p&gt;To secure your installation, Follow the &lt;a href=&#34;/docs/aws/authentication&#34;&gt;instructions&lt;/a&gt; to add authentication and authorization.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Wait for all the resources to become ready in the &lt;code&gt;kubeflow&lt;/code&gt; namespace.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;kubectl -n kubeflow get all
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;access-kubeflow-central-dashboard&#34;&gt;Access Kubeflow central dashboard&lt;/h2&gt;
&lt;p&gt;If you are using &lt;a href=&#34;https://raw.githubusercontent.com/kubeflow/manifests/v1.0-branch/kfdef/kfctl_aws_cognito.v1.0.2.yaml,&#34;&gt;https://raw.githubusercontent.com/kubeflow/manifests/v1.0-branch/kfdef/kfctl_aws_cognito.v1.0.2.yaml,&lt;/a&gt; run following command to get Kubeflow service endpoint host name and copy link in browser.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;kubectl get ingress -n istio-system

NAMESPACE      NAME            HOSTS   ADDRESS                                                             PORTS   AGE
istio-system   istio-ingress   *       a743484b-istiosystem-istio-2af2-xxxxxx.us-west-2.elb.amazonaws.com   80      1h
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This deployment may take 3-5 minutes to become ready. Verify that the address works by opening it in your preferred Internet browser.&lt;/p&gt;
&lt;p&gt;If you are using &lt;a href=&#34;https://raw.githubusercontent.com/kubeflow/manifests/v1.0-branch/kfdef/kfctl_aws.v1.0.2.yaml,&#34;&gt;https://raw.githubusercontent.com/kubeflow/manifests/v1.0-branch/kfdef/kfctl_aws.v1.0.2.yaml,&lt;/a&gt; the Kubeflow Dashboard can be accessed via istio-ingressgateway service.&lt;/p&gt;
&lt;p&gt;You can run following command to port forward to local, then open &lt;code&gt;http://localhost:8080&lt;/code&gt; in browser.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl port-forward svc/istio-ingressgateway -n istio-system 8080:80&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Check more details &lt;a href=&#34;https://istio.io/docs/tasks/traffic-management/ingress/ingress-control/&#34;&gt;Ingress Gateway guide&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To expose Kubeflow with a LoadBalancer Service, just change the type of the &lt;code&gt;istio-ingressgateway&lt;/code&gt; Service to &lt;code&gt;LoadBalancer&lt;/code&gt;.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl patch service -n istio-system istio-ingressgateway -p &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;{&amp;#34;spec&amp;#34;: {&amp;#34;type&amp;#34;: &amp;#34;LoadBalancer&amp;#34;}}&amp;#39;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;While the change is being applied, you can watch the service until below command prints a value under the &lt;code&gt;EXTERNAL-IP&lt;/code&gt; column:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl get -w -n istio-system svc/istio-ingressgateway&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The external IP should be accessible by visiting http://&lt;EXTERNAL-IP&gt;. Note that above installation instructions do not create any protection for the external endpoint so it will be accessible to anyone without any authentication. To secure your installation, use &lt;a href=&#34;https://raw.githubusercontent.com/kubeflow/manifests/v1.0-branch/kfdef/kfctl_aws_cognito.v1.0.2.yaml&#34;&gt;https://raw.githubusercontent.com/kubeflow/manifests/v1.0-branch/kfdef/kfctl_aws_cognito.v1.0.2.yaml&lt;/a&gt; and follow the &lt;a href=&#34;/docs/aws/authentication&#34;&gt;instructions&lt;/a&gt; to add authentication and authorization.&lt;/p&gt;
&lt;h2 id=&#34;post-installation&#34;&gt;Post Installation&lt;/h2&gt;
&lt;p&gt;Kubeflow provides multi-tenancy support and user are not able to create notebooks in &lt;code&gt;kubeflow&lt;/code&gt;, &lt;code&gt;default&lt;/code&gt; namespace.&lt;/p&gt;
&lt;p&gt;The first time you visit the cluster, you can ceate a namespace &lt;code&gt;anonymous&lt;/code&gt; to use. If you want to create different users, you can create &lt;code&gt;Profile&lt;/code&gt; and then &lt;code&gt;kubectl apply -f profile.yaml&lt;/code&gt;. Profile controller will create new namespace and service account which is allowed to create notebook in that namespace.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;apiVersion&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;kubeflow.org/v1beta1&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;kind&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Profile&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;metadata&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;aws-sample-user&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;spec&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;owner&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;kind&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;User&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;aws-sample-user&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Check &lt;a href=&#34;/docs/components/multi-tenancy&#34;&gt;Multi-Tenancy in Kubeflow&lt;/a&gt; for more details.&lt;/p&gt;
&lt;h2 id=&#34;understanding-the-deployment-process&#34;&gt;Understanding the deployment process&lt;/h2&gt;
&lt;p&gt;The kfctl deployment process is controlled by the following commands:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;kfctl build&lt;/code&gt; - (Optional) Creates configuration files defining the various
resources in your deployment. You only need to run &lt;code&gt;kfctl build&lt;/code&gt; if you want
to edit the resources before running &lt;code&gt;kfctl apply&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kfctl apply&lt;/code&gt; - Creates or updates the resources.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kfctl delete&lt;/code&gt; - Deletes the resources.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;app-layout&#34;&gt;App layout&lt;/h3&gt;
&lt;p&gt;Your Kubeflow app directory &lt;strong&gt;${KF_DIR}&lt;/strong&gt; contains the following files and directories:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;${CONFIG_FILE}&lt;/strong&gt; is a YAML file that defines configurations related to your
Kubeflow deployment.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;This file is a copy of the GitHub-based configuration YAML file that
you used when deploying Kubeflow.&lt;/li&gt;
&lt;li&gt;When you run &lt;code&gt;kfctl apply&lt;/code&gt; or &lt;code&gt;kfctl build&lt;/code&gt;, kfctl creates
a local version of the configuration file, &lt;code&gt;${CONFIG_FILE},&lt;/code&gt;
which you can further customize if necessary.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;aws_config&lt;/strong&gt; is a directory that contains a sample &lt;code&gt;eksctl&lt;/code&gt; cluster configuration file that defines the AWS cluster and policy files to attach to your node group roles.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You can modify the &lt;code&gt;cluster_config.yaml&lt;/code&gt; and &lt;code&gt;cluster_features.yaml&lt;/code&gt; files to customize your AWS infrastructure.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;kustomize&lt;/strong&gt; is a directory that contains the kustomize packages for Kubeflow applications.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The directory is created when you run &lt;code&gt;kfctl build&lt;/code&gt; or &lt;code&gt;kfctl apply&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;You can customize the Kubernetes resources (modify the manifests and run &lt;code&gt;kfctl apply&lt;/code&gt; again).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The provisioning scripts can either bring up a new cluster and install Kubeflow on it, or you can install Kubeflow on your existing cluster. We recommend that you create a new cluster for better isolation.&lt;/p&gt;
&lt;p&gt;If you experience any issues running these scripts, see the &lt;a href=&#34;/docs/aws/troubleshooting-aws&#34;&gt;troubleshooting guidance&lt;/a&gt; for more information.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Uninstall Kubeflow</title>
      <link>/docs/aws/deploy/uninstall-kubeflow/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/aws/deploy/uninstall-kubeflow/</guid>
      <description>
        
        
        &lt;h2 id=&#34;uninstall-kubeflow&#34;&gt;Uninstall Kubeflow&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;cd ${KF_DIR}
kfctl delete -f ${CONFIG_FILE}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This will delete the kubeflow and istio-system namespaces which have been created via kfctl.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Note: If you installed Kubeflow on an existing Amazon EKS cluster, these scripts won&amp;rsquo;t tear down your cluster in this step. If you want to shutdown EKS cluster, you must manually delete it by yourself.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;uninstall-kubernetes&#34;&gt;Uninstall Kubernetes&lt;/h2&gt;
&lt;p&gt;If you have installed a dedicated EKS cluster for kubeflow and you want to delete this as well, assuming it was done via a &lt;code&gt;cluster.yaml&lt;/code&gt; file and eksctl, use this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;eksctl delete cluster -f cluster.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;That will invoke the DELETE action in the cloudformation stacks.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Note: It is possible that parts of the cloudformation delete will fail. In that case try to manually delete the eks-xxx role in IAM first, then the ALB, the eks target groups and the subnets of that particular cluster. Then retry the command, it will properly delete the nodegroups and the cluster.&lt;/p&gt;
&lt;/blockquote&gt;

      </description>
    </item>
    
  </channel>
</rss>
