1"use strict";(self.webpackChunk_okteto_website_docs=self.webpackChunk_okteto_website_docs||[]).push([[3014],{16863:e=>{e.exports=JSON.parse('{"dO":"1.32","hN":"1.34","$g":"3.18.0","X9":"1.43.0","OF":"2.0.14"}')},27216:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>c,default:()=>p,frontMatter:()=>l,metadata:()=>o,toc:()=>h});const o=JSON.parse('{"id":"get-started/install/amazon-eks","title":"Amazon Elastic Kubernetes Service (EKS)","description":"How to install Okteto onto Amazon Elastic Kubernetes Service (EKS)","source":"@site/versioned_docs/version-1.43/get-started/install/amazon-eks.mdx","sourceDirName":"get-started/install","slug":"/get-started/install/amazon-eks","permalink":"/docs/1.43/get-started/install/amazon-eks","draft":false,"unlisted":false,"editUrl":"https://github.com/okteto/docs/edit/main/versioned_docs/version-1.43/get-started/install/amazon-eks.mdx","tags":[],"version":"1.43","frontMatter":{"title":"Amazon Elastic Kubernetes Service (EKS)","description":"How to install Okteto onto Amazon Elastic Kubernetes Service (EKS)","sidebar_label":"Amazon EKS","id":"amazon-eks","pagination_prev":"get-started/install/index","pagination_next":"get-started/deploy-your-app/index"},"sidebar":"docs","previous":{"title":"Installation Overview","permalink":"/docs/1.43/get-started/install/"},"next":{"title":"Deploy Your Application to Okteto","permalink":"/docs/1.43/get-started/deploy-your-app/"}}');var s=t(74848),a=t(28453),r=t(16863),i=t(88149);const l={title:"Amazon Elastic Kubernetes Service (EKS)",description:"How to install Okteto onto Amazon Elastic Kubernetes Service (EKS)",sidebar_label:"Amazon EKS",id:"amazon-eks",pagination_prev:"get-started/install/index",pagination_next:"get-started/deploy-your-app/index"},c=void 0,d={},h=[{value:"Installation Requirements",id:"installation-requirements",level:2},{value:"Getting your Okteto License",id:"getting-your-okteto-license",level:2},{value:"A Domain and the ability to create wildcard DNS records for it",id:"a-domain-and-the-ability-to-create-wildcard-dns-records-for-it",level:2},{value:"Deploy a Kubernetes cluster",id:"deploy-a-kubernetes-cluster",level:2},{value:"Setting up environment variables",id:"setting-up-environment-variables",level:3},{value:"Create the Cluster",id:"create-the-cluster",level:3},{value:"Create EBS CSI Addon IAM Role",id:"create-ebs-csi-addon-iam-role",level:3},{value:"Deploy EBS CSI Addon",id:"deploy-ebs-csi-addon",level:3},{value:"Create a Storage Class for the EBS CSI Addon",id:"create-a-storage-class-for-the-ebs-csi-addon",level:3},{value:"Create Load Balancer Controller IAM Role",id:"create-load-balancer-controller-iam-role",level:3},{value:"Deploy Load Balancer Controller",id:"deploy-load-balancer-controller",level:3},{value:"Installing Okteto",id:"installing-okteto",level:2},{value:"Add the Okteto Helm repository",id:"add-the-okteto-helm-repository",level:3},{value:"Create the Helm configuration file",id:"create-the-helm-configuration-file",level:3},{value:"Installing the Okteto Helm chart",id:"installing-the-okteto-helm-chart",level:3},{value:"Retrieve the Ingress Controller IP address",id:"retrieve-the-ingress-controller-ip-address",level:3},{value:"Sign in to your Okteto instance",id:"sign-in-to-your-okteto-instance",level:3},{value:"Configure the Okteto CLI",id:"configure-the-okteto-cli",level:3},{value:"Optional: Configure access to your Amazon ECR",id:"optional-configure-access-to-your-amazon-ecr",level:2}];function u(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,a.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"This guide will walk you through the process of installing Okteto in Amazon Elastic Kubernetes Service (EKS)."}),"\n",(0,s.jsx)(n.h2,{id:"installation-requirements",children:"Installation Requirements"}),"\n",(0,s.jsx)(n.p,{children:"Before you start, make sure you have the following CLIs installed in your machine:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"okteto"})," >= ",r.$g," (",(0,s.jsx)(n.a,{href:"/docs/1.43/get-started/install-okteto-cli",children:"okteto installation guides"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"eksctl"})," >= 0.201 (",(0,s.jsx)(n.a,{href:"https://eksctl.io/installation/",children:"eksctl installation guides"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"aws"})," >= 2.15 (",(0,s.jsx)(n.a,{href:"https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html#getting-started-install-instructions",children:"aws installation guides"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"kubectl"})," >= 1.28 (",(0,s.jsx)(n.a,{href:"https://kubernetes.io/docs/tasks/tools/#kubectl",children:"kubectl installation guides"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"helm"})," >= 3.14 (",(0,s.jsx)(n.a,{href:"https://helm.sh/docs/intro/install/",children:"helm installation guides"}),")"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"You'll also need the following:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"An Okteto License"}),"\n",(0,s.jsx)(n.li,{children:"A Domain and the ability to create wildcard DNS re
1cords for it"}),"\n",(0,s.jsx)(n.li,{children:"A Kubernetes cluster"}),"\n"]}),"\n",(0,s.jsxs)(n.admonition,{type:"warning",children:[(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Important"}),": As of Okteto 1.35, Okteto supports Amazon Linux 2 (AL2) and introduces support for Amazon Linux 2023 (AL2023) as the AMI for cluster nodes. We recommend upgrading Okteto to version 1.35 before upgrading your EKS cluster to Kubernetes 1.33 or changing to AL2023. In mixed clusters, make sure both the control plane and development workloads run on nodes with Amazon Linux 2 or Amazon Linux 2023 using ",(0,s.jsx)(n.a,{href:"https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/",children:"taints"})," and ",(0,s.jsx)(n.a,{href:"/docs/1.43/self-hosted/helm-configuration#tolerations",children:"tolerations"}),"."]}),(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Bottlerocket OS is not supported."})," Okteto requires write access to ",(0,s.jsx)(n.code,{children:"/etc/hosts"})," on cluster nodes, which is not possible on Bottlerocket's read-only root filesystem. If you are using Bottlerocket, you must switch to AL2023. See ",(0,s.jsx)(n.a,{href:"/docs/1.43/self-hosted/manage/troubleshooting#daemon-fails-with-open-etchosts-permission-denied",children:"Troubleshooting"})," for more details."]})]}),"\n",(0,s.jsx)(n.h2,{id:"getting-your-okteto-license",children:"Getting your Okteto License"}),"\n",(0,s.jsxs)(n.p,{children:["A license is mandatory to use Okteto. You'll receive a license key as part of your subscription to Okteto. If you haven't received it, ",(0,s.jsx)(n.a,{href:"https://okteto.com/support",children:"please open a support ticket"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["If you are interested in evaluating Okteto, ",(0,s.jsx)(n.a,{href:"https://www.okteto.com/free-trial/",children:"sign up for our Free Tier (5 seats, 1 year)"}),". No credit card required."]}),"\n",(0,s.jsx)(n.h2,{id:"a-domain-and-the-ability-to-create-wildcard-dns-records-for-it",children:"A Domain and the ability to create wildcard DNS records for it"}),"\n",(0,s.jsxs)(n.p,{children:["You'll need sufficient access to a ",(0,s.jsx)(n.a,{href:"/docs/1.43/self-hosted/helm-configuration#subdomain",children:"subdomain"})," to add a wildcard DNS record, such as dev.example.com.\nBy default, all endpoints created by Okteto for your development environments will be exposed on the wildcard subdomain you choose."]}),"\n",(0,s.jsxs)(n.p,{children:["This guide assumes your domain is registered in ",(0,s.jsx)(n.a,{href:"https://aws.amazon.com/route53/",children:"Amazon Route53"})," service.\nYou can use any DNS service you prefer, but this guide focuses specifically on Amazon Route53."]}),"\n",(0,s.jsx)(n.h2,{id:"deploy-a-kubernetes-cluster",children:"Deploy a Kubernetes cluster"}),"\n",(0,s.jsx)(n.p,{children:"Our installation guides assume Okteto will be running in a new dedicated cluster."}),"\n",(0,s.jsx)(n.admonition,{type:"note",children:(0,s.jsx)(n.p,{children:"If you plan on installing Okteto in an existing cluster with other workloads, we recommend to read this section to make sure your cluster satisfies the requirements to install Okteto"})}),"\n",(0,s.jsx)(n.h3,{id:"setting-up-environment-variables",children:"Setting up environment variables"}),"\n",(0,s.jsx)(n.p,{children:"We recommend configuring the following environment variables to help you scripting the cluster creation:"}),"\n",(0,s.jsx)(n.p,{children:"Your Kubernetes cluster version:"}),"\n",(0,s.jsx)(i.A,{language:"bash",children:`export K8S_VERSION="${r.hN}"`}),"\n",(0,s.jsx)(n.admonition,{type:"note",children:(0,s.jsxs)(n.p,{children:["Okteto supports Kubernetes versions ",r.dO," through ",r.hN,"."]})}),"\n",(0,s.jsx)(n.p,{children:"Your Kubernetes cluster name:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'export CLUSTER_NAME="okteto"\n'})}),"\n",(0,s.jsx)(n.p,{children:"Your AWS Account ID:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'export AWS_ACCOUNT_ID="$(aws sts get-caller-identity --query "Account" --output text)"\n'})}),"\n",(0,s.jsx)(n.p,{children:"Your AWS Region:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'export AWS_REGION="$(aws configure get region)"\n'})}),"\n",(0,s.jsx)(n.p,{children:"Disable AWS CLI pagination (optional):"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'export AWS_PAGER=""\n'})}),"\n",(0,s.jsx)(n.h3,{id:"create-the-cluster",children:"Create the Cluster"}),"\n",(0,s.jsxs)(n.p,{children:["For initial evaluation, we recommend a Kubernetes cluster with a pool of 3 ",(0,s.jsx)(n.code,{children:"m5.xlarge"})," nodes with 250 GB each:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'eksctl create cluster -f - <<EOF\napiVersion: eksctl.io/v1alpha5\nkind: ClusterConfig\n\nmetadata:\n name: ${CLUSTER_NAME}\n region: ${AWS_REGION}\n version: "${K8S_VERSION}"\n\nautoModeConfig:\n enabled: false\n\niam:\n withOIDC: true\n\nnodeGroups:\n - name: ng-1\n instanceType: m5.xlarge\n desiredCapacity: 3\n volumeSize: 250\n volumeType: gp3\n amiFamily: AmazonLinux2023\nEOF\n'})}),"\n",(0,s.jsxs)(n.admonition,{type:"note",children:[(0,s.jsx)(n.p,{children:"Ensure the Kubernetes version you select meets the following requirements:"}),(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Supported versions for your ",(0,s.jsx)(n.code,{children:"eksctl"})," installation can be checked using the command:","\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"eksctl create cluster -h | grep 'Kubernetes version'\n"})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["Check the ",(0,s.jsx)(n.a,{href:"https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html",children:"available versions"})," for AWS EKS service."]}),"\n",(0,s.jsxs)(n.li,{children:["Verify the ",(0,s.jsx)(n.a,{href:"/docs/1.43/release-notes",children:"supported K8s versions"})," for the Okteto Helm chart version you plan to install."]}),"\n"]})]}),"\n",(0,s.jsxs)(n.p,{children:["Follow Amazon's ",(0,s.jsx)(n.a,{href:"https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html",children:"cluster creation guide"})," for more details."]}),"\n",(0,s.jsx)(n.h3,{id:"create-ebs-csi-addon-iam-role",children:"Create EBS CSI Addon IAM Role"}),"\n",(0,s.jsxs)(n.p,{children:["Okteto requires the EBS CSI Addon to be able to create persistent volumes.\nOkteto uses persistent volumes to persist the cache of the ",(0,s.jsx)(n.a,{href:"/docs/1.43/core/build-service",children:"Okteto Build"})," service (buildkit).\nThe default installation also uses persistent volumes to store your container images in the ",(0,s.jsx)(n.a,{href:"/docs/1.43/core/container-registry",children:"Okteto Registry"}),"."]}),"\n",(0,s.jsx)(n.p,{children:"To install the EBS CSI Addon in your Kubernetes cluster, you need to create the EBS CSI Addon's IAM Role first:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'eksctl create iamserviceaccount \\\n --region="${AWS_REGION}" \\\n --name="ebs-csi-controller-sa" \\\n --namespace="kube-system" \\\n --cluster="${CLUSTER_NAME}" \\\n --role-name="${CLUSTER_NAME}-ebs-csi-driver-role" \\\n --role-only \\\n --attach-policy-arn="arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy" \\\n --approve\n'})}),"\n",(0,s.jsxs)(n.p,{children:["Refer to the ",(0,s.jsx)(n.a,{href:"https://docs.aws.amazon.com/eks/latest/userguide/csi-iam-role.html",children:"AWS official documentation"})," for more details."]}),"\n",(0,s.jsx)(n.h3,{id:"deploy-ebs-csi-addon",children:"Deploy EBS CSI Addon"}),"\n",(0,s.jsx)(n.p,{children:"Once you have the EBS CSI IAM Role created, deploy the EBS CSI Addon with the following command:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'eksctl create addon \\\n --region="${AWS_REGION}" \\\n --name="aws-ebs-csi-driver" \\\n --cluster="${CLUSTER_NAME}
1" \\\n --service-account-role-arn="arn:aws:iam::${AWS_ACCOUNT_ID}:role/${CLUSTER_NAME}-ebs-csi-driver-role" \\\n --force\n'})}),"\n",(0,s.jsxs)(n.p,{children:["Refer to the ",(0,s.jsx)(n.a,{href:"https://docs.aws.amazon.com/eks/latest/userguide/managing-ebs-csi.html#adding-ebs-csi-eks-add-on",children:"AWS official documentation"})," for more details."]}),"\n",(0,s.jsx)(n.h3,{id:"create-a-storage-class-for-the-ebs-csi-addon",children:"Create a Storage Class for the EBS CSI Addon"}),"\n",(0,s.jsx)(n.p,{children:"Create a Storage Class for the EBS CSI Addon:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'cat <<EOF | kubectl apply -f -\napiVersion: storage.k8s.io/v1\nkind: StorageClass\nmetadata:\n name: ebs-sc\n annotations:\n storageclass.kubernetes.io/is-default-class: "true"\nprovisioner: ebs.csi.aws.com\nvolumeBindingMode: WaitForFirstConsumer\nEOF\n'})}),"\n",(0,s.jsxs)(n.p,{children:["For more information about the EBS CSI Storage Class parameters, refer to the ",(0,s.jsx)(n.a,{href:"https://github.com/kubernetes-sigs/aws-ebs-csi-driver/blob/master/docs/parameters.md",children:"AWS official documentation"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"create-load-balancer-controller-iam-role",children:"Create Load Balancer Controller IAM Role"}),"\n",(0,s.jsxs)(n.p,{children:["Okteto recommends installing the Load Balancer Controller to manage the Okteto certificates with Amazon Certificate Manager.\nRefer to the ",(0,s.jsx)(n.a,{href:"https://docs.aws.amazon.com/eks/latest/userguide/aws-load-balancer-controller.html",children:"Load Balancer Controller AWS official documentation"})," for more details."]}),"\n",(0,s.jsx)(n.p,{children:"To install the Load Balancer Controller in your Kubernetes cluster, download its IAM Policy manifest first:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"curl \\\n -s \\\n -o iam-policy.json \\\n https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v3.1.0/docs/install/iam_policy.json\n"})}),"\n",(0,s.jsx)(n.admonition,{type:"note",children:(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"kubernetes-sigs/aws-load-balancer-controller"})," maintainers recommends further scoping down this configuration based on the VPC ID or the Cluster Name resource tag. Checkout ",(0,s.jsx)(n.a,{href:"https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.7/deploy/installation/#option-a-recommended-iam-roles-for-service-accounts-irsa",children:"their docs"})," for official instructions on it."]})}),"\n",(0,s.jsx)(n.p,{children:"Create the IAM Policy for the Load Balancer Controller IAM Role:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'aws iam create-policy \\\n --policy-name="${CLUSTER_NAME}-load-balancer-controller-policy" \\\n --policy-document file://iam-policy.json\n'})}),"\n",(0,s.jsx)(n.p,{children:"Create the IAM Role for the Load Balancer Controller:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'eksctl create iamserviceaccount \\\n --region="${AWS_REGION}" \\\n --name="aws-load-balancer-controller" \\\n --namespace="kube-system" \\\n --cluster="${CLUSTER_NAME}" \\\n --role-name="${CLUSTER_NAME}-aws-load-balancer-controller-role" \\\n --attach-policy-arn="arn:aws:iam::${AWS_ACCOUNT_ID}:policy/${CLUSTER_NAME}-load-balancer-controller-policy" \\\n --approve\n'})}),"\n",(0,s.jsx)(n.h3,{id:"deploy-load-balancer-controller",children:"Deploy Load Balancer Controller"}),"\n",(0,s.jsx)(n.p,{children:"Once you have the Load Balancer Controller IAM Role created, let's deploy the Load Balancer Controller."}),"\n",(0,s.jsx)(n.p,{children:"First, add the EKS Helm chart repository:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"helm repo add eks https://aws.github.io/eks-charts\nhelm repo update\n"})}),"\n",(0,s.jsx)(n.p,{children:"Install the Load Balancer Controller chart:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'helm upgrade --install \\\n aws-load-balancer-controller \\\n eks/aws-load-balancer-controller \\\n --version="3.1.0" \\\n --namespace="kube-system" \\\n --set clusterName=${CLUSTER_NAME} \\\n --set serviceAccount.create=false \\\n --set serviceAccount.name=aws-load-balancer-controller\n'})}),"\n",(0,s.jsx)(n.h2,{id:"installing-okteto",children:"Installing Okteto"}),"\n",(0,s.jsx)(n.admonition,{type:"note",children:(0,s.jsxs)(n.p,{children:["Argo C
1D installs the same Helm chart declaratively. See ",(0,s.jsx)(n.a,{href:"/docs/1.43/self-hosted/manage/argocd",children:"Configure Argo CD"})," for the ",(0,s.jsx)(n.code,{children:"Application"})," manifest, sync policy, and the ",(0,s.jsx)(n.code,{children:"ignoreDifferences"})," Okteto requires.\nIt replaces ",(0,s.jsx)(n.a,{href:"#add-the-okteto-helm-repository",children:"Add the Okteto Helm repository"})," and ",(0,s.jsx)(n.a,{href:"#installing-the-okteto-helm-chart",children:"Installing the Okteto Helm chart"}),". Every other step on this page still applies, including the DNS record, sign-in, and CLI context."]})}),"\n",(0,s.jsx)(n.p,{children:"Okteto is installed using a Helm chart. Let's start the process:"}),"\n",(0,s.jsx)(n.h3,{id:"add-the-okteto-helm-repository",children:"Add the Okteto Helm repository"}),"\n",(0,s.jsx)(n.p,{children:"You'll need to add the Okteto Helm repository to be able to install Okteto:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"helm repo add okteto https://charts.okteto.com\nhelm repo update\n"})}),"\n",(0,s.jsx)(n.h3,{id:"create-the-helm-configuration-file",children:"Create the Helm configuration file"}),"\n",(0,s.jsxs)(n.p,{children:["In order to install Okteto you need to first create a ",(0,s.jsx)(n.code,{children:"config.yaml"})," for the installation process.\nReplace ",(0,s.jsx)(n.code,{children:"license"})," and ",(0,s.jsx)(n.code,{children:"subdomain"})," with your own values, and initialize your Helm configuration file with these settings:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-yaml",metastring:'title="config.yaml"',children:'// highlight-next-line\nlicense: "REPLACE ME WITH YOUR OKTETO LICENSE"\n// highlight-next-line\nsubdomain: "REPLACE ME WITH YOUR OKTETO DOMAIN"\n\ningress-nginx:\n controller:\n service:\n annotations:\n service.beta.kubernetes.io/aws-load-balancer-type: nlb\n service.beta.kubernetes.io/aws-load-balancer-scheme: "internet-facing"\n\nregistry:\n storage:\n filesystem:\n persistence:\n enabled: true\n'})}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsxs)(n.em,{children:["Note: This is the minimum configuration. Check our ",(0,s.jsx)(n.a,{href:"/docs/1.43/self-hosted/helm-configuration",children:"Helm configuration"})," docs to learn more"]})}),"\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.code,{children:"service.beta.kubernetes.io/aws-load-balancer-type: nlb"})," annotation is used to tell AWS to create a ",(0,s.jsx)(n.a,{href:"https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html",children:"Network Load Balancer (NLB)"})," instead of the default ",(0,s.jsx)(n.a,{href:"https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/introduction.html",children:"Classic Load Balancer"})," to expose the ingress controller. We recommend to use a NLB as it provides benefits like: websocket support, static IPs, and better performance. You can see a full comparison between the load balancers ",(0,s.jsx)(n.a,{href:"https://aws.amazon.com/elasticloadbalancing/features/",children:"here"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"installing-the-okteto-helm-chart",children:"Installing the Okteto Helm chart"}),"\n",(0,s.jsx)(n.p,{children:"Install the latest version of Okteto by running:"}),"\n",(0,s.jsx)(i.A,{language:"bash",children:`helm upgrade --install okteto okteto/okteto -f config.yaml --namespace=okteto --create-namespace --version=${r.X9}`}),"\n",(0,s.jsx)(n.p,{children:"After a few seconds, all the resources will be created. The output will look something like this:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'Release "okteto" has been installed. Happy Helming!\nNAME: okteto\nLAST DEPLOYED: Thu Mar 26 18:07:55 2020\nNAMESPACE: okteto\nSTATUS: deployed\n'})}),"\n",(0,s.jsx)(n.h3,{id:"retrieve-the-ingress-controller-ip-address",children:"Retrieve the Ingress Controller IP address"}),"\n",(0,s.jsxs)(n.p,{children:["You can use ",(0,s.jsx)(n.code,{children:"kubectl"})," to fetch the address that has been dynamically allocated by EKS to the NGINX Ingress we've just installed and configured as a part of Okteto:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"kubectl get service -l=app.kubernetes.io/name=ingress-nginx,app.kubernetes.io/component=controller --namespace=okteto\n"})}),"\n",(0,s.jsx)(n.p,{children:"The output will look something like this:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE\nokteto-ingress-nginx-controller LoadBalancer 10.0.7.73 a519c8b3b27f94...elb.amazonaws.com 80:30795/TCP,443:32481/TCP,1234:30885/TCP 5m\n"})}),"\n",(0,s.jsxs)(n.p,{children:["You'll need to take the ",(0,s.jsx)(n.code,{children:"EXTERNAL-IP"})," address (",(0,s.jsx)(n.code,{children:"a519c8b3b27f94...elb.amazonaws.com"})," in the example), and add it to your DNS for the domain you have chosen to use. In Route 53, this is done by creating an ",(0,s.jsx)(n.code,{children:"A"})," record with the name ",(0,s.jsx)(n.code,{children:"*"}),", pointing to the alias of the Elastic Load Balancer."]}),"\n",(0,s.jsx)(n.h3,{id:"sign-in-to-your-okteto-instance",children:"Sign in to your Okteto instance"}),"\n",(0,s.jsx)(n.admonition,{type:"warning",children:(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Important"}),": The default installation is not recommended for production use. We highly advise configuring a wildcard ",(0,s.jsx)(n.a,{href:"/docs/1.43/self-hosted/install/certificates/aws-acm",children:"AWS ACM certificate"})," and ",(0,s.jsx)(n.a,{href:"/docs/1.43/self-hosted/install/okteto-registry-storage/aws-s3-bucket",children:"Okteto Registry storage with S3"})," after finishing your evaluation and giving your team access to your Okteto instance."]})}),"\n",(0,s.jsxs)(n.p,{children:["After a successful installation, you can access your Okteto instance at ",(0,s.jsx)(n.code,{children:"https://okteto.SUBDOMAIN"}),". Your account will be automatically created as part of the login process. The first user to successfully login into the instance will be automatically assigned the ",(0,s.jsx)(n.code,{children:"administrator"})," role."]}),"\n",(0,s.jsx)(n.h3,{id:"configure-the-okteto-cli",children:"Configure the Okteto CLI"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.a,{href:"/docs/1.43/get-started/install-okteto-cli",children:"Install the Okteto CLI"})," if you haven't done it yet and set the Okteto CLI context with your Okteto instance.\nTo do this, run the command below replacing ",(0,s.jsx)(n.code,{children:"SUBDOMAIN"}),":"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"okteto context use https://okteto.SUBDOMAIN\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Once your Okteto instance is up and running and your Okteto CLI properly configured, you are going to ",(0,s.jsx)(n.a,{href:"/docs/1.43/get-started/deploy-your-app/",children:"deploy your first app"})," to Okteto \ud83d\ude0e"]}),"\n",(0,s.jsx)(n.h2,{id:"optional-configure-access-to-your-amazon-ecr",children:"Optional: Configure access to your Amazon ECR"}),"\n",(0,s.jsxs)(n.p,{children:["Optionally, you can configure Okteto to have ",(0,s.jsx)(n.a,{href:"/docs/1.43/admin/registry-credentials/amazon-ecr",children:"access to your Amazon Elastic Container Registry"}),".\nThis will allow you to use your private images in your Dockerfiles and avoid using pull secrets everywhere to deploy your applications."]})]})}function p(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(u,{...e})}):u(e)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.