1"use strict";(self.webpackChunktigera_docs=self.webpackChunktigera_docs||[]).push([[2296],{15680:(e,t,a)=>{a.d(t,{xA:()=>c,yg:()=>y});var r=a(96540);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},i=Object.keys(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),u=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},c=function(e){var t=u(e.components);return r.createElement(s.Provider,{value:t},e.children)},g="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),g=u(a),d=n,y=g["".concat(s,".").concat(d)]||g[d]||p[d]||i;return a?r.createElement(y,o(o({ref:t},c),{},{components:a})):r.createElement(y,o({ref:t},c))}));function y(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[g]="string"==typeof e?e:n,o[1]=l;for(var u=2;u<i;u++)o[u]=a[u];return r.createElement.apply(null,o)}return r.createElement.apply(null,a)}d.displayName="MDXCreateElement"},92201:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>p,frontMatter:()=>i,metadata:()=>l,toc:()=>u});var r=a(58168),n=(a(96540),a(15680));const i={description:"A tutorial for installing Calico the hard way."},o="Calico the hard way",l={unversionedId:"getting-started/kubernetes/hardway/overview",id:"version-3.26/getting-started/kubernetes/hardway/overview",title:"Calico the hard way",description:"A tutorial for installing Calico the hard way.",source:"@site/calico_versioned_docs/version-3.26/getting-started/kubernetes/hardway/overview.mdx",sourceDirName:"getting-started/kubernetes/hardway",slug:"/getting-started/kubernetes/hardway/overview",permalink:"/calico/3.26/getting-started/kubernetes/hardway/overview",draft:!1,editUrl:"https://github.com/tigera/docs/edit/main/calico_versioned_docs/version-3.26/getting-started/kubernetes/hardway/overview.mdx",tags:[],version:"3.26",frontMatter:{description:"A tutorial for installing Calico the hard way."},sidebar:"calicoSidebar",previous:{title:"Calico the hard way",permalink:"/calico/3.26/getting-started/kubernetes/hardway/"},next:{title:"Stand up Kubernetes",permalink:"/calico/3.26/getting-started/kubernetes/hardway/standing-up-kubernetes"}},s={},u=[{value:"About this tutorial",id:"about-this-tutorial",level:2},{value:"Target Audience",id:"target-audience",level:2},{value:"Cluster Details",id:"cluster-details",level:2},{value:"Labs",id:"labs",level:2}],c={toc:u},g="wrapper";function p(e){let{components:t,...a}=e;return(0,n.yg)(g,(0,r.A)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,n.yg)("h1",{id:"calico-the-hard-way"},"Calico the hard way"),(0,n.yg)("h2",{id:"about-this-tutorial"},"About this tutorial"),(0,n.yg)("p",null,'The "Hard Way" is a tutorial for learning how Kubernetes and Calico components fit together. The name \u201cCalico the hard way\u201d is inspired by ',(0,n.yg)("a",{parentName:"p",href:"https://github.com/kelseyhightower/kubernetes-the-hard-way"}
1,"Kubernetes the hard way")," by Kelsey Hightower. This tutorial is optimized for learning what happens \u201cunder the hood,\u201d and uses manifests for installation. ",(0,n.yg)("strong",{parentName:"p"},"The steps are not suitable for production installs"),"."),(0,n.yg)("p",null,"For the most direct path to a production-ready Calico install, see our ",(0,n.yg)("a",{parentName:"p",href:"/calico/3.26/getting-started/kubernetes/self-managed-onprem/onpremises"},"install guides"),"."),(0,n.yg)("h2",{id:"target-audience"},"Target Audience"),(0,n.yg)("p",null,"This guide is for someone"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},"evaluating Kubernetes networking & security options looking to deep dive, or"),(0,n.yg)("li",{parentName:"ul"},"planning to build and support a Calico cluster in production, wanting to understand how it works")),(0,n.yg)("p",null,"This guide assumes proficiency with either AWS web console or CLI for provisioning and accessing nodes."),(0,n.yg)("h2",{id:"cluster-details"},"Cluster Details"),(0,n.yg)("p",null,"Calico runs in many environments and supports many cluster types. To keep things reasonably prescriptive this guide focuses on Kubernetes running on AWS, but the lessons you learn apply to wherever you choose to run Calico. See Getting Started for a full list of cluster types (OpenShift, OpenStack, etc.)."),(0,n.yg)("p",null,"The guide will help you install a cluster with the following Calico options"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},"Kubernetes as the datastore"),(0,n.yg)("li",{parentName:"ul"},"Calico CNI plugin, with BGP networking"),(0,n.yg)("li",{parentName:"ul"},"Calico IP address management (IPAM)"),(0,n.yg)("li",{parentName:"ul"},"No overlays"),(0,n.yg)("li",{parentName:"ul"},"IPv4 addresses"),(0,n.yg)("li",{parentName:"ul"},"Highly available Typha with mutually authenticated TLS")),(0,n.yg)("h2",{id:"labs"},"Labs"),(0,n.yg)("ol",null,(0,n.yg)("li",{parentName:"ol"},(0,n.yg)("a",{parentName:"li",href:"/calico/3.26/getting-started/kubernetes/hardway/standing-up-kubernetes"},"Standing up Kubernetes")),(0,n.yg)("li",{parentName:"ol"},(0,n.yg)("a",{parentName:"li",href:"/calico/3.26/getting-started/kubernetes/hardway/the-calico-datastore"},"The Calico datastore")),(0,n.yg)("li",{parentName:"ol"},(0,n.yg)("a",{parentName:"li",href:"/calico/3.26/getting-started/kubernetes/hardway/configure-ip-pools"},"Configure IP pools")),(0,n.yg)("li",{parentName:"ol"},(0,n.yg)("a",{parentName:"li",href:"/calico/3.26/getting-started/kubernetes/hardway/install-cni-plugin"},"Install CNI plugin")),(0,n.yg)("li",{parentName:"ol"},(0,n.yg)("a",{parentName:"li",href:"/calico/3.26/getting-started/kubernetes/hardway/install-typha"},"Install Typha")),(0,n.yg)("li",{parentName:"ol"},(0,n.yg)("a",{parentName:"li",href:"/calico/3.26/getting-started/kubernetes/hardway/install-node"},"Install calico/node")),(0,n.yg)("li",{parentName:"ol"},(0,n.yg)("a",{parentName:"li",href:"/calico/3.26/getting-started/kubernetes/hardway/configure-bgp-peering"},"Configure BGP peering")),(0,n.yg)("li",{parentName:"ol"},(0,n.yg)("a",{parentName:"li",href:"/calico/3.26/getting-started/kubernetes/hardway/test-networking"},"Test networking")),(0,n.yg)("li",{parentName:"ol"},(0,n.yg)("a",{parentName:"li",href:"/calico/3.26/getting-started/kubernetes/hardway/test-network-policy"},"Test network policy")),(0,n.yg)("li",{parentName:"ol"},(0,n.yg)("a",{parentName:"li",href:"/calico/3.26/getting-started/kubernetes/hardway/end-user-rbac"},"End user RBAC")),(0,n.yg)("li",{parentName:"ol"},(0,n.yg)("a",{parentName:"li",href:"/calico/3.26/getting-started/kubernetes/hardway/istio-integration"},"Istio integration"))))}p.isMDXComponent=!0}}]);
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.