{"id":1300,"date":"2024-05-06T09:57:22","date_gmt":"2024-05-06T09:57:22","guid":{"rendered":"http:\/\/patriciocerda.com\/?p=1300"},"modified":"2024-12-12T15:53:59","modified_gmt":"2024-12-12T15:53:59","slug":"kubernetes-desplegar-vsphere-container-storage-plug-in-vsphere-csi","status":"publish","type":"post","link":"https:\/\/patriciocerda.com\/?p=1300","title":{"rendered":"Kubernetes &#8211; Desplegar vSphere Container Storage Plug-in (vSphere CSI)"},"content":{"rendered":"<p>Hola a todos, y bienvenidos nuevamente a este blog. Es esta oportunidad hablaremos nuevamente de <a title=\"Kasten\" href=\"https:\/\/patriciocerda.com\/?cat=27\" target=\"_blank\" rel=\"noopener\">Kubernetes<\/a>, y de como instalar y configurar <a href=\"https:\/\/docs.vmware.com\/en\/VMware-vSphere-Container-Storage-Plug-in\/index.html\" target=\"_blank\" rel=\"noopener\">vSphere Container Storage Plug-in<\/a> como <a href=\"https:\/\/kubernetes.io\/blog\/2019\/01\/15\/container-storage-interface-ga\/\" target=\"_blank\" rel=\"noopener\">CSI driver<\/a> para Persistent Volumes en K8s.<\/p>\n<p><a href=\"https:\/\/kubernetes.io\/blog\/2019\/01\/15\/container-storage-interface-ga\/\" target=\"_blank\" rel=\"noopener\">CSI<\/a> fue desarrollado como un estandar para exponer sistemas de almacenamientos, ya sea basado en bloques o en archivos, a cargas de trabajo corriendo como contenedores\/pods en Kubernetes.\u00a0 Un CSI Driver en Kubernetes permite, mediante esta integraci\u00f3n con sistemas de almacenamiento, la creacion de Persistent Volumes (PV) que luego pueden ser utilizados por pods de Kubernetes.<\/p>\n<p>Si tuvieramos un cluster de Kubernetes sobre alg\u00fan proveedor de Cloud como AWS EKS, Azure AKS o Google GKE, un CSI Driver compatible con el proveedor de cloud ya estar\u00eda instalado por defecto, por lo que podriamos crear PVs en Kubernetes utilizando los sistemas de almacenamiento del proveedor de Cloud.\u00a0\u00a0\u00a0 Por ejemplo, en el caso de AWS EKS, podriamos crear un PV utilizando AWS EBS (Elastic Block Store), sin tener que instalar ning\u00fan componente extra, ya que el cluster de Kubernetes montado con AWS EKS incluye el CSI Driver instalado por defecto.<\/p>\n<p>Ahora, que pasa si tenemos un cluster de <strong>Kubernetes On-premises<\/strong>, ya sea un cluster creado manualmente con Kubeadm o desplegado mediante alguna distribuci\u00f3n comercial como OpenShift, y deseamos montar PVs en sistemas de almacenamiento que tengamos en nuestra propia infraestructura?\u00a0\u00a0 Pues para eso debemos instalar un <a href=\"https:\/\/kubernetes-csi.github.io\/docs\/drivers.html\" target=\"_blank\" rel=\"noopener\">CSI Driver adecuado<\/a> para el almacenamiento que queramos utilizar.\u00a0\u00a0 Existen multiples opciones de CSI Drivers, como por ejemplo para NetApp, Dell EMC, e incluso para Synology, que es el almacenamiento que utilizo en mi homelab.<\/p>\n<p>Como no podia ser de otra forma, si en nuestra infraestructura contamos con un cluster de vSphere, es posible tambi\u00e9n instalar el <a href=\"https:\/\/docs.vmware.com\/en\/VMware-vSphere-Container-Storage-Plug-in\/index.html\" target=\"_blank\" rel=\"noopener\">CSI Driver para vSphere<\/a>, de manera de poder crear PVs utilizando los Datastores de vSphere como medio de almacenamiento.\u00a0 Y esto es justamente lo que detallaremos a continuaci\u00f3n<\/p>\n<p>&nbsp;<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Contenidos<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/patriciocerda.com\/?p=1300\/#Lista_de_materiales\" >Lista de materiales<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/patriciocerda.com\/?p=1300\/#Instalar_el_vSphere_Cloud_Provider_Interface\" >Instalar el vSphere Cloud Provider Interface<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/patriciocerda.com\/?p=1300\/#Instalar_el_vSphere_Container_Storage_Plug-in\" >Instalar el vSphere Container Storage Plug-in<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/patriciocerda.com\/?p=1300\/#Pruebas_con_el_CSI_Driver\" >Pruebas con el CSI Driver<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"Lista_de_materiales\"><\/span>Lista de materiales<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Para poder desplegar el vSphere CSI Driver, tambi\u00e9n llamado vSphere Container Plug-in, debemos contar al menos con lo siguiente:<\/p>\n<ul>\n<li>Un cluster de Kubernetes versi\u00f3n 1.21 o superior (para el vSphere CSI Driver 2.5) desplegado sobre vSphere.<\/li>\n<li>La herramienta de linea de comando kubectl<\/li>\n<li>Cada nodo del cluster Kubernetes debe tener instaladas las VMware Tools.<\/li>\n<li>Las VMs utilizadas para el cluster de K8s deben tener version de hardware 15 o superior.<\/li>\n<li>En cada VM del cluster K8s se debe habilitar el <a href=\"https:\/\/docs.vmware.com\/en\/VMware-vSphere-Container-Storage-Plug-in\/2.0\/vmware-vsphere-csp-getting-started\/GUID-0AB6E692-AA47-4B6A-8CEA-38B754E16567.html#procedure-6\" target=\"_blank\" rel=\"noopener\">parametro avanzado<\/a> <strong>disk.EnableUUID=True<\/strong> utilizando el vSphere Client<\/li>\n<li>Un cluster vSphere 6.7 Update 3 o superior<\/li>\n<li>Un usuario de vCenter Server con los permisos adecuados.\u00a0 Ver los roles y permisos requeridos en el siguiente link: <a href=\"https:\/\/docs.vmware.com\/en\/VMware-vSphere-Container-Storage-Plug-in\/2.0\/vmware-vsphere-csp-getting-started\/GUID-0AB6E692-AA47-4B6A-8CEA-38B754E16567.html\" target=\"_blank\" rel=\"noopener\">https:\/\/docs.vmware.com\/en\/VMware-vSphere-Container-Storage-Plug-in\/2.0\/vmware-vsphere-csp-getting-started\/GUID-0AB6E692-AA47-4B6A-8CEA-38B754E16567.html<\/a><\/li>\n<\/ul>\n<h2 id=\"GUID-0C202FC5-F973-4D24-B383-DDA27DA49BFA__GUID-B4748734-63A0-4290-BA88-CD9E103D5294\" class=\"title topictitle2\"><span class=\"ez-toc-section\" id=\"Instalar_el_vSphere_Cloud_Provider_Interface\"><\/span>Instalar el vSphere Cloud Provider Interface<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Veremos ahora la primera parte del procedimiento, que consiste en instalar el vSphere Cloud Provider Interface:<\/p>\n<ul>\n<li>Identificamos la versi\u00f3n mayor de Kubernetes y la a\u00f1adimos a una Variable llamada VERSION.\u00a0\u00a0 En este ejemplo, la version es 1.23.6, por lo que la versi\u00f3n mayor que debemos a\u00f1adir a la variable seria simplemente 1.23.<\/li>\n<\/ul>\n<style type=\"text\/css\" scopped=\"scopped\">.fusion-syntax-highlighter-1 > .CodeMirror, .fusion-syntax-highlighter-1 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color1);}.fusion-syntax-highlighter-1 > .CodeMirror .CodeMirror-gutters { background-color: var(--awb-color2); }.fusion-syntax-highlighter-1 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color8); }<\/style><div class=\"fusion-syntax-highlighter-container fusion-syntax-highlighter-1 fusion-syntax-highlighter-theme-light\" style=\"opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:var(--awb-color3);\"><div class=\"syntax-highlighter-copy-code\"><span class=\"syntax-highlighter-copy-code-title\" data-id=\"fusion_syntax_highlighter_1\" style=\"font-size:14px;\">Copy to Clipboard<\/span><\/div><label for=\"fusion_syntax_highlighter_1\" class=\"screen-reader-text\">Syntax Highlighter<\/label><textarea class=\"fusion-syntax-highlighter-textarea\" id=\"fusion_syntax_highlighter_1\" data-readOnly=\"nocursor\" data-lineNumbers=\"1\" data-lineWrapping=\"\" data-theme=\"default\" data-mode=\"text\/x-sh\">$kubelet --version\nKubernetes v1.23.6\n$VERSION=1.23\n<\/textarea><\/div>\n<ul>\n<li>Descargamos el fichero vsphere-cloud-controller-manager.yaml<\/li>\n<\/ul>\n<style type=\"text\/css\" scopped=\"scopped\">.fusion-syntax-highlighter-2 > .CodeMirror, .fusion-syntax-highlighter-2 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color1);}.fusion-syntax-highlighter-2 > .CodeMirror .CodeMirror-gutters { background-color: var(--awb-color2); }.fusion-syntax-highlighter-2 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color8); }<\/style><div class=\"fusion-syntax-highlighter-container fusion-syntax-highlighter-2 fusion-syntax-highlighter-theme-light\" style=\"opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:var(--awb-color3);\"><div class=\"syntax-highlighter-copy-code\"><span class=\"syntax-highlighter-copy-code-title\" data-id=\"fusion_syntax_highlighter_2\" style=\"font-size:14px;\">Copy to Clipboard<\/span><\/div><label for=\"fusion_syntax_highlighter_2\" class=\"screen-reader-text\">Syntax Highlighter<\/label><textarea class=\"fusion-syntax-highlighter-textarea\" id=\"fusion_syntax_highlighter_2\" data-readOnly=\"nocursor\" data-lineNumbers=\"1\" data-lineWrapping=\"\" data-theme=\"default\" data-mode=\"text\/x-sh\">wget https:\/\/raw.githubusercontent.com\/kubernetes\/cloud-provider-vsphere\/release-$VERSION\/releases\/v$VERSION\/vsphere-cloud-controller-manager.yaml<\/textarea><\/div>\n<p>&nbsp;<\/p>\n<p><a href=\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere03.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-1308\" src=\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere03-300x99.jpg\" alt=\"\" width=\"300\" height=\"99\" srcset=\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere03-200x66.jpg 200w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere03-300x99.jpg 300w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere03-400x132.jpg 400w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere03-600x197.jpg 600w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere03-768x253.jpg 768w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere03-800x263.jpg 800w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere03-1024x337.jpg 1024w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere03-1200x395.jpg 1200w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere03-1536x505.jpg 1536w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere03.jpg 1626w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li>Editamos el fichero vsphere-cloud-controller-manager.yaml para incluir los detalles de vCenter Server\n<ul>\n<li>FQDN<\/li>\n<li>Username<\/li>\n<li>Password<\/li>\n<li>Labels (opcional)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<style type=\"text\/css\" scopped=\"scopped\">.fusion-syntax-highlighter-3 > .CodeMirror, .fusion-syntax-highlighter-3 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color1);}.fusion-syntax-highlighter-3 > .CodeMirror .CodeMirror-gutters { background-color: var(--awb-color2); }.fusion-syntax-highlighter-3 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color8); }<\/style><div class=\"fusion-syntax-highlighter-container fusion-syntax-highlighter-3 fusion-syntax-highlighter-theme-light\" style=\"opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:var(--awb-color3);\"><div class=\"syntax-highlighter-copy-code\"><span class=\"syntax-highlighter-copy-code-title\" data-id=\"fusion_syntax_highlighter_3\" style=\"font-size:14px;\">Copy to Clipboard<\/span><\/div><label for=\"fusion_syntax_highlighter_3\" class=\"screen-reader-text\">Syntax Highlighter<\/label><textarea class=\"fusion-syntax-highlighter-textarea\" id=\"fusion_syntax_highlighter_3\" data-readOnly=\"nocursor\" data-lineNumbers=\"1\" data-lineWrapping=\"\" data-theme=\"default\" data-mode=\"text\/x-sh\">---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: cloud-controller-manager\n  labels:\n    vsphere-cpi-infra: service-account\n    component: cloud-controller-manager\n  namespace: kube-system\n---\napiVersion: v1\nkind: Secret\nmetadata:\n  name: vsphere-cloud-secret\n  labels:\n    vsphere-cpi-infra: secret\n    component: cloud-controller-manager\n  namespace: kube-system\n  # NOTE: this is just an example configuration, update with real values based on your environment\nstringData:\n  172.20.10.25.username: \"administrator@vsphere.local\"\n  172.20.10.25.password: \"YOURPASSWORD\"\n---\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: vsphere-cloud-config\n  labels:\n    vsphere-cpi-infra: config\n    component: cloud-controller-manager\n  namespace: kube-system\ndata:\n  # NOTE: this is just an example configuration, update with real values based on your environment\n  vsphere.conf: |\n    # Global properties in this section will be used for all specified vCenters unless overriden in VirtualCenter section.\n    global:\n      port: 443\n      # set insecureFlag to true if the vCenter uses a self-signed cert\n      insecureFlag: true\n      # settings for using k8s secret\n      secretName: vsphere-cloud-secret\n      secretNamespace: kube-system\n\n    # vcenter section\n    vcenter:\n      vcenterlab01:\n        server: vcenterlab01.homelab.local\n        user: administrator@vsphere.local\n        password: YOURPASSWORD\n        datacenters:\n          - HomeLab\n\n    # labels for regions and zones\n    labels:\n      region: k8s-madrid\n      zone: k8s-vanilla<\/textarea><\/div>\n<ul>\n<li>Desplegamos el vSphere Cloud Provider Interface con Kubctl<\/li>\n<\/ul>\n<style type=\"text\/css\" scopped=\"scopped\">.fusion-syntax-highlighter-4 > .CodeMirror, .fusion-syntax-highlighter-4 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color1);}.fusion-syntax-highlighter-4 > .CodeMirror .CodeMirror-gutters { background-color: var(--awb-color2); }.fusion-syntax-highlighter-4 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color8); }<\/style><div class=\"fusion-syntax-highlighter-container fusion-syntax-highlighter-4 fusion-syntax-highlighter-theme-light\" style=\"opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:var(--awb-color3);\"><div class=\"syntax-highlighter-copy-code\"><span class=\"syntax-highlighter-copy-code-title\" data-id=\"fusion_syntax_highlighter_4\" style=\"font-size:14px;\">Copy to Clipboard<\/span><\/div><label for=\"fusion_syntax_highlighter_4\" class=\"screen-reader-text\">Syntax Highlighter<\/label><textarea class=\"fusion-syntax-highlighter-textarea\" id=\"fusion_syntax_highlighter_4\" data-readOnly=\"nocursor\" data-lineNumbers=\"1\" data-lineWrapping=\"\" data-theme=\"default\" data-mode=\"text\/x-sh\">[k8scluster@k8smaster01 ~]$ k apply -f vsphere-cloud-controller-manager.yaml                                                               serviceaccount\/cloud-controller-manager unchanged\nsecret\/vsphere-cloud-secret configured\nconfigmap\/vsphere-cloud-config configured\nrolebinding.rbac.authorization.k8s.io\/servicecatalog.k8s.io:apiserver-authentication-reader configured\nclusterrolebinding.rbac.authorization.k8s.io\/system:cloud-controller-manager configured\nclusterrole.rbac.authorization.k8s.io\/system:cloud-controller-manager created\ndaemonset.apps\/vsphere-cloud-controller-manager created<\/textarea><\/div>\n<p>&nbsp;<\/p>\n<p><!--more--><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Instalar_el_vSphere_Container_Storage_Plug-in\"><\/span>Instalar el vSphere Container Storage Plug-in<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Ya tenemos la primera parte lista, ahora toca ir al procedimiento de instalaci\u00f3n del CSI Driver para vSphere.<\/p>\n<ul>\n<li>En primer lugar creamos el namespace llamado vmware-system-csi.\u00a0 Podemos hacer esto con una de estas opciones de linea de comando:<\/li>\n<\/ul>\n<style type=\"text\/css\" scopped=\"scopped\">.fusion-syntax-highlighter-5 > .CodeMirror, .fusion-syntax-highlighter-5 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color1);}.fusion-syntax-highlighter-5 > .CodeMirror .CodeMirror-gutters { background-color: var(--awb-color2); }.fusion-syntax-highlighter-5 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color8); }<\/style><div class=\"fusion-syntax-highlighter-container fusion-syntax-highlighter-5 fusion-syntax-highlighter-theme-light\" style=\"opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:var(--awb-color3);\"><div class=\"syntax-highlighter-copy-code\"><span class=\"syntax-highlighter-copy-code-title\" data-id=\"fusion_syntax_highlighter_5\" style=\"font-size:14px;\">Copy to Clipboard<\/span><\/div><label for=\"fusion_syntax_highlighter_5\" class=\"screen-reader-text\">Syntax Highlighter<\/label><textarea class=\"fusion-syntax-highlighter-textarea\" id=\"fusion_syntax_highlighter_5\" data-readOnly=\"nocursor\" data-lineNumbers=\"1\" data-lineWrapping=\"\" data-theme=\"default\" data-mode=\"text\/x-sh\">kubctl create namespace vmware-system-csi\nkubectl apply -f https:\/\/raw.githubusercontent.com\/kubernetes-sigs\/vsphere-csi-driver\/v2.5.1\/manifests\/vanilla\/namespace.yaml<\/textarea><\/div>\n<p>&nbsp;<\/p>\n<p><a href=\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere06.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-1310\" src=\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere06-300x66.jpg\" alt=\"\" width=\"300\" height=\"66\" srcset=\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere06-200x44.jpg 200w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere06-300x66.jpg 300w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere06-400x88.jpg 400w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere06-600x132.jpg 600w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere06-768x169.jpg 768w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere06-800x176.jpg 800w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere06-1024x226.jpg 1024w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere06-1200x264.jpg 1200w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere06-1536x339.jpg 1536w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<ul>\n<li>Luego debemos aplicar un Taint al nodo Master del cluster de Kubernetes y verificamos que se haya aplicado correctamente<\/li>\n<\/ul>\n<style type=\"text\/css\" scopped=\"scopped\">.fusion-syntax-highlighter-6 > .CodeMirror, .fusion-syntax-highlighter-6 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color1);}.fusion-syntax-highlighter-6 > .CodeMirror .CodeMirror-gutters { background-color: var(--awb-color2); }.fusion-syntax-highlighter-6 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color8); }<\/style><div class=\"fusion-syntax-highlighter-container fusion-syntax-highlighter-6 fusion-syntax-highlighter-theme-light\" style=\"opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:var(--awb-color3);\"><div class=\"syntax-highlighter-copy-code\"><span class=\"syntax-highlighter-copy-code-title\" data-id=\"fusion_syntax_highlighter_6\" style=\"font-size:14px;\">Copy to Clipboard<\/span><\/div><label for=\"fusion_syntax_highlighter_6\" class=\"screen-reader-text\">Syntax Highlighter<\/label><textarea class=\"fusion-syntax-highlighter-textarea\" id=\"fusion_syntax_highlighter_6\" data-readOnly=\"nocursor\" data-lineNumbers=\"1\" data-lineWrapping=\"\" data-theme=\"default\" data-mode=\"text\/x-sh\">kubectl taint nodes <k8s-primary-name> node-role.kubernetes.io\/master=:NoSchedule\nkubectl describe nodes | egrep \"Taints:|Name:\"<\/textarea><\/div>\n<p>&nbsp;<\/p>\n<p><a href=\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere07.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-1312\" src=\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere07-300x90.jpg\" alt=\"\" width=\"300\" height=\"90\" srcset=\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere07-200x60.jpg 200w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere07-300x90.jpg 300w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere07-400x120.jpg 400w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere07-600x179.jpg 600w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere07-768x230.jpg 768w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere07-800x239.jpg 800w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere07.jpg 906w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<ul>\n<li>Descargamos el certificado de vCenter Server para habilitar una comunicaci\u00f3n segura entre Kubernetes y vSphere<\/li>\n<\/ul>\n<style type=\"text\/css\" scopped=\"scopped\">.fusion-syntax-highlighter-7 > .CodeMirror, .fusion-syntax-highlighter-7 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color1);}.fusion-syntax-highlighter-7 > .CodeMirror .CodeMirror-gutters { background-color: var(--awb-color2); }.fusion-syntax-highlighter-7 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color8); }<\/style><div class=\"fusion-syntax-highlighter-container fusion-syntax-highlighter-7 fusion-syntax-highlighter-theme-light\" style=\"opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:var(--awb-color3);\"><div class=\"syntax-highlighter-copy-code\"><span class=\"syntax-highlighter-copy-code-title\" data-id=\"fusion_syntax_highlighter_7\" style=\"font-size:14px;\">Copy to Clipboard<\/span><\/div><label for=\"fusion_syntax_highlighter_7\" class=\"screen-reader-text\">Syntax Highlighter<\/label><textarea class=\"fusion-syntax-highlighter-textarea\" id=\"fusion_syntax_highlighter_7\" data-readOnly=\"nocursor\" data-lineNumbers=\"1\" data-lineWrapping=\"\" data-theme=\"default\" data-mode=\"text\/x-sh\">curl -LO https:\/\/vCenter-IP-Address\/certs\/download.zip\nunzip download.zip\ncd certs\/lin<\/textarea><\/div>\n<p><a href=\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere10.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-1314\" src=\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere10-300x86.jpg\" alt=\"\" width=\"300\" height=\"86\" srcset=\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere10-200x57.jpg 200w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere10-300x86.jpg 300w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere10-400x114.jpg 400w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere10-600x171.jpg 600w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere10-768x219.jpg 768w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere10-800x228.jpg 800w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere10-1024x292.jpg 1024w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere10-1200x342.jpg 1200w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere10.jpg 1497w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li>Creamos un ConfigMap a partir de el certificado que hemos descargado<\/li>\n<\/ul>\n<style type=\"text\/css\" scopped=\"scopped\">.fusion-syntax-highlighter-8 > .CodeMirror, .fusion-syntax-highlighter-8 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color1);}.fusion-syntax-highlighter-8 > .CodeMirror .CodeMirror-gutters { background-color: var(--awb-color2); }.fusion-syntax-highlighter-8 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color8); }<\/style><div class=\"fusion-syntax-highlighter-container fusion-syntax-highlighter-8 fusion-syntax-highlighter-theme-light\" style=\"opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:var(--awb-color3);\"><div class=\"syntax-highlighter-copy-code\"><span class=\"syntax-highlighter-copy-code-title\" data-id=\"fusion_syntax_highlighter_8\" style=\"font-size:14px;\">Copy to Clipboard<\/span><\/div><label for=\"fusion_syntax_highlighter_8\" class=\"screen-reader-text\">Syntax Highlighter<\/label><textarea class=\"fusion-syntax-highlighter-textarea\" id=\"fusion_syntax_highlighter_8\" data-readOnly=\"nocursor\" data-lineNumbers=\"1\" data-lineWrapping=\"\" data-theme=\"default\" data-mode=\"text\/x-sh\">kubectl create configmap vc-root-ca-cert --from-file=749172ba.0 --namespace=vmware-system-csi\nsudo cp 749172ba.0 \/etc\/ssl\/certs\/749172ba.0<\/textarea><\/div>\n<p>&nbsp;<\/p>\n<ul>\n<li>El siguiente paso ser\u00e1 crear un un archivo de configuracion(csi-vsphere.conf) con los parametros de acceso a vCenter Server y el uso del certificado<\/li>\n<\/ul>\n<style type=\"text\/css\" scopped=\"scopped\">.fusion-syntax-highlighter-9 > .CodeMirror, .fusion-syntax-highlighter-9 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color1);}.fusion-syntax-highlighter-9 > .CodeMirror .CodeMirror-gutters { background-color: var(--awb-color2); }.fusion-syntax-highlighter-9 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color8); }<\/style><div class=\"fusion-syntax-highlighter-container fusion-syntax-highlighter-9 fusion-syntax-highlighter-theme-light\" style=\"opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:var(--awb-color3);\"><div class=\"syntax-highlighter-copy-code\"><span class=\"syntax-highlighter-copy-code-title\" data-id=\"fusion_syntax_highlighter_9\" style=\"font-size:14px;\">Copy to Clipboard<\/span><\/div><label for=\"fusion_syntax_highlighter_9\" class=\"screen-reader-text\">Syntax Highlighter<\/label><textarea class=\"fusion-syntax-highlighter-textarea\" id=\"fusion_syntax_highlighter_9\" data-readOnly=\"nocursor\" data-lineNumbers=\"1\" data-lineWrapping=\"\" data-theme=\"default\" data-mode=\"text\/x-sh\">vi csi-vsphere.conf\n\n[Global]\ncluster-id = \"k8scluster\"\ncluster-distribution = \"Vanilla\"\nca-file = \"\/etc\/ssl\/certs\/749172ba.0\" # optional, use with insecure-flag set to false\n\n[VirtualCenter \"vcenterlab01.homelab.local\"]\ninsecure-flag = \"false\"\nuser = \"administrator@vsphere.local\"\npassword = \"VMware1!\"\nport = \"443\"\ndatacenters = \"HomeLab\"<\/textarea><\/div>\n<p>&nbsp;<\/p>\n<ul>\n<li>Creamos el Kubernetes Secret con el fichero creado en el paso anterior (<strong>no olvidemos eliminar el fichero de configuraci\u00f3n luego de crear el Secret, para no exponer las credenciales<\/strong>)<\/li>\n<\/ul>\n<style type=\"text\/css\" scopped=\"scopped\">.fusion-syntax-highlighter-10 > .CodeMirror, .fusion-syntax-highlighter-10 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color1);}.fusion-syntax-highlighter-10 > .CodeMirror .CodeMirror-gutters { background-color: var(--awb-color2); }.fusion-syntax-highlighter-10 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color8); }<\/style><div class=\"fusion-syntax-highlighter-container fusion-syntax-highlighter-10 fusion-syntax-highlighter-theme-light\" style=\"opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:var(--awb-color3);\"><div class=\"syntax-highlighter-copy-code\"><span class=\"syntax-highlighter-copy-code-title\" data-id=\"fusion_syntax_highlighter_10\" style=\"font-size:14px;\">Copy to Clipboard<\/span><\/div><label for=\"fusion_syntax_highlighter_10\" class=\"screen-reader-text\">Syntax Highlighter<\/label><textarea class=\"fusion-syntax-highlighter-textarea\" id=\"fusion_syntax_highlighter_10\" data-readOnly=\"nocursor\" data-lineNumbers=\"1\" data-lineWrapping=\"\" data-theme=\"default\" data-mode=\"text\/x-sh\">kubectl create secret generic vsphere-config-secret --from-file=csi-vsphere.conf --namespace=vmware-system-csi\nkubectl get secret vsphere-config-secret --namespace=vmware-system-csi<\/textarea><\/div>\n<p>&nbsp;<\/p>\n<p><a href=\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere09.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-1313\" src=\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere09-300x46.jpg\" alt=\"\" width=\"300\" height=\"46\" srcset=\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere09-200x31.jpg 200w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere09-300x46.jpg 300w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere09-400x61.jpg 400w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere09-600x92.jpg 600w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere09-768x118.jpg 768w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere09-800x122.jpg 800w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere09-1024x157.jpg 1024w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere09-1200x184.jpg 1200w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere09-1536x235.jpg 1536w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere09.jpg 1732w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<ul>\n<li>Ahora toca descargar el fichero YAML que utilizaremos para desplegar el CSI Driver<\/li>\n<\/ul>\n<style type=\"text\/css\" scopped=\"scopped\">.fusion-syntax-highlighter-11 > .CodeMirror, .fusion-syntax-highlighter-11 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color1);}.fusion-syntax-highlighter-11 > .CodeMirror .CodeMirror-gutters { background-color: var(--awb-color2); }.fusion-syntax-highlighter-11 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color8); }<\/style><div class=\"fusion-syntax-highlighter-container fusion-syntax-highlighter-11 fusion-syntax-highlighter-theme-light\" style=\"opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:var(--awb-color3);\"><div class=\"syntax-highlighter-copy-code\"><span class=\"syntax-highlighter-copy-code-title\" data-id=\"fusion_syntax_highlighter_11\" style=\"font-size:14px;\">Copy to Clipboard<\/span><\/div><label for=\"fusion_syntax_highlighter_11\" class=\"screen-reader-text\">Syntax Highlighter<\/label><textarea class=\"fusion-syntax-highlighter-textarea\" id=\"fusion_syntax_highlighter_11\" data-readOnly=\"nocursor\" data-lineNumbers=\"1\" data-lineWrapping=\"\" data-theme=\"default\" data-mode=\"text\/x-sh\">wget https:\/\/raw.githubusercontent.com\/kubernetes-sigs\/vsphere-csi-driver\/v2.5.1\/manifests\/vanilla\/vsphere-csi-driver.yaml<\/textarea><\/div>\n<p>&nbsp;<\/p>\n<ul>\n<li>Editamos el fichero YAML para montar el ConfigMap creado previamente como un Volumen para acceder al certificado del vCenter Server.\u00a0 Esto se debe realizar en los contenedores <span id=\"GUID-C754A510-40BC-47E5-B222-1FEE40CB8186__GUID-71342BBE-5348-4ABA-A22B-E216265A7EE8\" class=\"ph cmd\"><strong><span class=\"ph filepath\">vsphere-syncer<\/span><\/strong> y <span class=\"ph filepath\"><strong>vsphere-csi-controller (Ver imagenes a continuaci\u00f3n)<\/strong>.<\/span><\/span><\/li>\n<\/ul>\n<style type=\"text\/css\" scopped=\"scopped\">.fusion-syntax-highlighter-12 > .CodeMirror, .fusion-syntax-highlighter-12 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color1);}.fusion-syntax-highlighter-12 > .CodeMirror .CodeMirror-gutters { background-color: var(--awb-color2); }.fusion-syntax-highlighter-12 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color8); }<\/style><div class=\"fusion-syntax-highlighter-container fusion-syntax-highlighter-12 fusion-syntax-highlighter-theme-light\" style=\"opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:var(--awb-color3);\"><div class=\"syntax-highlighter-copy-code\"><span class=\"syntax-highlighter-copy-code-title\" data-id=\"fusion_syntax_highlighter_12\" style=\"font-size:14px;\">Copy to Clipboard<\/span><\/div><label for=\"fusion_syntax_highlighter_12\" class=\"screen-reader-text\">Syntax Highlighter<\/label><textarea class=\"fusion-syntax-highlighter-textarea\" id=\"fusion_syntax_highlighter_12\" data-readOnly=\"nocursor\" data-lineNumbers=\"1\" data-lineWrapping=\"\" data-theme=\"default\" data-mode=\"text\/yaml\">containers:\n  - name: vsphere-csi-controller\n    volumeMounts:\n      - mountPath: \/etc\/ssl\/certs\/6355e8d1.0\n        subPath: 6355e8d1.0\n        name: vc-root-ca-cert\n  - name: vsphere-syncer\n    volumeMounts:\n      - mountPath: \/etc\/ssl\/certs\/6355e8d1.0\n        subPath: 6355e8d1.0\n        name: vc-root-ca-cert\n.\n.    \nvolumes:\n- name: vc-root-ca-cert\n  configMap:\n    name: vc-root-ca-cert<\/textarea><\/div>\n<p>&nbsp;<\/p>\n<p style=\"text-align: left;\"><a href=\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere14.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-1316 alignnone\" src=\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere14-300x294.jpg\" alt=\"\" width=\"300\" height=\"294\" srcset=\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere14-66x66.jpg 66w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere14-200x196.jpg 200w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere14-300x294.jpg 300w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere14-400x392.jpg 400w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere14-600x588.jpg 600w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere14-768x753.jpg 768w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere14-800x784.jpg 800w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere14.jpg 900w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a> <a href=\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere12.jpg\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-1318 alignnone\" src=\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere12-263x300.jpg\" alt=\"\" width=\"263\" height=\"300\" srcset=\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere12-200x229.jpg 200w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere12-263x300.jpg 263w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere12-400x457.jpg 400w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere12-600x686.jpg 600w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere12-768x878.jpg 768w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere12-800x914.jpg 800w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere12-896x1024.jpg 896w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere12.jpg 903w\" sizes=\"(max-width: 263px) 100vw, 263px\" \/><\/a><a href=\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere18.jpg\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-1317\" src=\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere18-300x82.jpg\" alt=\"\" width=\"300\" height=\"82\" srcset=\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere18-200x55.jpg 200w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere18-300x82.jpg 300w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere18-400x109.jpg 400w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere18-600x164.jpg 600w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere18-768x210.jpg 768w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere18-800x218.jpg 800w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere18.jpg 1015w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li>Una vez modificado el fichero YAML, solo queda desplegar el CSI Driver utilizando dicho fichero<\/li>\n<\/ul>\n<style type=\"text\/css\" scopped=\"scopped\">.fusion-syntax-highlighter-13 > .CodeMirror, .fusion-syntax-highlighter-13 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color1);}.fusion-syntax-highlighter-13 > .CodeMirror .CodeMirror-gutters { background-color: var(--awb-color2); }.fusion-syntax-highlighter-13 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color8); }<\/style><div class=\"fusion-syntax-highlighter-container fusion-syntax-highlighter-13 fusion-syntax-highlighter-theme-light\" style=\"opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:var(--awb-color3);\"><div class=\"syntax-highlighter-copy-code\"><span class=\"syntax-highlighter-copy-code-title\" data-id=\"fusion_syntax_highlighter_13\" style=\"font-size:14px;\">Copy to Clipboard<\/span><\/div><label for=\"fusion_syntax_highlighter_13\" class=\"screen-reader-text\">Syntax Highlighter<\/label><textarea class=\"fusion-syntax-highlighter-textarea\" id=\"fusion_syntax_highlighter_13\" data-readOnly=\"nocursor\" data-lineNumbers=\"1\" data-lineWrapping=\"\" data-theme=\"default\" data-mode=\"text\/x-sh\">[k8scluster@k8smaster01 ~]$ kubectl apply -f vsphere-csi-driver.yaml\ncsidriver.storage.k8s.io\/csi.vsphere.vmware.com created\nserviceaccount\/vsphere-csi-controller created\nclusterrole.rbac.authorization.k8s.io\/vsphere-csi-controller-role created\nclusterrolebinding.rbac.authorization.k8s.io\/vsphere-csi-controller-binding created\nserviceaccount\/vsphere-csi-node created\nclusterrole.rbac.authorization.k8s.io\/vsphere-csi-node-cluster-role created\nclusterrolebinding.rbac.authorization.k8s.io\/vsphere-csi-node-cluster-role-binding created\nrole.rbac.authorization.k8s.io\/vsphere-csi-node-role created\nrolebinding.rbac.authorization.k8s.io\/vsphere-csi-node-binding created\nconfigmap\/internal-feature-states.csi.vsphere.vmware.com created\nservice\/vsphere-csi-controller created\ndeployment.apps\/vsphere-csi-controller created\ndaemonset.apps\/vsphere-csi-node created\ndaemonset.apps\/vsphere-csi-node-windows created<\/textarea><\/div>\n<p>&nbsp;<\/p>\n<ul>\n<li>Verificamos que las instancia de vSphere CSI Controller se est\u00e1 ejecutando en el Control Plane, y que las instancias vSphere CSI Nodes se ejecutan en los nodos Worker<\/li>\n<\/ul>\n<style type=\"text\/css\" scopped=\"scopped\">.fusion-syntax-highlighter-14 > .CodeMirror, .fusion-syntax-highlighter-14 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color1);}.fusion-syntax-highlighter-14 > .CodeMirror .CodeMirror-gutters { background-color: var(--awb-color2); }.fusion-syntax-highlighter-14 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color8); }<\/style><div class=\"fusion-syntax-highlighter-container fusion-syntax-highlighter-14 fusion-syntax-highlighter-theme-light\" style=\"opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:var(--awb-color3);\"><div class=\"syntax-highlighter-copy-code\"><span class=\"syntax-highlighter-copy-code-title\" data-id=\"fusion_syntax_highlighter_14\" style=\"font-size:14px;\">Copy to Clipboard<\/span><\/div><label for=\"fusion_syntax_highlighter_14\" class=\"screen-reader-text\">Syntax Highlighter<\/label><textarea class=\"fusion-syntax-highlighter-textarea\" id=\"fusion_syntax_highlighter_14\" data-readOnly=\"nocursor\" data-lineNumbers=\"1\" data-lineWrapping=\"\" data-theme=\"default\" data-mode=\"text\/x-sh\">kubectl get deployment --namespace=vmware-system-csi\nkubectl get daemonsets vsphere-csi-node --namespace=vmware-system-csi<\/textarea><\/div>\n<p><a href=\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere16.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-1320 aligncenter\" src=\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere16-300x73.jpg\" alt=\"\" width=\"353\" height=\"86\" srcset=\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere16-200x48.jpg 200w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere16-300x73.jpg 300w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere16-400x97.jpg 400w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere16-600x145.jpg 600w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere16-768x186.jpg 768w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere16-800x194.jpg 800w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere16-1024x248.jpg 1024w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere16-1200x290.jpg 1200w, https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/CSIvSphere16.jpg 1405w\" sizes=\"(max-width: 353px) 100vw, 353px\" \/><\/a><\/p>\n<ul>\n<li>El ultimo paso ser\u00eda crear uno o m\u00e1s Storage Class en Kubernetes que nos permita utilizar el CSI Driver que acabamos de desplegar:<\/li>\n<\/ul>\n<style type=\"text\/css\" scopped=\"scopped\">.fusion-syntax-highlighter-15 > .CodeMirror, .fusion-syntax-highlighter-15 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color1);}.fusion-syntax-highlighter-15 > .CodeMirror .CodeMirror-gutters { background-color: var(--awb-color2); }.fusion-syntax-highlighter-15 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color8); }<\/style><div class=\"fusion-syntax-highlighter-container fusion-syntax-highlighter-15 fusion-syntax-highlighter-theme-light\" style=\"opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:var(--awb-color3);\"><div class=\"syntax-highlighter-copy-code\"><span class=\"syntax-highlighter-copy-code-title\" data-id=\"fusion_syntax_highlighter_15\" style=\"font-size:14px;\">Copy to Clipboard<\/span><\/div><label for=\"fusion_syntax_highlighter_15\" class=\"screen-reader-text\">Syntax Highlighter<\/label><textarea class=\"fusion-syntax-highlighter-textarea\" id=\"fusion_syntax_highlighter_15\" data-readOnly=\"nocursor\" data-lineNumbers=\"1\" data-lineWrapping=\"\" data-theme=\"default\" data-mode=\"text\/x-sh\">kind: StorageClass\napiVersion: storage.k8s.io\/v1\nmetadata:\n  name: vsphere-sc\n  annotations:\n    storageclass.kubernetes.io\/is-default-class: \"true\"\nprovisioner: csi.vsphere.vmware.com\nparameters:\n  storagepolicyname: \"K8s Normal Policy\"  #Optional Parameter\n# datastoreurl: \"ds:\/\/\/vmfs\/volumes\/vsan:52cdfa80721ff516-ea1e993113acfc77\/\" #Optional Parameter\n# csi.storage.k8s.io\/fstype: \"ext4\" #Optional Parameter<\/textarea><\/div>\n<p>&nbsp;<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Pruebas_con_el_CSI_Driver\"><\/span>Pruebas con el CSI Driver<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Ya tenemos desplegado el CSI Driver y el Storage Class, por lo que estamos en condiciones de poder crear Persistent Volume Claims con Persistent Volumes manuales o dinamicos.\u00a0 En este caso, podemos crear un PVC que nos permita crear un PV de manera dinamica con el siguiente codigo YAML de ejemplo<\/p>\n<style type=\"text\/css\" scopped=\"scopped\">.fusion-syntax-highlighter-16 > .CodeMirror, .fusion-syntax-highlighter-16 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color1);}.fusion-syntax-highlighter-16 > .CodeMirror .CodeMirror-gutters { background-color: var(--awb-color2); }.fusion-syntax-highlighter-16 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color8); }<\/style><div class=\"fusion-syntax-highlighter-container fusion-syntax-highlighter-16 fusion-syntax-highlighter-theme-light\" style=\"opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:var(--awb-color3);\"><div class=\"syntax-highlighter-copy-code\"><span class=\"syntax-highlighter-copy-code-title\" data-id=\"fusion_syntax_highlighter_16\" style=\"font-size:14px;\">Copy to Clipboard<\/span><\/div><label for=\"fusion_syntax_highlighter_16\" class=\"screen-reader-text\">Syntax Highlighter<\/label><textarea class=\"fusion-syntax-highlighter-textarea\" id=\"fusion_syntax_highlighter_16\" data-readOnly=\"nocursor\" data-lineNumbers=\"1\" data-lineWrapping=\"\" data-theme=\"default\" data-mode=\"text\/x-sh\">apiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n  name: vsphere-pvc\nspec:\n  accessModes:\n    - ReadWriteOnce\n  resources:\n    requests:\n      storage: 5Gi\n  storageClassName: vsphere-sc<\/textarea><\/div>\n<p>&nbsp;<\/p>\n<p>Una vez desplegado el fichero YAML, podemos ver como se ha creado el PVC y de manera automatica se ha creado el PV utilizando el CSI Driver de vSphere.<\/p>\n<style type=\"text\/css\" scopped=\"scopped\">.fusion-syntax-highlighter-17 > .CodeMirror, .fusion-syntax-highlighter-17 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color1);}.fusion-syntax-highlighter-17 > .CodeMirror .CodeMirror-gutters { background-color: var(--awb-color2); }.fusion-syntax-highlighter-17 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color8); }<\/style><div class=\"fusion-syntax-highlighter-container fusion-syntax-highlighter-17 fusion-syntax-highlighter-theme-light\" style=\"opacity:0;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:14px;border-width:1px;border-style:solid;border-color:var(--awb-color3);\"><div class=\"syntax-highlighter-copy-code\"><span class=\"syntax-highlighter-copy-code-title\" data-id=\"fusion_syntax_highlighter_17\" style=\"font-size:14px;\">Copy to Clipboard<\/span><\/div><label for=\"fusion_syntax_highlighter_17\" class=\"screen-reader-text\">Syntax Highlighter<\/label><textarea class=\"fusion-syntax-highlighter-textarea\" id=\"fusion_syntax_highlighter_17\" data-readOnly=\"nocursor\" data-lineNumbers=\"1\" data-lineWrapping=\"\" data-theme=\"default\" data-mode=\"text\/x-sh\">[k8scluster@k8smaster01 ~]$ kubectl apply -f pvc-vsphere.yaml\nPersistentvolumeclaim\/vsphere-pvc created\n[k8scluster@k8smaster01 ~]$ kubectl get pvc\nNAME          STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE\nvsphere-pvc   Bound    pvc-5d30bd9d-4f8a-40df-979a-38301d5b4c4d   5Gi        RWO            vsphere-sc     15h\n[k8scluster@k8smaster01 ~]$ kubectl get pv\nNAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                         STORAGECLASS   REASON   AGE\npvc-0e207231-ea12-4dbd-8d20-35865d988e2d   20Gi       RWO            Delete           Bound    kasten-io\/jobs-pv-claim       synostorage             19h\npvc-5d30bd9d-4f8a-40df-979a-38301d5b4c4d   5Gi        RWO            Delete           Bound    default\/vsphere-pvc           vsphere-sc              15h<\/textarea><\/div>\n<p>&nbsp;<\/p>\n<p>Con ese completamos este procedimiento en Kubernetes, espero que les sea de utilidad y nos vemos en otra ocasi\u00f3n!!!<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hola a todos, y bienvenidos nuevamente a este blog. Es<\/p>\n","protected":false},"author":1,"featured_media":1322,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[27,55,56],"tags":[34,59,36,32,31,57,58],"aioseo_notices":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Kubernetes - Desplegar vSphere Container Storage Plug-in (vSphere CSI) - vLatam<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/patriciocerda.com\/?p=1300\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kubernetes - Desplegar vSphere Container Storage Plug-in (vSphere CSI) - vLatam\" \/>\n<meta property=\"og:description\" content=\"Hola a todos, y bienvenidos nuevamente a este blog. Es\" \/>\n<meta property=\"og:url\" content=\"https:\/\/patriciocerda.com\/?p=1300\" \/>\n<meta property=\"og:site_name\" content=\"vLatam\" \/>\n<meta property=\"article:published_time\" content=\"2024-05-06T09:57:22+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-12-12T15:53:59+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/InicioVideosK8sCSIvSphere.png\" \/>\n\t<meta property=\"og:image:width\" content=\"3840\" \/>\n\t<meta property=\"og:image:height\" content=\"2160\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"pcerda\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"pcerda\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/patriciocerda.com\/?p=1300\",\"url\":\"https:\/\/patriciocerda.com\/?p=1300\",\"name\":\"Kubernetes - Desplegar vSphere Container Storage Plug-in (vSphere CSI) - vLatam\",\"isPartOf\":{\"@id\":\"https:\/\/patriciocerda.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/patriciocerda.com\/?p=1300#primaryimage\"},\"image\":{\"@id\":\"https:\/\/patriciocerda.com\/?p=1300#primaryimage\"},\"thumbnailUrl\":\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/InicioVideosK8sCSIvSphere.png\",\"datePublished\":\"2024-05-06T09:57:22+00:00\",\"dateModified\":\"2024-12-12T15:53:59+00:00\",\"author\":{\"@id\":\"https:\/\/patriciocerda.com\/#\/schema\/person\/613aa192d7dbcedcd20e08318891aa2a\"},\"breadcrumb\":{\"@id\":\"https:\/\/patriciocerda.com\/?p=1300#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/patriciocerda.com\/?p=1300\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/patriciocerda.com\/?p=1300#primaryimage\",\"url\":\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/InicioVideosK8sCSIvSphere.png\",\"contentUrl\":\"https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/InicioVideosK8sCSIvSphere.png\",\"width\":3840,\"height\":2160},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/patriciocerda.com\/?p=1300#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/patriciocerda.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kubernetes &#8211; Desplegar vSphere Container Storage Plug-in (vSphere CSI)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/patriciocerda.com\/#website\",\"url\":\"https:\/\/patriciocerda.com\/\",\"name\":\"vLatam\",\"description\":\"El Blog de Patricio Cerda\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/patriciocerda.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/patriciocerda.com\/#\/schema\/person\/613aa192d7dbcedcd20e08318891aa2a\",\"name\":\"pcerda\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/patriciocerda.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/patriciocerda.com\/wp-content\/litespeed\/avatar\/ce92117b9294544adeaad229a8fbac13.jpg?ver=1776772888\",\"contentUrl\":\"https:\/\/patriciocerda.com\/wp-content\/litespeed\/avatar\/ce92117b9294544adeaad229a8fbac13.jpg?ver=1776772888\",\"caption\":\"pcerda\"},\"url\":\"https:\/\/patriciocerda.com\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Kubernetes - Desplegar vSphere Container Storage Plug-in (vSphere CSI) - vLatam","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/patriciocerda.com\/?p=1300","og_locale":"en_US","og_type":"article","og_title":"Kubernetes - Desplegar vSphere Container Storage Plug-in (vSphere CSI) - vLatam","og_description":"Hola a todos, y bienvenidos nuevamente a este blog. Es","og_url":"https:\/\/patriciocerda.com\/?p=1300","og_site_name":"vLatam","article_published_time":"2024-05-06T09:57:22+00:00","article_modified_time":"2024-12-12T15:53:59+00:00","og_image":[{"width":3840,"height":2160,"url":"https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/InicioVideosK8sCSIvSphere.png","type":"image\/png"}],"author":"pcerda","twitter_card":"summary_large_image","twitter_misc":{"Written by":"pcerda","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/patriciocerda.com\/?p=1300","url":"https:\/\/patriciocerda.com\/?p=1300","name":"Kubernetes - Desplegar vSphere Container Storage Plug-in (vSphere CSI) - vLatam","isPartOf":{"@id":"https:\/\/patriciocerda.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/patriciocerda.com\/?p=1300#primaryimage"},"image":{"@id":"https:\/\/patriciocerda.com\/?p=1300#primaryimage"},"thumbnailUrl":"https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/InicioVideosK8sCSIvSphere.png","datePublished":"2024-05-06T09:57:22+00:00","dateModified":"2024-12-12T15:53:59+00:00","author":{"@id":"https:\/\/patriciocerda.com\/#\/schema\/person\/613aa192d7dbcedcd20e08318891aa2a"},"breadcrumb":{"@id":"https:\/\/patriciocerda.com\/?p=1300#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/patriciocerda.com\/?p=1300"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/patriciocerda.com\/?p=1300#primaryimage","url":"https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/InicioVideosK8sCSIvSphere.png","contentUrl":"https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/InicioVideosK8sCSIvSphere.png","width":3840,"height":2160},{"@type":"BreadcrumbList","@id":"https:\/\/patriciocerda.com\/?p=1300#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/patriciocerda.com\/"},{"@type":"ListItem","position":2,"name":"Kubernetes &#8211; Desplegar vSphere Container Storage Plug-in (vSphere CSI)"}]},{"@type":"WebSite","@id":"https:\/\/patriciocerda.com\/#website","url":"https:\/\/patriciocerda.com\/","name":"vLatam","description":"El Blog de Patricio Cerda","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/patriciocerda.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/patriciocerda.com\/#\/schema\/person\/613aa192d7dbcedcd20e08318891aa2a","name":"pcerda","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/patriciocerda.com\/#\/schema\/person\/image\/","url":"https:\/\/patriciocerda.com\/wp-content\/litespeed\/avatar\/ce92117b9294544adeaad229a8fbac13.jpg?ver=1776772888","contentUrl":"https:\/\/patriciocerda.com\/wp-content\/litespeed\/avatar\/ce92117b9294544adeaad229a8fbac13.jpg?ver=1776772888","caption":"pcerda"},"url":"https:\/\/patriciocerda.com\/?author=1"}]}},"jetpack_featured_media_url":"https:\/\/patriciocerda.com\/wp-content\/uploads\/2022\/05\/InicioVideosK8sCSIvSphere.png","_links":{"self":[{"href":"https:\/\/patriciocerda.com\/index.php?rest_route=\/wp\/v2\/posts\/1300"}],"collection":[{"href":"https:\/\/patriciocerda.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/patriciocerda.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/patriciocerda.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/patriciocerda.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1300"}],"version-history":[{"count":5,"href":"https:\/\/patriciocerda.com\/index.php?rest_route=\/wp\/v2\/posts\/1300\/revisions"}],"predecessor-version":[{"id":1326,"href":"https:\/\/patriciocerda.com\/index.php?rest_route=\/wp\/v2\/posts\/1300\/revisions\/1326"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/patriciocerda.com\/index.php?rest_route=\/wp\/v2\/media\/1322"}],"wp:attachment":[{"href":"https:\/\/patriciocerda.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1300"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/patriciocerda.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1300"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/patriciocerda.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1300"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}