1"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[3628],{32752:(g,C,I)=>{I.r(C),I.d(C,{assets:()=>i,contentTitle:()=>t,default:()=>c,frontMatter:()=>e,metadata:()=>n,toc:()=>a});var A=I(62540),o=I(43023);const e={title:"Configure HPA",sidebar_position:10},t=void 0,n={id:"fundamentals/workloads/horizontal-pod-autoscaler/configure-hpa",title:"Configure HPA",description:"Currently there are no resources in our cluster that enable horizontal pod autoscaling, which you can check with the following command:",source:"@site/docs/fundamentals/workloads/horizontal-pod-autoscaler/configure-hpa.md",sourceDirName:"fundamentals/workloads/horizontal-pod-autoscaler",slug:"/fundamentals/workloads/horizontal-pod-autoscaler/configure-hpa",permalink:"/docs/fundamentals/workloads/horizontal-pod-autoscaler/configure-hpa",draft:!1,unlisted:!1,editUrl:"https://github.com/aws-samples/eks-workshop-v2/tree/main/website/docs/fundamentals/workloads/horizontal-pod-autoscaler/configure-hpa.md",tags:[],version:"current",sidebarPosition:10,frontMatter:{title:"Configure HPA",sidebar_position:10},sidebar:"fundamentals",previous:{title:"Metric server",permalink:"/docs/fundamentals/workloads/horizontal-pod-autoscaler/metric-server"},next:{title:"Generate load",permalink:"/docs/fundamentals/workloads/horizontal-pod-autoscaler/test-hpa"}},i={},a=[];function l(g){const C={code:"code",div:"div",p:"p",...(0,o.R)(),...g.components},{Kustomization:I,Terminal:e,YamlAnnotation:t,YamlFile:n}=C;return I||s("Kustomization",!0),e||s("Terminal",!0),t||s("YamlAnnotation",!0),n||s("YamlFile",!0),(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(C.p,{children:"Currently there are no resources in our cluster that enable horizontal pod autoscaling, which you can check with the following command:"}),"\n",(0,A.jsx)(e,{output:"JCBrdWJlY3RsIGdldCBocGEgLUEKTm8gcmVzb3VyY2VzIGZvdW5k"}),"\n",(0,A.jsxs)(C.p,{children:["In this case we're going to use the ",(0,A.jsx)(C.code,{children:"ui"})," service and scale it based on CPU usage. The first thing we'll do is update the ",(0,A.jsx)(C.code,{children:"ui"})," Pod specification to specify CPU ",(0,A.jsx)(C.code,{children:"request"})," and ",(0,A.jsx)(C.code,{children:"limit"})," values."]}),"\n",(0,A.jsx)(I,{resource:"Deployment/ui",path:"~/environment/eks-workshop/modules/autoscaling/workloads/hpa/deployment.yaml",kustomize:"YXBpVmVyc2lvbjogYXBwcy92MQpraW5kOiBEZXBsb3ltZW50Cm1ldGFkYXRhOgogIG5hbWU6IHVpCnNwZWM6CiAgdGVtcGxhdGU6CiAgICBzcGVjOgogICAgICBjb250YWluZXJzOgogICAgICAgIC0gbmFtZTogdWkKICAgICAgICAgIHJlc291cmNlczoKICAgICAgICAgICAgbGltaXRzOgogICAgICAgICAgICAgIGNwdTogMjUwbQo=",complete:"YXBpVmVyc2lvbjogYXBwcy92MQpraW5kOiBEZXBsb3ltZW50Cm1ldGFkYXRhOgogIGxhYmVsczoKICAgIGFwcC5rdWJlcm5ldGVzLmlvL2NyZWF0ZWQtYnk6IGVrcy13b3Jrc2hvcAogICAgYXBwLmt1YmVybmV0ZXMuaW8vdHlwZTogYXBwCiAgbmFtZTogdWkKICBuYW1lc3BhY2U6IHVpCnNwZWM6CiAgcmVwbGljYXM6IDEKICBzZWxlY3RvcjoKICAgIG1hdGNoTGFiZWxzOgogICAgICBhcHAua3ViZXJuZXRlcy5pby9jb21wb25lbnQ6IHNlcnZpY2UKICAgICAgYXBwLmt1YmVybmV0ZXMuaW8vaW5zdGFuY2U6IHVpCiAgICAgIGFwcC5rdWJlcm5ldGVzLmlvL25hbWU6IHVpCiAgdGVtcGxhdGU6CiAgICBtZXRhZGF0YToKICAgICAgYW5ub3RhdGlvbnM6CiAgICAgICAgcHJvbWV0aGV1cy5pby9wYXRoOiAvYWN0dWF0b3IvcHJvbWV0aGV1cwogICAgICAgIHByb21ldGhldXMuaW8vcG9ydDogIjgwODAiCiAgICAgICAgcHJvbWV0aGV1cy5pby9zY3JhcGU6ICJ0cnVlIgogICAgICBsYWJlbHM6CiAgICAgICAgYXBwLmt1YmVybmV0ZXMuaW8vY29tcG9uZW50OiBzZXJ2aWNlCiAgICAgICAgYXBwLmt1YmVybmV0ZXMuaW8vY3JlYXRlZC1ieTogZWtzLXdvcmtzaG9wCiAgICAgICAgYXBwLmt1YmVybmV0ZXMuaW8vaW5zdGFuY2U6IHVpCiAgICAgICAgYXBwLmt1YmVybmV0ZXMuaW8vbmFtZTogdWkKICAgIHNwZWM6CiAgICAgIGNvbnRhaW5lcnM6CiAgICAgICAgLSBlbnY6CiAgICAgICAgICAgIC0gbmFtZTogSkFWQV9PUFRTCiAgICAgICAgICAgICAgdmFsdWU6IC1YWDpNYXhSQU1QZXJjZW50YWdlPTc1LjAgLURqYXZhLnNlY3VyaXR5LmVnZD1maWxlOi9kZXYvdXJhbmRvbQogICAgICAgICAgICAtIG5hbWU6IE1FVEFEQVRBX0tVQkVSTkVURVNfUE9EX05BTUUKICAgICAgICAgICAgICB2YWx1ZUZyb206CiAgICAgICAgICAgICAgICBmaWVsZFJlZjoKICAgICAgICAgICAgICAgICAgZmllbGRQYXRoOiBtZXRhZGF0YS5uYW1lCiAgICAgICAgICAgIC0gbmFtZTogTUVUQURBVEFfS1VCRVJORVRFU19OQU1FU1BBQ0UKICAgICAgICAgICAgICB2YWx1ZUZyb206CiAgICAgICAgICAgICAgICBmaWVsZFJlZjoKICAgICAgICAgICAgICAgICAgZmllbGRQYXRoOiBtZXRhZGF0YS5uYW1lc3BhY2UKICAgICAgICAgICAgLSBuYW1lOiBNRVRBREFUQV9LVUJFUk5FVEVTX05PREVfTkFNRQogICAgICAgICAgICAgI
1HZhbHVlRnJvbToKICAgICAgICAgICAgICAgIGZpZWxkUmVmOgogICAgICAgICAgICAgICAgICBmaWVsZFBhdGg6IHNwZWMubm9kZU5hbWUKICAgICAgICAgIGVudkZyb206CiAgICAgICAgICAgIC0gY29uZmlnTWFwUmVmOgogICAgICAgICAgICAgICAgbmFtZTogdWkKICAgICAgICAgIGltYWdlOiBwdWJsaWMuZWNyLmF3cy9hd3MtY29udGFpbmVycy9yZXRhaWwtc3RvcmUtc2FtcGxlLXVpOjEuMi4xCiAgICAgICAgICBpbWFnZVB1bGxQb2xpY3k6IElmTm90UHJlc2VudAogICAgICAgICAgbGl2ZW5lc3NQcm9iZToKICAgICAgICAgICAgaHR0cEdldDoKICAgICAgICAgICAgICBwYXRoOiAvYWN0dWF0b3IvaGVhbHRoL2xpdmVuZXNzCiAgICAgICAgICAgICAgcG9ydDogODA4MAogICAgICAgICAgICBpbml0aWFsRGVsYXlTZWNvbmRzOiA0NQogICAgICAgICAgICBwZXJpb2RTZWNvbmRzOiAyMAogICAgICAgICAgbmFtZTogdWkKICAgICAgICAgIHBvcnRzOgogICAgICAgICAgICAtIGNvbnRhaW5lclBvcnQ6IDgwODAKICAgICAgICAgICAgICBuYW1lOiBodHRwCiAgICAgICAgICAgICAgcHJvdG9jb2w6IFRDUAogICAgICAgICAgcmVzb3VyY2VzOgogICAgICAgICAgICBsaW1pdHM6CiAgICAgICAgICAgICAgY3B1OiAyNTBtCiAgICAgICAgICAgICAgbWVtb3J5OiAxLjVHaQogICAgICAgICAgICByZXF1ZXN0czoKICAgICAgICAgICAgICBjcHU6IDI1MG0KICAgICAgICAgICAgICBtZW1vcnk6IDEuNUdpCiAgICAgICAgICBzZWN1cml0eUNvbnRleHQ6CiAgICAgICAgICAgIGNhcGFiaWxpdGllczoKICAgICAgICAgICAgICBhZGQ6CiAgICAgICAgICAgICAgICAtIE5FVF9CSU5EX1NFUlZJQ0UKICAgICAgICAgICAgICBkcm9wOgogICAgICAgICAgICAgICAgLSBBTEwKICAgICAgICAgICAgcmVhZE9ubHlSb290RmlsZXN5c3RlbTogdHJ1ZQogICAgICAgICAgICBydW5Bc05vblJvb3Q6IHRydWUKICAgICAgICAgICAgcnVuQXNVc2VyOiAxMDAwCiAgICAgICAgICB2b2x1bWVNb3VudHM6CiAgICAgICAgICAgIC0gbW91bnRQYXRoOiAvdG1wCiAgICAgICAgICAgICAgbmFtZTogdG1wLXZvbHVtZQogICAgICBzZWN1cml0eUNvbnRleHQ6CiAgICAgICAgZnNHcm91cDogMTAwMAogICAgICBzZXJ2aWNlQWNjb3VudE5hbWU6IHVpCiAgICAgIHZvbHVtZXM6CiAgICAgICAgLSBlbXB0eURpcjoKICAgICAgICAgICAgbWVkaXVtOiBNZW1vcnkKICAgICAgICAgIG5hbWU6IHRtcC12b2x1bWUK",diff:"SW5kZXg6IGR1bW15Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGR1bW15CisrKyBkdW1teQpAQCAtNTgsOCArNTgsOSBAQAogICAgICAgICAgICAgICBuYW1lOiBodHRwCiAgICAgICAgICAgICAgIHByb3RvY29sOiBUQ1AKICAgICAgICAgICByZXNvdXJjZXM6CiAgICAgICAgICAgICBsaW1pdHM6CisgICAgICAgICAgICAgIGNwdTogMjUwbQogICAgICAgICAgICAgICBtZW1vcnk6IDEuNUdpCiAgICAgICAgICAgICByZXF1ZXN0czoKICAgICAgICAgICAgICAgY3B1OiAyNTBtCiAgICAgICAgICAgICAgIG1lbW9yeTogMS41R2kK"}),"\n",(0,A.jsxs)(C.p,{children:["Next, we need to create a ",(0,A.jsx)(C.code,{children:"HorizontalPodAutoscaler"})," resource which defines the parameters HPA will use to determine how to scale our workload."]}),"\n",(0,A.jsxs)(C.div,{children:[(0,A.jsx)(n,{title:"~/environment/eks-workshop/modules/autoscaling/workloads/hpa/hpa.yaml",zoomed:"false",children:"apiVersion: autoscaling/v1\nkind: HorizontalPodAutoscaler\nmetadata:\n name: ui\n namespace: ui\nspec:\n# annotated-highlight-start-even\n# highlight-annotation\n minReplicas: 1\n# annotated-highlight-end-even\n# annotated-highlight-start-odd\n# highlight-annotation\n maxReplicas: 4\n# annotated-highlight-end-odd\n# annotated-highlight-start-even\n# highlight-annotation\n scaleTargetRef:\n apiVersion: apps/v1\n kind: Deployment\n name: ui\n# annotated-highlight-end-even\n # HIGHLIGHT\n# annotated-highlight-start-odd\n# highlight-annotation\n targetCPUUtilizationPercentage: 80\n# annotated-highlight-end-odd\n"}),(0,A.jsx)(t,{sequence:"1",children:(0,A.jsx)(C.p,{children:"Always run at least 1 replica"})}),(0,A.jsx)(t,{sequence:"2",children:(0,A.jsx)(C.p,{children:"Do not scale higher than 4 replicas"})}),(0,A.jsx)(t,{sequence:"3",children:(0,A.jsxs)(C.p,{children:["Instruct HPA to change the replica count on the ",(0,A.jsx)(C.code,{children:"ui"})," Deployment"]})}),(0,A.jsx)(t,{sequence:"4",children:(0,A.jsx)(C.p,{children:"Set a target CPU utilization of 80%"})})]}),"\n",(0,A.jsx)(C.div,{}),"\n",(0,A.jsx)(C.p,{children:"Let's apply this configuration:"}),"\n",(0,A.jsx)(e,{output:"JCBrdWJlY3RsIGFwcGx5IC1rIH4vZW52aXJvbm1lbnQvZWtzLXdvcmtzaG9wL21vZHVsZXMvYXV0b3NjYWxpbmcvd29ya2xvYWRzL2hwYQ=="})]})}function c(g={}){const{wrapper:C}={...(0,o.R)(),...g.components};return C?(0,A.jsx)(C,{...g,children:(0,A.jsx)(l,{...g})}):l(g)}function s(g,C){throw new Error("Expected "+(C?"component":"object")+" `"+g+"` to be defined: you likely forgot to import, pass, or provide it.")}},43023:(g,C,I)=>{I.d(C,{R:()=>t,x:()=>n});var A=I(63696);const o={},e=A.createContext(o);function t(g){const C=A.useContext(e);return A.useMemo((function(){return"function"==typeof g?g(C):{...C,...g}}),[C,g])}function n(g){let C;return C=g.disableParentContext?"function"==typeof g.components?g.components(o):g.components||o:t(g.components),A.createElement(e.Provider,{value:C},g.children)}}}]);
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.