PageSourceSearch

https://archive-os-3-26.netlify.app/assets/js/18db53c2.4318a703.js

js archive-os-3-26.netlify.app collected 2026-10-03 10:28:14 UTC 27,108 bytes, 1 lines download raw bytes

1(self.webpackChunktigera_docs=self.webpackChunktigera_docs||[]).push([[389],{14672:(e,n,t)=>{"use strict";t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>u,frontMatter:()=>r,metadata:()=>s,toc:()=>p});var i=t(58168),a=(t(96540),t(15680)),o=t(5082);const r={description:"Install Calico on an OpenShift 4 cluster on Windows nodes"},l="Install an OpenShift 4 cluster on Windows nodes",s={unversionedId:"getting-started/kubernetes/windows-calico/openshift-installation",id:"version-3.26/getting-started/kubernetes/windows-calico/openshift-installation",title:"Install an OpenShift 4 cluster on Windows nodes",description:"Install Calico on an OpenShift 4 cluster on Windows nodes",source:"@site/calico_versioned_docs/version-3.26/getting-started/kubernetes/windows-calico/openshift-installation.mdx",sourceDirName:"getting-started/kubernetes/windows-calico",slug:"/getting-started/kubernetes/windows-calico/openshift-installation",permalink:"/calico/3.26/getting-started/kubernetes/windows-calico/openshift-installation",draft:!1,editUrl:"https://github.com/tigera/docs/edit/main/calico_versioned_docs/version-3.26/getting-started/kubernetes/windows-calico/openshift-installation.mdx",tags:[],version:"3.26",frontMatter:{description:"Install Calico on an OpenShift 4 cluster on Windows nodes"},sidebar:"calicoSidebar",previous:{title:"Install Calico for Windows on a Rancher Kubernetes Engine cluster",permalink:"/calico/3.26/getting-started/kubernetes/windows-calico/kubernetes/rancher"},next:{title:"Create kubeconfig for Windows nodes",permalink:"/calico/3.26/getting-started/kubernetes/windows-calico/kubeconfig"}},c={},p=[{value:"Big picture",id:"big-picture",level:2},{value:"Value",id:"value",level:2},{value:"How to",id:"how-to",level:2},{value:"Before you begin",id:"before-you-begin",level:3},{value:"Create a configuration file for the OpenShift installer",id:"create-a-configuration-file-for-the-openshift-installer",level:3},{value:"Update the configuration file to use Calico",id:"update-the-configuration-file-to-use-calico",level:3},{value:"Generate the install manifests",id:"generate-the-install-manifests",level:3},{value:"Configure VXLAN",id:"configure-vxlan",level:3},{value:"Create the cluster",id:"create-the-cluster",level:3},{value:"Add Windows nodes to the cluster",id:"add-windows-nodes-to-the-cluster",level:3},{value:"Get the administrator password",id:"get-the-administrator-password",level:3},{value:"Install Calico for Windows",id:"install-calico-for-windows",level:3}
1,{value:"Configure kubelet",id:"configure-kubelet",level:3},{value:"Next steps",id:"next-steps",level:2}],g={toc:p},d="wrapper";function u(e){let{components:n,...t}=e;return(0,a.yg)(d,(0,i.A)({},g,t,{components:n,mdxType:"MDXLayout"}),(0,a.yg)("h1",{id:"install-an-openshift-4-cluster-on-windows-nodes"},"Install an OpenShift 4 cluster on Windows nodes"),(0,a.yg)("admonition",{type:"note"},(0,a.yg)("p",{parentName:"admonition"},"Currently, Calico for Windows supports Openshift versions only up to v4.5 because it requires the Windows Machine Config Bootstrapper binary (wmcb.exe) for adding Windows nodes to clusters. OpenShift v4.6+ does not support the Windows Machine Config Bootstrapper binary and uses the Red Hat Windows Machine Config Operator (WMCO), which does not correctly recognize Calico networking in the cluster.")),(0,a.yg)("h2",{id:"big-picture"},"Big picture"),(0,a.yg)("p",null,"Install an OpenShift 4 cluster on AWS with Calico on Windows nodes."),(0,a.yg)("h2",{id:"value"},"Value"),(0,a.yg)("p",null,"Run Windows workloads on OpenShift 4 with Calico."),(0,a.yg)("h2",{id:"how-to"},"How to"),(0,a.yg)("h3",{id:"before-you-begin"},"Before you begin"),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("p",{parentName:"li"},"Ensure that your environment meets the Calico ",(0,a.yg)("a",{parentName:"p",href:"/calico/3.26/getting-started/kubernetes/openshift/requirements"},"system requirements"),".")),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("p",{parentName:"li"},"Ensure that you have ",(0,a.yg)("a",{parentName:"p",href:"https://docs.openshift.com/container-platform/4.4/installing/installing_aws/installing-aws-account.html"},"configured an AWS account")," appropriate for OpenShift 4,\nand have ",(0,a.yg)("a",{parentName:"p",href:"https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-credentials.html"},"set up your AWS credentials"),".\nNote that the OpenShift installer supports a subset of ",(0,a.yg)("a",{parentName:"p",href:"https://docs.openshift.com/container-platform/4.4/installing/installing_aws/installing-aws-account.html#installation-aws-regions_installing-aws-account"},"AWS regions"),".")),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("p",{parentName:"li"},"Ensure that you have a ",(0,a.yg)("a",{parentName:"p",href:"https://cloud.redhat.com/"},"RedHat account"),". A RedHat account is required to obtain the pull secret necessary to provision an OpenShift cluster.")),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("p",{parentName:"li"},"Ensure that you have installed the OpenShift installer ",(0,a.yg)("strong",{parentName:"p"},"v4.4 or later")," and OpenShift command line interface from ",(0,a.yg)("a",{parentName:"p",href:"https://cloud.redhat.com/openshift/install/aws/installer-provisioned"},"cloud.redhat.com"),".")),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("p",{parentName:"li"},"Ensure that you have ",(0,a.yg)("a",{parentName:"p",href:"https://docs.openshift.com/container-platform/4.4/installing/installing_aws/installing-aws-default.html#ssh-agent-using_installing-aws-default"},"generated a local SSH private key")," and have added it to your ssh-agent"))),(0,a.yg)("p",null,(0,a.yg)("strong",{parentName:"p"},"Limitations")),(0,a.yg)("p",null,"Due to an ",(0,a.yg)("a",{parentName:"p",href:"https://bugzilla.redhat.com/show_bug.cgi?id=1768858"},"upstream issue"),", Windows pods can only be run in specific namespaces if you disable SCC.\nTo do this, label the namespace with ",(0,a.yg)("inlineCode",{parentName:"p"},'openshift.io/run-level: "1"'),"."),(0,a.yg)("h3",{id:"create-a-configuration-file-for-the-openshift-installer"},"Create a configuration file for the OpenShift installer"),(0,a.yg)("p",null,"First, create a staging directory for the installation. This directory will contain the configuration file, along with cluster state files, that OpenShift installer will create:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-bash"},"mkdir openshift-tigera-install && cd openshift-tigera-install\n")),(0,a.yg)("p",null,"Now run OpenShift installer to create a default configuration file:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-bash"},"openshift-install create install-config\n")),(0,a.yg)("admonition",{type:"note"},(0,a.yg)("p",{parentName:"admonition"},"Refer to the ",(0,a.yg)("a",{parentName:"p",href:"https://cloud.redhat.com/openshift/install"},"OpenShift installer documentation")," for more information\nabout the installer and any configuration changes required for your platform.")),(0,a.yg)("p",null,"Once the installer has finished, your staging directory will contain the configuration file ",(0,a.yg)("inlineCode",{parentName:"p"},"install-config.yaml"),"."),(0,a.yg)("h3",{id:"update-the-configuration-file-to-use-calico"},"Update the configuration file to use Calico"),(0,a.yg)("p",null,"Override the OpenShift networking to use Calico and update the AWS instance types to meet the ",(0,a.yg)("a",{parentName:"p",href:"/calico/3.26/getting-started/kubernetes/openshift/requirements"},"system requirements"),":"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-bash"},"sed -i 's/\\(OpenShiftSDN\\|OVNKubernetes\\)/Calico/' install-config.yaml\n")),(0,a.yg)("h3",{id:"generate-the-install-manifests"},"Generate the install manifests"),(0,a.yg)("p",null,"Now generate the Kubernetes manifests using your configuration file:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-bash"},"openshift-install create manifests\n")),(0,a.yg)(o.A,{mdxType:"InstallOpenShiftManifests"}),(0,a.yg)("h3",{id:"configure-vxlan"},"Configure VXLAN"),(0,a.yg)("p",null,"Edit the Installation custom resource manifest ",(0,a.yg)("inlineCode",{parentName:"p"},"manifests/01-cr-installation.yaml")," so that it configures an OpenShift Calico cluster with VXLAN enabled and BGP disabled:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-yaml"},"apiVersion: operator.tigera.io/v1\nkind: Installation\nmetadata:\n  name: default\nspec:\n  variant: Calico\n  calicoNetwork:\n    bgp: Disabled\n    ipPools:\n      - blockSize: 26\n        cidr: 10.128.0.0/14\n        encapsulation: VXLAN\n        natOutgoing: Enabled\n        nodeSelector: all()\n")),(0,a.yg)("h3",{id:"create-the-cluster"},"Create the cluster"),(0,a.yg)("p",null,"Start the cluster creation with the following command and wait for it to complete."),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-bash"},"openshift-install create cluster\n")),(0,a.yg)("p",null,"Once the above command is complete, you can verify Calico is installed by verifying the components are available with the following command."),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-bash"},"oc get tigerastatus\n")),(0,a.yg)("admonition",{type:"note"},(0,a.yg)("p",{parentName:"admonition"},"To get more information, add ",(0,a.yg)("inlineCode",{parentName:"p"},"-o yaml")," to the above command.")),(0,a.yg)("p",null,"Next, ",(0,a.yg)("a",{parentName:"p",href:"/calico/3.26/operations/calicoctl/install"},"install calicoctl")," and ensure strict affinity is true:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-bash"},'kubectl patch ipamconfigurations default --type merge --patch=\'{"spec": {"strictAffinity": true}}\'\n')),(0,a.yg)("h3",{id:"add-windows-nodes-to-the-cluster"}
1,"Add Windows nodes to the cluster"),(0,a.yg)("p",null,"Download the latest ",(0,a.yg)("a",{parentName:"p",href:"https://github.com/openshift/windows-machine-config-bootstrapper/releases"},"Windows Node Installer (WNI)")," binary ",(0,a.yg)("inlineCode",{parentName:"p"},"wni")," that matches your OpenShift minor version."),(0,a.yg)("admonition",{type:"note"},(0,a.yg)("p",{parentName:"admonition"},"For OpenShift 4.6, use the latest wni for OpenShift 4.5. A wni binary for OpenShift 4.6 is not published yet.")),(0,a.yg)("p",null,"Next, determine the AMI id corresponding to Windows Server 1903 (build 18317) or greater. ",(0,a.yg)("inlineCode",{parentName:"p"},"wni")," defaults to using Windows Server 2019 (build 10.0.17763) which does not include WinDSR support.\nOne way to do this is by searching for AMI's matching the string ",(0,a.yg)("inlineCode",{parentName:"p"},"Windows_Server-1903-English-Core-ContainersLatest")," in the Amazon EC2 console"),(0,a.yg)("p",null,"Next, run ",(0,a.yg)("inlineCode",{parentName:"p"},"wni")," to add a Windows node to your cluster. Replace AMI_ID, AWS_CREDENTIALS_PATH, AWS_KEY_NAME and AWS_PRIVATE_KEY_PATH with your values:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-bash"},"chmod u+x wni\n./wni aws create \\\n  --image-id AMI_ID \\\n  --kubeconfig openshift-tigera-install/auth/kubeconfig \\\n  --credentials AWS_CREDENTIALS_PATH \\\n  --credential-account default \\\n  --instance-type m5a.large \\\n  --ssh-key AWS_KEY_NAME \\\n  --private-key AWS_PRIVATE_KEY_PATH\n")),(0,a.yg)("p",null,"An example of running the above steps:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre"},"$ chmod u+x wni\n$ ./wni aws create \\\n>   --kubeconfig openshift-tigera-install/auth/kubeconfig \\\n>   --credentials ~/.aws/credentials \\\n>   --credential-account default \\\n>   --instance-type m5a.large \\\n>   --ssh-key test-key \\\n>   --private-key /home/user/.ssh/test-key.pem\n2020/10/05 12:52:51 kubeconfig source: /home/user/openshift-tigera-install/auth/kubeconfig\n2020/10/05 12:52:59 Added rule with port 5986 to the security groups of your local IP\n2020/10/05 12:52:59 Added rule with port 22 to the security groups of your local IP\n2020/10/05 12:52:59 Added rule with port 3389 to the security groups of your local IP\n2020/10/05 12:52:59 Using existing Security Group: sg-06d1de22807d5dc48\n2020/10/05 12:57:30 External IP: 52.35.12.231\n2020/10/05 12:57:30 Internal IP: 10.0.90.193\n")),(0,a.yg)("h3",{id:"get-the-administrator-password"},"Get the administrator password"),(0,a.yg)("p",null,"The ",(0,a.yg)("inlineCode",{parentName:"p"},"wni")," binary writes the instance details to the file ",(0,a.yg)("inlineCode",{parentName:"p"},"windows-node-installer.json"),". An example of the file:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre"},'{"InstanceIDs":["i-02e13d4cc76c13c83"],"SecurityGroupIDs":["sg-0a777565d64e1d2ef"]}\n')),(0,a.yg)("p",null,"Use the instance ID from the file and the path of the private key used to create the instance to get the Administrator user's password:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-bash"},"aws ec2 get-password-data --instance-id <instance id> --priv-launch-key <aws private key path>\n")),(0,a.yg)("h3",{id:"install-calico-for-windows"},"Install Calico for Windows"),(0,a.yg)("ol",null,(0,a.yg)("li",{parentName:"ol"},(0,a.yg)("p",{parentName:"li"},"Remote into the Windows node, open a Powershell window, and prepare the directory for Kubernetes files."),(0,a.yg)("pre",{parentName:"li"},(0,a.yg)("code",{parentName:"pre",className:"language-powershell"},"mkdir c:\\k\n"))),(0,a.yg)("li",{parentName:"ol"},(0,a.yg)("p",{parentName:"li"},"Copy the Kubernetes kubeconfig file (default location: openshift-tigera-install/auth/kubeconfig), to the file ",(0,a.yg)("strong",{parentName:"p"},"c:\\k\\config"),".")),(0,a.yg)("li",{parentName:"ol"},(0,a.yg)("p",{parentName:"li"},"Download the powershell script, ",(0,a.yg)("strong",{parentName:"p"},"install-calico-windows.ps1"),"."),(0,a.yg)("pre",{parentName:"li"},(0,a.yg)("code",{parentName:"pre",className:"language-powershell"},"Invoke-WebRequest https://github.com/projectcalico/calico/releases/download/v3.26.5/install-calico-windows.ps1 -OutFile c:\\install-calico-windows.ps1\n"))),(0,a.yg)("li",{parentName:"ol"},(0,a.yg)("p",{parentName:"li"},"Run the installation script, replacing the Kubernetes version with the version corresponding to your version of OpenShift."),(0,a.yg)("pre",{parentName:"li"},(0,a.yg)("code",{parentName:"pre",className:"language-powershell"},"c:\\install-calico-windows.ps1 -KubeVersion <kube version> -ServiceCidr 172.30.0.0/16 -DNSServerIPs 172.30.0.10\n")),(0,a.yg)("admonition",{parentName:"li",type:"note"},(0,a.yg)("p",{parentName:"admonition"},"Get the Kubernetes version with ",(0,a.yg)("inlineCode",{parentName:"p"}
1,"oc version")," and use only the major, minor, and patch version numbers. For example from a cluster that returns:"),(0,a.yg)("pre",{parentName:"admonition"},(0,a.yg)("code",{parentName:"pre"},"$ oc version\nClient Version: 4.5.3\nServer Version: 4.5.14\nKubernetes Version: v1.18.3+5302882\n")),(0,a.yg)("p",{parentName:"admonition"},"You will use ",(0,a.yg)("inlineCode",{parentName:"p"},"1.18.3"),":"))),(0,a.yg)("li",{parentName:"ol"},(0,a.yg)("p",{parentName:"li"},"Install and start kube-proxy service. Execute following powershell script/commands."),(0,a.yg)("pre",{parentName:"li"},(0,a.yg)("code",{parentName:"pre",className:"language-powershell"},"C:\\CalicoWindows\\kubernetes\\install-kube-services.ps1 -service kube-proxy\nStart-Service -Name kube-proxy\n"))),(0,a.yg)("li",{parentName:"ol"},(0,a.yg)("p",{parentName:"li"},"Verify kube-proxy service is running."),(0,a.yg)("pre",{parentName:"li"},(0,a.yg)("code",{parentName:"pre",className:"language-powershell"},"Get-Service -Name kube-proxy\n")))),(0,a.yg)("h3",{id:"configure-kubelet"},"Configure kubelet"),(0,a.yg)("p",null,"From the Windows node, download the Windows Machine Config Bootstrapper ",(0,a.yg)("inlineCode",{parentName:"p"},"wmcb.exe")," that matches your OpenShift minor version from ",(0,a.yg)("a",{parentName:"p",href:"https://github.com/openshift/windows-machine-config-bootstrapper/releases"},"Windows Machine Config Bootstrapper releases"),". For example, for OpenShift 4.5.x:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-powershell"},"curl https://github.com/openshift/windows-machine-config-bootstrapper/releases/download/v4.5.2-alpha/wmcb.exe -o c:\\wmcb.exe\n")),(0,a.yg)("admonition",{type:"note"},(0,a.yg)("p",{parentName:"admonition"},"For OpenShift 4.6, use the latest wmcb.exe for OpenShift 4.5. A wmcb.exe binary for OpenShift 4.6 is not published yet.")),(0,a.yg)("p",null,"Next, we will download the ",(0,a.yg)("inlineCode",{parentName:"p"},"worker.ign")," file from the API server:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-powershell"},'$apiServer = c:\\k\\kubectl --kubeconfig c:\\k\\config get po -n  openshift-kube-apiserver -l apiserver=true --no-headers -o custom-columns=":metadata.name" | select -first 1\nc:\\k\\kubectl --kubeconfig c:\\k\\config -n openshift-kube-apiserver exec $apiserver -- curl -ks https://localhost:22623/config/worker > c:\\worker.ign\n((Get-Content c:\\worker.ign) -join "`n") + "`n" | Set-Content -NoNewline c:\\worker.ign\n')),(0,a.yg)("p",null,"Next, we run wmcb to configure the kubelet:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-powershell"},"c:\\wmcb.exe initialize-kubelet --ignition-file worker.ign --kubelet-path c:\\k\\kubelet.exe\n")),(0,a.yg)("admonition",{type:"note"},(0,a.yg)("p",{parentName:"admonition"},"The kubelet configuration installed by Windows Machine Config\nBootstrapper includes ",(0,a.yg)("inlineCode",{parentName:"p"},'--register-with-taints="os=Windows:NoSchedule"')," which\nwill require Windows pods to tolerate that taint.")),(0,a.yg)("p",null,"Next, we make a copy of the kubeconfig because ",(0,a.yg)("inlineCode",{parentName:"p"},"wmcb.exe")," expects the kubeconfig to be the file ",(0,a.yg)("inlineCode",{parentName:"p"},"c:\\k\\kubeconfig"),".\nThen we configure kubelet to use Calico CNI:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-powershell"},"cp c:\\k\\config c:\\k\\kubeconfig\nc:\\wmcb.exe configure-cni --cni-dir c:\\k\\cni --cni-config c:\\k\\cni\\config\\10-calico.conf\n")),(0,a.yg)("p",null,"Finally, clean up the additional files created on the Windows node:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-powershell"},"rm c:\\k\\kubeconfig,c:\\wmcb.exe,c:\\worker.ign\n")),(0,a.yg)("p",null,"Exit the remote session to the Windows node and return to a shell to a Linux\nnode."),(0,a.yg)("p",null,"We need to approve the CSR's generated by the kubelet's bootstrapping process. First, view the pending CSR's:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-bash"},"oc get csr\n")),(0,a.yg)("p",null,"For example:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre"},"$ oc get csr\nNAME        AGE     SIGNERNAME                                    REQUESTOR                                                                   CONDITION\ncsr-55brx   4m32s   kubernetes.io/kube-apiserver-client-kubelet   system:admin                                                                Approved,Issued\ncsr-bmnfd   4m30s   kubernetes.io/kubelet-serving                 system:node:ip-10-0-45-102.us-west-2.compute.internal                       Pending\ncsr-hwl89   5m1s    kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper   Pending\n")),(0,a.yg)("p",null,"To approve the pending CSR's:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-bash"},"oc get csr -o name | xargs oc adm certificate approve\n")),(0,a.yg)("p",null,"For example:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre"},"$ oc get csr -o name | xargs oc adm certificate approve\ncertificatesigningrequest.certificates.k8s.io/csr-55brx approved\ncertificatesigningrequest.certificates.k8s.io/csr-bmnfd approved\ncertificatesigningrequest.certificates.k8s.io/csr-hwl89 approved\n")),(0,a.yg)("p",null,"Finally, wait a minute or so and get all nodes:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre"},"$ oc get node -owide\n")),(0,a.yg)("p",null,"If the Windows no
1de registered itself successfully, it should appear in the list with a Ready status, ready to run Windows pods!"),(0,a.yg)("h2",{id:"next-steps"},"Next steps"),(0,a.yg)("p",null,(0,a.yg)("strong",{parentName:"p"},"Recommended - Security")),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("a",{parentName:"li",href:"/calico/3.26/network-policy/comms/crypto-auth"},"Secure Calico component communications")),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("a",{parentName:"li",href:"/calico/3.26/network-policy/get-started/calico-policy/calico-network-policy"},"Secure pods with Calico network policy")),(0,a.yg)("li",{parentName:"ul"},"If you are using Calico with Istio service mesh, get started here: ",(0,a.yg)("a",{parentName:"li",href:"/calico/3.26/network-policy/istio/app-layer-policy"},"Enable application layer policy"))))}u.isMDXComponent=!0},5082:(e,n,t)=>{"use strict";t.d(n,{A:()=>r});var i=t(96540),a=t(51085),o=t(69332);function r(){return i.createElement(i.Fragment,null,i.createElement("p",null,"Download the ",o.prodname," manifests for OpenShift and add them to the generated manifests directory:"),i.createElement(a.A,{id:"data-install-openshift-manifests",language:"bash"},`mkdir calico\nwget -qO- ${o.calicoReleasesURL}/${o.releaseTitle}/ocp.tgz | tar xvz --strip-components=1 -C calico\ncp calico/* manifests/`))}},69332:(e,n,t)=>{const i=t(86291),a={releaseTitle:"v3.26.5",prodname:"Calico",prodnamedash:"calico",version:"v3.26",baseUrl:"/calico/latest",filesUrl:"https://projectcalico.docs.tigera.io/v3.26",tutorialFilesURL:"https://docs.tigera.io/files",calicoReleasesURL:"https://github.com/projectcalico/calico/releases/download",tmpScriptsURL:"https://docs.tigera.io/calico/3.26",prodnameWindows:"Calico for Windows",nodecontainer:"calico/node",noderunning:"calico-node",rootDirWindows:"C:\\CalicoWindows",ppa_repo_name:"calico-3.26",manifestsUrl:"https://raw.githubusercontent.com/projectcalico/calico/v3.26.5",releases:i,registry:"",vppbranch:"v3.26.0",tigeraOperator:i[0]["tigera-operator"],tigeraOperatorVersionShort:i[0]["tigera-operator"].version.split(".").slice(0,2).join("."),imageNames:{"calico/node":"calico/node",calicoctl:"calico/ctl",typha:"calico/typha","calico/cni":"calico/cni","calico/apiserver":"calico/apiserver","calico/kube-controllers":"calico/kube-controllers","calico-upgrade":"calico-upgrade","calico/windows":"calico/windows",flannel:"docker.io/flannelcni/flannel",flannelMigration:"calico/flannel-migration-controller","calico/dikastes":"calico/dikastes","pilot-webhook":"calico/pilot-webhook",flexvol:"calico/pod2daemon-flexvol","csi-driver":"calico/csi","csi-node-driver-registrar":"calico/node-driver-registrar"}};e.exports=a},51085:(e,n,t)=>{"use strict";t.d(n,{A:()=>l});var i=t(96540),a=t(79087),o=t(41622);const r={codeBlockDetails:"codeBlockDetails_yGdK",codeBlockSummary:"codeBlockSummary_DY3J"};function l(e){const{collapsible:n,noValidation:t,title:l,metastring:s,...c}=e,p="boolean"==typeof t&&t,g=i.createElement("div",{"data-codeblock-validation":!p},n?i.createElement(a.A,c):i.createElement(a.A,e));if(n){const e=i.createElement("summary",{className:r.codeBlockSummary},l);return i.createElement(o.A,{summary:e,className:r.codeBlockDetails},g)}return i.createElement(i.Fragment,null,g)}},86291:e=>{"use strict";e.exports=JSON.parse('[{"title":"v3.26.5","tigera-operator":{"image":"tigera/operator","registry":"quay.io","version":"v1.30.11"},"components":{"typha":{"version":"v3.26.5"},"calicoctl":{"version":"v3.26.5"},"calico/node":{"version":"v3.26.5"},"calico/cni":{"version":"v3.26.5"},"calico/apiserver":{"version":"v3.26.5"},"calico/kube-controllers":{"version":"v3.26.5"},"calico/flannel-migration-controller":{"version":"v3.26.5"},"calico/windows":{"version":"v3.26.5"},"networking-calico":{"version":"v3.26.5"},"flannel":{"version":"v0.16.3"},"calico/dikastes":{"version":"v3.26.5"},"flexvol":{"version":"v3.26.5"},"csi-driver":{"version":"v3.26.5"},"csi-node-driver-registrar":{"version":"v3.26.5"}}},{"title":"v3.26.4","tigera-operator":{"image":"tigera/operator","registry":"quay.io","version":"v1.30.9"},"components":{"typha":{"version":"v3.26.4"},"calicoctl":{"version":"v3.26.4"},"calico/node":{"version":"v3.26.4"},"calico/cni":{"version":"v3.26.4"},"calico/apiserver":{"version":"v3.26.4"},"calico/kube-controllers":{"version":"v3.26.4"},"calico/flannel-migration-controller":{"version":"v3.26.4"},"calico/windows":{"version":"v3.26.4"},"networking-calico":{"version":"v3.26.4"},"flannel":{"version":"v0.16.3"},"calico/dikastes":{"version":"v3.26.4"},"flexvol":{"version":"v3.26.4"},"csi-driver":{"version":"v3.26.4"},"csi-node-driver-registrar":{"version":"v3.26.4"}}},{"title":"v3.26.3","tigera-operator":{"image":"tigera/operator","registry":"quay.io","version":"v1.30.7"},"components":{"typha":{"version":"v3.26.3"},"calicoctl":{"version":"v3.26.3"},"calico/node":{"version":"v3.26.3"},"calico/cni":{"version":"v3.26.3"},"calico/apiserver":{"version":"v3.26.3"},"calico/kube-controllers":{"version":"v3.26.3"},"calico/flannel-migration-controller":{"version":"v3.26.3"},"calico/windows":{"version":"v3.26.3"},"networking-calico":{"version":"v3.26.3"},"flannel":{"version":"v0.16.3"},"calico/dikastes":{"version":"v3.26.3"},"flexvol":{"version":"v3.26.3"},"csi-driver":{"version":"v3.26.3"},"csi-node-driver-registrar":{"version":"v3.26.3"}}},{"title":"v3.26.1","tigera-operator":{"image":"tigera/operator","registry":"quay.io","version":"v1.30.3"},"components":{"typha":{"version":"v3.26.1"},"calicoctl":{"version":"v3.26.1"},"calico/node":{"version":"v3.26.1"},"calico/cni":{"version":"v3.26.1"},"calico/apiserver":{"version":"v3.26.1"},"calico/kube-controllers":{"version":"v3.26.1"},"calico/flannel-migration-controller":{"version":"v3.26.1"},"calico/windows":{"version":"v3.26.1"},"networking-calico":{"version":"v3.26.1"},"flannel":{"version":"v0.16.3"},"calico/dikastes":{"version":"v3.26.1"},"flexvol":{"version":"v3.26.1"},"csi-driver":{"version":"v3.26.1"},"csi-node-driver-registrar":{"version":"v3.26.1"}}},{"title":"v3.26.0","tigera-operator":{"image":"tigera/operator","registry":"quay.io","version":"v1.30.0"},"components":{"typha":{"version":"v3.26.0"},"calicoctl":{"version":"v3.26.0"},"calico/node":{"version":"v3.26.0"},"calico/cni":{"version":"v3.26.0"},"calico/apiserver":{"version":"v3.26.0"},"calico/kube-controllers":{"version":"v3.26.0"},"calico/flannel-migration-controller":{"version":"v3.26.0"},"calico/windows":{"version":"v3.26.0"},"networking-calico":{"version":"v3.26.0"},"flannel":{"version":"v0.16.3"},"calico/dikastes":{"version":"v3.26.0"},"flexvol":{"version":"v3.26.0"},"csi-driver":{"version":"v3.26.0"},"csi-node-driver-registrar":{"version":"v3.26.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.