{"id":1111,"date":"2021-07-15T16:08:41","date_gmt":"2021-07-15T14:08:41","guid":{"rendered":"https:\/\/loeilduse.fr\/?p=1111"},"modified":"2021-07-15T16:13:28","modified_gmt":"2021-07-15T14:13:28","slug":"create-a-ldaps-self-signed-certificates-for-pinniped","status":"publish","type":"post","link":"https:\/\/loeilduse.fr\/?p=1111&lang=en","title":{"rendered":"Create a LDAPS self-signed certificates for Pinniped"},"content":{"rendered":"<p style=\"text-align: justify;\"><span style=\"font-family: trebuchet ms, geneva, sans-serif;\"><span class=\"VIiyi\" lang=\"en\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\">In order to simplify the authentication of Kubernetes clusters operating on different clouds, VMware has developed the Pinniped project accessible in Opensource. Pinniped has been integrated by default into the<\/span><\/span>\u00a0<a href=\"https:\/\/tanzu.vmware.com\/kubernetes-grid\">VMware Tanzu Kubernetes Grid<\/a> (TKG) <span class=\"VIiyi\" lang=\"en\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\">offering since version 1.3, replacing the <\/span><\/span><a href=\"https:\/\/github.com\/heptiolabs\/gangway\">Gangway<\/a>. <span class=\"VIiyi\" lang=\"en\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\">inniped allows authentication from OIDC or LDAP sources. In the case of LDAP source, Pinniped does not connect directly to LDAP but currently relies on the <\/span><\/span> <a href=\"https:\/\/github.com\/dexidp\/dex\">Dex<\/a> <span class=\"VIiyi\" lang=\"en\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\">component as Gangway already did.<\/span><\/span><\/span><\/p>\n<p style=\"text-align: justify;\"><span class=\"VIiyi\" lang=\"en\" style=\"font-family: trebuchet ms, geneva, sans-serif;\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\">When a user runs a Kubernetes command for the first time or after a certain period of inactivity, they are prompted to authenticate only once with their corporate credentials and can then consume multiple Kubernetes clusters. <\/span><\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-family: trebuchet ms, geneva, sans-serif;\"><span class=\"VIiyi\" lang=\"en\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\">I wanted to test this functionality in my lab with an LDAPS \/ Active Directory server running Windows 2019 and I quickly encountered the eternal problem of certificates not signed by a known authority. So I had to create a certificate that is recognized by the Active Directory server. Searching for hours on the internet, I ended up finding an article by<\/span><\/span>\u00a0<a href=\"https:\/\/bl.ocks.org\/magnetikonline\">Peter Mescalchin<\/a> <span class=\"VIiyi\" lang=\"en\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\">that worked on the first try:<\/span><\/span> <a href=\"https:\/\/bl.ocks.org\/magnetikonline\/0ccdabfec58eb1929c997d22e7341e45\">Enable LDAP over SSL (LDAPS) for Microsoft Active Directory servers. &#8211; bl.ocks.org.<\/a><\/span><\/p>\n<p style=\"text-align: justify;\"><span class=\"VIiyi\" lang=\"en\" style=\"font-family: trebuchet ms, geneva, sans-serif;\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\">However, when I wanted to use this procedure with Pinniped, it did not work because the SAN (Subject Alternative Name) information was not present in the certificate. By crossing several articles on the subject, I was able to adapt Peter Mescalchin&#8217;s solution so that the certificates integrate the SAN information. It gives this: <\/span><\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 14pt; font-family: trebuchet ms, geneva, sans-serif;\"><strong><span class=\"VIiyi\" lang=\"en\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\">Creation of the Root certificate<\/span><\/span><\/strong><\/span><\/p>\n<p style=\"text-align: justify;\"><span class=\"VIiyi\" lang=\"en\" style=\"font-family: trebuchet ms, geneva, sans-serif;\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\">Via <em><span style=\"font-family: courier new, courier, monospace;\">OpenSSL<\/span> <\/em>(I used a Linux Ubuntu) create a private key (<em><span style=\"font-family: courier new, courier, monospace;\">ca.key<\/span><\/em> in my example) to be able to then create the root certificate (<span style=\"font-family: courier new, courier, monospace;\"><em>ca.crt<\/em><\/span> in my example). The first command will ask you for a password and the second for your organization information.<\/span><\/span><\/p>\n<p style=\"text-align: justify; padding-left: 40px;\"><span style=\"font-family: courier new, courier, monospace;\"><em>$ openssl genrsa -aes256 -out ca.key 4096<br \/>\n<\/em><em>$ openssl req -new -x509 -days 3650 -key ca.key -out ca.crt<\/em><\/span><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify;\"><span class=\"VIiyi\" lang=\"en\" style=\"font-size: 14pt; font-family: trebuchet ms, geneva, sans-serif;\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\"><strong>Import the Root certificate on the AD server<\/strong> <\/span><\/span><\/p>\n<p style=\"text-align: justify;\"><span class=\"VIiyi\" lang=\"en\" style=\"font-family: trebuchet ms, geneva, sans-serif;\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\">From the AD server, type the command <span style=\"font-family: courier new, courier, monospace;\"><em>certlm<\/em> <\/span>or via Control Pannel, type computer certificates in the search bar: <\/span><\/span><\/p>\n<p style=\"text-align: justify;\"><span class=\"VIiyi\" lang=\"en\" style=\"font-family: trebuchet ms, geneva, sans-serif;\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\">Be careful to choose \u201cManage computer certificates\u201d and not \u201cManage user certificates\u201d <\/span><\/span><\/p>\n<p style=\"text-align: justify; padding-left: 40px;\"><span style=\"font-family: trebuchet ms, geneva, sans-serif;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1113\" src=\"https:\/\/loeilduse.fr\/wp-content\/uploads\/2021\/07\/Control-Pannel-cert.png\" alt=\"\" width=\"604\" height=\"95\" srcset=\"https:\/\/loeilduse.fr\/wp-content\/uploads\/2021\/07\/Control-Pannel-cert.png 604w, https:\/\/loeilduse.fr\/wp-content\/uploads\/2021\/07\/Control-Pannel-cert-300x47.png 300w\" sizes=\"(max-width: 604px) 100vw, 604px\" \/><\/span><\/p>\n<p style=\"text-align: justify;\"><span class=\"VIiyi\" lang=\"en\" style=\"font-family: trebuchet ms, geneva, sans-serif;\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\">Import the previously generated <span style=\"font-family: courier new, courier, monospace;\"><em>ca.crt<\/em><\/span> in the &#8220;Trusted Root Certification Authorities \\ Certificates&#8221; section<\/span><\/span><\/p>\n<p style=\"text-align: justify; padding-left: 40px;\"><span style=\"font-family: trebuchet ms, geneva, sans-serif;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1114\" src=\"https:\/\/loeilduse.fr\/wp-content\/uploads\/2021\/07\/upload-ca-root.png\" alt=\"\" width=\"525\" height=\"264\" srcset=\"https:\/\/loeilduse.fr\/wp-content\/uploads\/2021\/07\/upload-ca-root.png 525w, https:\/\/loeilduse.fr\/wp-content\/uploads\/2021\/07\/upload-ca-root-300x151.png 300w\" sizes=\"(max-width: 525px) 100vw, 525px\" \/><\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-family: trebuchet ms, geneva, sans-serif;\"><strong>\u00a0<\/strong><\/span><\/p>\n<p style=\"text-align: justify;\"><span class=\"VIiyi\" lang=\"en\" style=\"font-size: 14pt; font-family: trebuchet ms, geneva, sans-serif;\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\"><strong>Creation of the Client certificate<\/strong> <\/span><\/span><\/p>\n<p style=\"text-align: justify;\"><span class=\"VIiyi\" lang=\"en\" style=\"font-family: trebuchet ms, geneva, sans-serif;\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\">Still from the Active Directory server, create a file, in our example it has the name <em><span style=\"font-family: courier new, courier, monospace;\">request.inf<\/span><\/em>. In red, I have made changes from the original procedure to add the SAN information. Be careful to put the FQDN of the AD server in <em><span style=\"font-family: courier new, courier, monospace;\">CN<\/span><\/em>. The values \u200b\u200bof <strong><span style=\"color: #ff0000;\"><em><span style=\"font-family: courier new, courier, monospace;\">_continue_ = &#8220;dns&#8221;<\/span><\/em><\/span><\/strong> and <em><span style=\"color: #ff0000;\"><strong><span style=\"font-family: courier new, courier, monospace;\">_continue_ = &#8220;ip-address&#8221;<\/span><\/strong><\/span><\/em> correspond to the SAN values, the other possible values \u200b\u200bto reference the AD server.<\/span><\/span><\/p>\n<p style=\"text-align: justify; padding-left: 40px;\"><span style=\"font-family: courier new, courier, monospace;\"><em>[<\/em><em>Version<\/em><em>]<br \/>\n<\/em><em>Signature=&#8221;$Windows NT$&#8221;<\/em><\/span><\/p>\n<p style=\"text-align: justify; padding-left: 40px;\"><span style=\"font-family: courier new, courier, monospace;\"><em><span style=\"font-family: courier new, courier, monospace;\">[NewRequest]<\/span><br \/>\n<\/em><em>Subject =<span style=\"color: #ff0000;\"> &#8220;CN=<\/span><\/em><span style=\"color: #ff0000;\"><strong><em>ad-server.cpod-velocity.az-fkd.cloud-garage.net<\/em><\/strong><\/span><em><span style=\"color: #ff0000;\">&#8220;<\/span><br \/>\n<\/em><em>KeySpec = 1<br \/>\n<\/em><em>KeyLength = 2048<br \/>\n<\/em><em>Exportable = TRUE<br \/>\n<\/em><em>MachineKeySet = TRUE<br \/>\n<\/em><em>SMIME = FALSE<br \/>\n<\/em><em>PrivateKeyArchive = FALSE<br \/>\n<\/em><em>UserProtected = FALSE<br \/>\n<\/em><em>UseExistingKeySet = FALSE<br \/>\n<\/em><em>ProviderName = &#8220;Microsoft RSA SChannel Cryptographic Provider&#8221;<br \/>\n<\/em><em>ProviderType = 12<br \/>\n<\/em><em>RequestType = PKCS10<br \/>\n<\/em><em>KeyUsage = 0xa0<\/em><\/span><\/p>\n<p style=\"text-align: justify; padding-left: 40px;\"><span style=\"font-family: courier new, courier, monospace;\"><em>[EnhancedKeyUsageExtension]<br \/>\n<\/em><em>OID = 1.3.6.1.5.5.7.3.1 ; Server Authentication<\/em><\/span><\/p>\n<p style=\"text-align: justify; padding-left: 40px;\"><span style=\"color: #ff0000; font-family: courier new, courier, monospace;\"><strong><em>[Extensions]<br \/>\n<\/em><\/strong><strong><em>; SANs can be included in the Extensions section by using the following text format. Note 2.5.29.17 is the OID for a SAN extension.<br \/>\n<\/em><\/strong><strong><em>2.5.29.17 = &#8220;{text}&#8221;<br \/>\n<\/em><\/strong><strong><em>_continue_ = &#8220;dns=ad-server&amp;&#8221;<br \/>\n<\/em><\/strong><strong><em>_continue_ = &#8220;dns=ad-server.cpod-velocity.az-fkd.cloud-garage.net&amp;&#8221;<br \/>\n<\/em><\/strong><strong><em>_continue_ = &#8220;dns=cloud-garage.net&amp;&#8221;<br \/>\n<\/em><\/strong><strong><em>_continue_ = &#8220;ipaddress=172.17.13.9&amp;&#8221;<\/em><\/strong><\/span><\/p>\n<p style=\"text-align: justify;\"><span class=\"VIiyi\" lang=\"en\" style=\"font-family: trebuchet ms, geneva, sans-serif;\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\">Generate the<span style=\"font-family: courier new, courier, monospace;\"><em> client.csr<\/em><\/span> file with the command below:<\/span><\/span><\/p>\n<p style=\"padding-left: 40px; text-align: justify;\"><span style=\"font-family: courier new, courier, monospace;\"><em>c:\\&gt; certreq -new request.inf client.csr<\/em><\/span><\/p>\n<p style=\"text-align: justify;\"><span class=\"VIiyi\" lang=\"en\" style=\"font-family: trebuchet ms, geneva, sans-serif;\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\">From the Linux machine: <\/span><\/span><\/p>\n<p style=\"text-align: justify;\"><span class=\"VIiyi\" lang=\"en\" style=\"font-family: trebuchet ms, geneva, sans-serif;\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\">Create an extension file, in our example it has the name <em><span style=\"font-family: courier new, courier, monospace;\">v3ext.txt<\/span><\/em>. In red, I have made the changes from the initial procedure to add the SAN information under the heading <em><span style=\"font-family: courier new, courier, monospace;\">v3_ca<\/span> <\/em>which will be referenced in the next order.<\/span><\/span><\/p>\n<p style=\"padding-left: 40px; text-align: justify;\"><span style=\"font-family: courier new, courier, monospace;\"><em>keyUsage=digitalSignature,keyEncipherment<br \/>\n<\/em><em>extendedKeyUsage=serverAuth<br \/>\n<\/em><em>subjectKeyIdentifier=hash<\/em><\/span><\/p>\n<p style=\"padding-left: 40px; text-align: justify;\"><span style=\"color: #ff0000; font-family: courier new, courier, monospace;\"><strong><em># These extensions are added when &#8216;ca&#8217; signs a request.<br \/>\n<\/em><\/strong><strong><em>[ v3_ca ]<br \/>\n<\/em><\/strong><strong><em>subjectAltName = @alt_names<\/em><\/strong><\/span><\/p>\n<p style=\"padding-left: 40px; text-align: justify;\"><span style=\"color: #ff0000; font-family: courier new, courier, monospace;\"><strong><em>[ alt_names ]<br \/>\n<\/em><\/strong><strong><em>DNS.1 = ad-server.cpod-velocity.az-fkd.cloud-garage.net<br \/>\n<\/em><\/strong><strong><em>DNS.2 = ad-server<br \/>\n<\/em><\/strong><strong><em>IP.1 = 172.17.13.9<\/em><\/strong><\/span><\/p>\n<p style=\"text-align: justify;\"><span class=\"VIiyi\" lang=\"en\" style=\"font-family: trebuchet ms, geneva, sans-serif;\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\">Still from the Linux machine, create the <em><span style=\"font-family: courier new, courier, monospace;\">client.crt<\/span><\/em> certificate from the files generated in the previous steps <em><span style=\"font-family: courier new, courier, monospace;\">ca.crt<\/span><\/em>,<em><span style=\"font-family: courier new, courier, monospace;\"> ca.key<\/span><\/em>, <em><span style=\"font-family: courier new, courier, monospace;\">client.csr<\/span><\/em> and <em><span style=\"font-family: courier new, courier, monospace;\">v3ext.txt<\/span><\/em>, in red which has been added compared to the command outcome of the initial procedure<\/span><\/span><\/p>\n<p style=\"text-align: justify; padding-left: 40px;\"><span style=\"font-family: courier new, courier, monospace;\"><em>$ openssl x509 -req -days 3650 -in client.csr -CA ca.crt -CAkey ca.key -extfile v3ext.txt -set_serial 01 -out client.crt<\/em><span style=\"color: #ff0000;\"><em> <strong>-extensions v3_ca<\/strong><\/em><\/span><\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-family: trebuchet ms, geneva, sans-serif;\"><em>\u00a0<\/em><\/span><\/p>\n<p style=\"text-align: justify;\"><span class=\"VIiyi\" lang=\"en\" style=\"font-family: trebuchet ms, geneva, sans-serif;\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\">To verify the presence of SAN information<\/span><\/span><\/p>\n<p style=\"text-align: justify; padding-left: 40px;\"><span style=\"font-family: courier new, courier, monospace;\"><em>$ openssl x509 -in client.crt -text<br \/>\n<\/em><em>\u00a0&#8230;..<br \/>\n<\/em><span style=\"color: #ff0000;\"><strong><em>X509v3 extensions:<br \/>\n<\/em><\/strong><strong><em>\u00a0\u00a0\u00a0 \u00a0\u00a0<\/em><\/strong><strong><em>X509v3 Subject Alternative Name:<br \/>\n<\/em><\/strong><strong><em>\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0DNS:ad-server.cpod-velocity.az-fkd.cloud-garage.net, DNS:ad-server, IP Address:172.17.13.9<\/em><\/strong><\/span><\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-family: trebuchet ms, geneva, sans-serif;\"><strong>\u00a0<\/strong><\/span><\/p>\n<p style=\"text-align: justify;\"><span class=\"VIiyi\" lang=\"en\" style=\"font-size: 14pt; font-family: trebuchet ms, geneva, sans-serif;\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\"><strong>Import the Client certificate<\/strong> <\/span><\/span><\/p>\n<p style=\"text-align: justify;\"><span class=\"VIiyi\" lang=\"en\" style=\"font-family: trebuchet ms, geneva, sans-serif;\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\">From the AD server<\/span><\/span><\/p>\n<p style=\"padding-left: 40px; text-align: justify;\"><span style=\"font-family: courier new, courier, monospace;\"><em>C:\\&gt; certreq -accept client.crt<\/em><\/span><\/p>\n<p style=\"text-align: justify;\"><span class=\"VIiyi\" lang=\"en\" style=\"font-family: trebuchet ms, geneva, sans-serif;\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\">The certificate should appear in &#8220;Personal \\ Certificates&#8221;<\/span><\/span><\/p>\n<p style=\"padding-left: 40px; text-align: justify;\"><span style=\"font-family: trebuchet ms, geneva, sans-serif;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1116\" src=\"https:\/\/loeilduse.fr\/wp-content\/uploads\/2021\/07\/create-user-ca.png\" alt=\"\" width=\"604\" height=\"94\" srcset=\"https:\/\/loeilduse.fr\/wp-content\/uploads\/2021\/07\/create-user-ca.png 604w, https:\/\/loeilduse.fr\/wp-content\/uploads\/2021\/07\/create-user-ca-300x47.png 300w\" sizes=\"(max-width: 604px) 100vw, 604px\" \/><\/span><\/p>\n<p style=\"text-align: justify;\"><span class=\"VIiyi\" lang=\"en\" style=\"font-family: trebuchet ms, geneva, sans-serif;\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\">For the certificate to be taken into account, you must either restart the AD server or force LDAPS to load the certificate with the procedure below: <\/span><\/span><\/p>\n<p style=\"text-align: justify;\"><span class=\"VIiyi\" lang=\"en\" style=\"font-family: trebuchet ms, geneva, sans-serif;\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\">Still from the AD server, create a text file, in our example it is called <em><span style=\"font-family: courier new, courier, monospace;\">ldap-renewservercert.txt<\/span><\/em> with the content below (note the end of the file includes a line with a &#8211; (a dash):<\/span><\/span><\/p>\n<p style=\"padding-left: 40px; text-align: justify;\"><span style=\"font-family: courier new, courier, monospace;\"><em>dn:<br \/>\n<\/em><em>changetype: modify<br \/>\n<\/em><em>add: renewServerCertificate<br \/>\n<\/em><em>renewServerCertificate: 1<br \/>\n<\/em><em>&#8211;<\/em><\/span><\/p>\n<p style=\"text-align: justify;\"><span class=\"VIiyi\" lang=\"en\" style=\"font-family: trebuchet ms, geneva, sans-serif;\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\">Then type the command below:<\/span><\/span><\/p>\n<p style=\"padding-left: 40px; text-align: justify;\"><span style=\"font-family: courier new, courier, monospace;\"><em>c:\\&gt; ldifde -i -f ldap-renewservercert.txt<\/em><\/span><\/p>\n<p style=\"text-align: justify;\"><span class=\"VIiyi\" lang=\"en\" style=\"font-family: trebuchet ms, geneva, sans-serif;\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\">To test the taking into account, use the<em><span style=\"font-family: courier new, courier, monospace;\"> ldp.exe<\/span> <\/em>utility by selecting port <em><span style=\"font-family: courier new, courier, monospace;\">636<\/span> <\/em>(or another if specific) and checking the <em><span style=\"font-family: courier new, courier, monospace;\">SSL<\/span> <\/em>box.<\/span><\/span><\/p>\n<p style=\"padding-left: 40px; text-align: justify;\"><span style=\"font-family: trebuchet ms, geneva, sans-serif;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1117\" src=\"https:\/\/loeilduse.fr\/wp-content\/uploads\/2021\/07\/ldp-exe.png\" alt=\"\" width=\"440\" height=\"254\" srcset=\"https:\/\/loeilduse.fr\/wp-content\/uploads\/2021\/07\/ldp-exe.png 440w, https:\/\/loeilduse.fr\/wp-content\/uploads\/2021\/07\/ldp-exe-300x173.png 300w\" sizes=\"(max-width: 440px) 100vw, 440px\" \/><\/span><\/p>\n<p style=\"text-align: justify;\"><span class=\"VIiyi\" lang=\"en\" style=\"font-family: trebuchet ms, geneva, sans-serif;\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\">Once all the procedure is done, you have to recover the <em><span style=\"font-family: courier new, courier, monospace;\">ca.crt<\/span><\/em> generated in the first step to give it to Pinniped. This can be done either when the TKG management cluster is created or subsequently. <\/span><\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-family: trebuchet ms, geneva, sans-serif; font-size: 14pt;\"><strong><span class=\"VIiyi\" lang=\"en\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\">If the management cluster has not yet been created:<\/span><\/span><\/strong><\/span><\/p>\n<p style=\"text-align: justify; padding-left: 40px;\"><span style=\"font-family: trebuchet ms, geneva, sans-serif;\"><em><span style=\"font-family: courier new, courier, monospace;\">$ tanzu management-cluster create &#8211;ui<\/span><br \/>\n<span class=\"VIiyi\" lang=\"en\" style=\"font-family: courier new, courier, monospace;\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\">(there are two dashes before the ui argument but WordPress only displays one)<\/span><\/span><br \/>\n<\/em><\/span><\/p>\n<p style=\"text-align: justify;\"><span class=\"VIiyi\" lang=\"en\" style=\"font-family: trebuchet ms, geneva, sans-serif;\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\">In my test I chose vSphere as the platform, at the identity manager step it will be necessary to copy the certificate in the ROOT CA part<\/span><\/span><\/p>\n<p style=\"padding-left: 40px; text-align: justify;\"><span style=\"font-family: trebuchet ms, geneva, sans-serif;\"><u><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1118\" src=\"https:\/\/loeilduse.fr\/wp-content\/uploads\/2021\/07\/tkg-ui-ca.png\" alt=\"\" width=\"604\" height=\"312\" srcset=\"https:\/\/loeilduse.fr\/wp-content\/uploads\/2021\/07\/tkg-ui-ca.png 604w, https:\/\/loeilduse.fr\/wp-content\/uploads\/2021\/07\/tkg-ui-ca-300x155.png 300w\" sizes=\"(max-width: 604px) 100vw, 604px\" \/><\/u><\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-family: trebuchet ms, geneva, sans-serif; font-size: 14pt;\"><strong><span class=\"VIiyi\" lang=\"en\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\">If the TKG management cluster has already been created and you want to update it:<\/span><\/span><\/strong><\/span><\/p>\n<p style=\"text-align: justify;\"><span class=\"VIiyi\" lang=\"en\" style=\"font-family: trebuchet ms, geneva, sans-serif;\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\">From the Kubernetes context of the manager cluster, encrypt the Root certificate of the AD server with the base64 command and get the result:<\/span><\/span><\/p>\n<p style=\"padding-left: 40px; text-align: justify;\"><span style=\"font-family: courier new, courier, monospace;\"><em>$ base64 -w 0 ca.crt<\/em><\/span><\/p>\n<p style=\"text-align: justify;\"><span class=\"VIiyi\" lang=\"en\" style=\"font-family: trebuchet ms, geneva, sans-serif;\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\">Modify the certificate in the <em><span style=\"font-family: courier new, courier, monospace;\">dex<\/span> <\/em>configmap by the result of the previous command:<\/span><\/span><\/p>\n<p style=\"padding-left: 40px; text-align: justify;\"><span style=\"font-family: courier new, courier, monospace;\"><em>$ kubectl edit configmap -n tanzu-system-auth dex<br \/>\n<\/em><em># Please edit the object below. Lines beginning with a &#8216;#&#8217; will be ignored,<br \/>\n<\/em><em># and an empty file will abort the edit. If an error occurs while saving this file will be<br \/>\n<\/em><em># reopened with the relevant failures.<br \/>\n<\/em><em>#<br \/>\n<\/em><em>apiVersion: v1<br \/>\n<\/em><em>data:<br \/>\n<\/em><em>\u00a0 config.yaml: |<br \/>\n<\/em><em>\u00a0\u00a0\u00a0 issuer: https:\/\/172.17.13.10:30167<br \/>\n<\/em><em>\u00a0\u00a0\u00a0 frontend:<br \/>\n<\/em><em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 theme: tkg<br \/>\n<\/em><em>\u00a0\u00a0\u00a0 <\/em><em>web:<br \/>\n<\/em><em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 https: 0.0.0.0:5556<br \/>\n<\/em><em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 tlsCert: \/etc\/dex\/tls\/tls.crt<br \/>\n<\/em><em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 tlsKey: \/etc\/dex\/tls\/tls.key<br \/>\n<\/em><em>\u00a0\u00a0\u00a0 <\/em><em>expiry:<br \/>\n<\/em><em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 signingKeys: 90m<br \/>\n<\/em><em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 idTokens: 5m<br \/>\n<\/em><em>\u00a0\u00a0\u00a0 logger:<br \/>\n<\/em><em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 level: info<br \/>\n<\/em><em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 format: json<br \/>\n<\/em><em>\u00a0\u00a0\u00a0 staticClients:<br \/>\n<\/em><em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8211; id: pinniped-client-id<br \/>\n<\/em><em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 name: pinniped-client-id<br \/>\n<\/em><em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 redirectURIs:<br \/>\n<\/em><em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8211; https:\/\/172.17.13.10:31234\/callback<br \/>\n<\/em><em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 secret: 089db7e23b19cb628ba841b17cc32ea4<br \/>\n<\/em><em>\u00a0\u00a0\u00a0 connectors:<br \/>\n<\/em><em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8211; type: ldap<br \/>\n<\/em><em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 id: ldap<br \/>\n<\/em><em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 name: LDAP<br \/>\n<\/em><em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0config:<br \/>\n<\/em><em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 host: ad-server.cpod-velocity.az-fkd.cloud-garage.net:636<br \/>\n<\/em><em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 insecureSkipVerify: false<br \/>\nbindDN: cn=administrator,cn=Users,dc=velocity,dc=local<br \/>\n<\/em><em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 bindPW: $BIND_PW_ENV_VAR<br \/>\n<\/em><em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 usernamePrompt: LDAP Username<br \/>\n<\/em><em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/em><em>rootCAData:<br \/>\n<strong><span style=\"color: #ff0000;\">LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUdQekNDQkNlZ0F3SUJBZ0lVU2tQd0JPazVYRVFLRlpydXdwZXBoeTlINndzd0RRWUpLb1pJaHZjTkFRRUwKQlFBd2dhNHhDek<\/span><\/strong><br \/>\n<strong><span style=\"color: #ff0000;\">KQmdOVkJBWVRBa1pTTVF3d0NnWURWUVFJREFOSlJFWXhEakFNQmdOVkJBY01CVkJoY21segpNUlF3RWdZRFZRUUtEQXRNYjJWcGJDMWtkUzFUUlRFTE1Ba0dBMVVFQ3d3Q1UwVXhPRE<\/span><\/strong><br \/>\n<strong><span style=\"color: #ff0000;\">EyQmdOVkJBTU1MMkZrCkxYTmxjblpsY2k1amNHOWtMWFpsYkc5amFYUjVMbUY2TFdaclpDNWpiRzkxWkMxbllYSmhaMlV1Ym1WME1TUXcKSWdZSktvWklodmNOQVFrQkZoVm1ZbVZ1Y<\/span><\/strong><br \/>\n<strong><span style=\"color: #ff0000;\">21WcVpHRnNRSFp0ZDJGeVpTNWpiMjB3SGhjTk1qRXdOekEzTURjeQpNekl5V2hjTk16RXdOekExTURjeU16SXlXakNCcmpFTE1Ba0dBMVVFQmhNQ1JsSXhEREFLQmdOVkJBZ01BMGxFClJqRU9NQXdHQTFVRUJ3d0ZVR0Z5YVhNeEZEQVNCZ05WQkFvTUMweHZaV2xzTFdSMUxWTkZNUXN3Q1FZRFZRUUwKREFKVFJURTRNRFlHQTFVRUF3d3ZZV1F0YzJWeWRtVnlMbU53YjJ<\/span><\/strong><br \/>\n<strong><span style=\"color: #ff0000;\">RdGRtVnNiMk5wZEhrdVlYb3RabXRrTG1OcwpiM1ZrTFdkaGNtRm5aUzV1WlhReEpEQWlCZ2txaGtpRzl3MEJDUUVXRldaaVpXNXlaV3BrWVd4QWRtMTNZWEpsCkxtTnZiVENDQWlJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dJUEFEQ0NBZ29DZ2dJQkFMaWx0WE81WkxNOFRzZ0YKMXFxRFFURi9xV1EzTGkvalU2ZFJqM1VMLys2YitRL0VUVjdIb2VLMi9hK09UdHlRbzY4c<\/span><\/strong><br \/>\n<strong><span style=\"color: #ff0000;\">k9ySTVJRjNNWlJqKwpzU0JuWC9SejczczYvVjArWXhJTFozSmNNenlWUzZtR1ZhNTZBTmFZRFRqSkErUzF5enZJczFpZXdMWDR2YlFzCnJRdFE2NVphb3NYbFlMSWpxdzZCY01TZUlX<\/span><\/strong><br \/>\n<strong><span style=\"color: #ff0000;\">NUlUWitlUVF3emlkN2t5ZFBYNDdTBSSm1vR\u2026..1<\/span><\/strong><br \/>\n<\/em><em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u2026.<\/em><\/span><\/p>\n<p style=\"text-align: justify;\"><span class=\"VIiyi\" lang=\"en\" style=\"font-family: trebuchet ms, geneva, sans-serif;\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\">Relaunch the dex pod in the <em><span style=\"font-family: courier new, courier, monospace;\">tanzu-system-auth<\/span><\/em> namespace to take the change into account.<\/span><\/span><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify;\"><span class=\"VIiyi\" lang=\"en\" style=\"font-family: trebuchet ms, geneva, sans-serif; font-size: 14pt;\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\"><strong>Once the management cluster has the right certificate<\/strong> <\/span><\/span><\/p>\n<p style=\"text-align: justify;\"><span class=\"VIiyi\" lang=\"en\" style=\"font-family: trebuchet ms, geneva, sans-serif;\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\">From there, create a workload cluster:<\/span><\/span><\/p>\n<p style=\"text-align: justify; padding-left: 40px;\"><span style=\"font-family: courier new, courier, monospace;\"><em>$ tanzu cluster create my-cluster -f &lt;fichier-environnement&gt;<\/em><\/span><\/p>\n<p style=\"text-align: justify;\"><span class=\"VIiyi\" lang=\"en\" style=\"font-family: trebuchet ms, geneva, sans-serif;\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\">Import the administration Kubeconfig of the created workload cluster:<\/span><\/span><\/p>\n<p style=\"text-align: justify; padding-left: 40px;\"><span style=\"font-family: courier new, courier, monospace;\"><em>$ tanzu cluster kubeconfig get my-cluster &#8211;admin<br \/>\n<\/em><span class=\"VIiyi\" lang=\"en\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\">(there are two dashes before the admin argument but WordPress only displays one)<\/span><\/span><\/span><\/p>\n<p style=\"text-align: justify;\"><span class=\"VIiyi\" lang=\"en\" style=\"font-family: trebuchet ms, geneva, sans-serif;\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\">Connect to the workload cluster with the admin context, as admin no need for an account:<\/span><\/span><\/p>\n<p style=\"text-align: justify; padding-left: 40px;\"><span style=\"font-family: courier new, courier, monospace;\"><em>$ kubectl use-context my-cluster<strong>-admin<\/strong>@my-cluster<\/em><\/span><\/p>\n<p style=\"text-align: justify;\"><span class=\"VIiyi\" lang=\"en\" style=\"font-family: trebuchet ms, geneva, sans-serif;\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\">Create a cluster role binding with the role that interests you (here <em><span style=\"font-family: courier new, courier, monospace;\">cluster-admin<\/span><\/em>) for the desired users, this will allow the user to use this cluster once authenticated: <\/span><\/span><\/p>\n<p style=\"text-align: justify; padding-left: 40px;\"><span style=\"font-family: trebuchet ms, geneva, sans-serif;\"><em><span style=\"font-family: courier new, courier, monospace;\">$ kubectl create clusterrolebinding admin-fbenrejdal\u00a0 &#8211;clusterrole cluster-admin &#8211;user fbe@velocity.local<\/span><br \/>\n<span class=\"VIiyi\" lang=\"en\" style=\"font-family: courier new, courier, monospace;\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\">(there are two dashes before the clusterrole and user arguments but WordPress only displays one)<\/span><\/span><br \/>\n<\/em><\/span><\/p>\n<p style=\"text-align: justify;\"><span class=\"VIiyi\" lang=\"en\" style=\"font-family: trebuchet ms, geneva, sans-serif;\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\">Export the workload cluster kubeconfig, this is the kubeconfig that will need to be passed to users, it has no admin context and will require user authentication. The user will consume this cluster according to the rights defined in clusterrolebinding from the previous step:<\/span><\/span><\/p>\n<p style=\"text-align: justify; padding-left: 40px;\"><span style=\"font-family: courier new, courier, monospace;\"><em>$ tanzu cluster kubeconfig get my-cluster &#8211;export-file my-cluster-kubeconfig<br \/>\n<\/em><span class=\"VIiyi\" lang=\"en\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\">(there are two dashes before the export argument but WordPress only displays one)<\/span><\/span><\/span><\/p>\n<p style=\"text-align: justify;\"><span class=\"VIiyi\" lang=\"en\" style=\"font-family: trebuchet ms, geneva, sans-serif;\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\">Issue a kubernetes command with the generated kubeconfig file, which will launch the browser for authentication:<\/span><\/span><\/p>\n<p style=\"text-align: justify; padding-left: 40px;\"><span style=\"font-family: trebuchet ms, geneva, sans-serif;\"><em><span style=\"font-family: courier new, courier, monospace;\">$ kubectl get pods -A &#8211;kubeconfig my-cluster-kubeconfig<\/span><br \/>\n<span class=\"VIiyi\" lang=\"en\" style=\"font-family: courier new, courier, monospace;\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\">(there are two dashes before the kubeconfig argument but WordPress only displays one)<\/span><\/span><br \/>\n<\/em><\/span><\/p>\n<p style=\"text-align: justify;\"><span class=\"VIiyi\" lang=\"en\" style=\"font-family: trebuchet ms, geneva, sans-serif;\"><span class=\"JLqJ4b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\">You should be redirected to a browser with a web page asking for your username and password:<\/span> <\/span><\/p>\n<p style=\"padding-left: 40px; text-align: justify;\"><span style=\"font-family: trebuchet ms, geneva, sans-serif;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1119\" src=\"https:\/\/loeilduse.fr\/wp-content\/uploads\/2021\/07\/Pinniped-login.png\" alt=\"\" width=\"604\" height=\"185\" srcset=\"https:\/\/loeilduse.fr\/wp-content\/uploads\/2021\/07\/Pinniped-login.png 604w, https:\/\/loeilduse.fr\/wp-content\/uploads\/2021\/07\/Pinniped-login-300x92.png 300w\" sizes=\"(max-width: 604px) 100vw, 604px\" \/><\/span><\/p>\n<p style=\"text-align: justify;\"><span class=\"VIiyi\" lang=\"en\" style=\"font-family: trebuchet ms, geneva, sans-serif;\"><span class=\"JLqJ4b ChMk0b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"0\">Once entered, you will get the result of your last command:<\/span><\/span><\/p>\n<p style=\"padding-left: 40px; text-align: justify;\"><span style=\"font-family: trebuchet ms, geneva, sans-serif;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1120\" src=\"https:\/\/loeilduse.fr\/wp-content\/uploads\/2021\/07\/Pinniped-logged.png\" alt=\"\" width=\"400\" height=\"68\" srcset=\"https:\/\/loeilduse.fr\/wp-content\/uploads\/2021\/07\/Pinniped-logged.png 400w, https:\/\/loeilduse.fr\/wp-content\/uploads\/2021\/07\/Pinniped-logged-300x51.png 300w\" sizes=\"(max-width: 400px) 100vw, 400px\" \/><\/span><\/p>\n<p style=\"text-align: justify;\"><span class=\"VIiyi\" lang=\"en\" style=\"font-family: trebuchet ms, geneva, sans-serif;\"><span class=\"JLqJ4b ChMk0b\" data-language-for-alternatives=\"en\" data-language-to-translate-into=\"fr\" data-phrase-index=\"2\">The result of the previously command should be displayed:<\/span> <\/span><\/p>\n<p style=\"padding-left: 40px; text-align: justify;\"><em><span style=\"font-family: courier new, courier, monospace;\">NAMESPACE NAME READY STATUS RESTARTS AGE<\/span><\/em><br \/>\n<em><span style=\"font-family: courier new, courier, monospace;\">kube-system antrea-agent-q9xpg 2\/2 Running 0 7d15h<\/span><\/em><br \/>\n<em><span style=\"font-family: courier new, courier, monospace;\">kube-system antrea-agent-qlmj8 2\/2 Running 0 7d15h<\/span><\/em><br \/>\n<em><span style=\"font-family: courier new, courier, monospace;\">kube-system antrea-controller-6bb57bd84-6cj58 1\/1 Running 0 7d15h<\/span><\/em><br \/>\n<em><span style=\"font-family: courier new, courier, monospace;\">kube-system coredns-68d49685bd-bjcps 1\/1 Running 0 7d15h<\/span><\/em><br \/>\n<em><span style=\"font-family: courier new, courier, monospace;\">kube-system coredns-68d49685bd-vttdw 1\/1 Running 0 7d15h<\/span><\/em><br \/>\n<em><span style=\"font-family: courier new, courier, monospace;\">kube-system etcd-my-cluster-control-plane-48n9f 1\/1 Running 0 7d15h<\/span><\/em><br \/>\n<em><span style=\"font-family: courier new, courier, monospace;\">kube-system kube-apiserver-my-cluster-control-plane-48n9f 1\/1 Running 0 7d15h<\/span><\/em><br \/>\n<em><span style=\"font-family: courier new, courier, monospace;\">kube-system kube-controller-manager-my-cluster-control-plane-48n9f 1\/1 Running 0 7d15h<\/span><\/em><br \/>\n<em><span style=\"font-family: courier new, courier, monospace;\">kube-system kube-proxy-dntrc 1\/1 Running 0 7d15h<\/span><\/em><br \/>\n<em><span style=\"font-family: courier new, courier, monospace;\">kube-system kube-proxy-k5m9g 1\/1 Running 0 7d15h<\/span><\/em><br \/>\n<em><span style=\"font-family: courier new, courier, monospace;\">kube-system kube-scheduler-my-cluster-control-plane-48n9f 1\/1 Running 0 7d15h<\/span><\/em><br \/>\n<em><span style=\"font-family: courier new, courier, monospace;\">kube-system kube-vip-my-cluster-control-plane-48n9f 1\/1 Running 0 7d15h<\/span><\/em><br \/>\n<em><span style=\"font-family: courier new, courier, monospace;\">kube-system metrics-server-66cb4fb659-xlprc 1\/1 Running 0 7d15h<\/span><\/em><br \/>\n<em><span style=\"font-family: courier new, courier, monospace;\">kube-system vsphere-cloud-controller-manager-vmfwl 1\/1 Running 1 7d15h<\/span><\/em><br \/>\n<em><span style=\"font-family: courier new, courier, monospace;\">kube-system vsphere-csi-controller-bd8b6cc8c-8ljl8 6\/6 Running 0 7d15h<\/span><\/em><br \/>\n<em><span style=\"font-family: courier new, courier, monospace;\">kube-system vsphere-csi-node-6xqf5 3\/3 Running 0 7d15h<\/span><\/em><br \/>\n<em><span style=\"font-family: courier new, courier, monospace;\">kube-system vsphere-csi-node-vmbmq 3\/3 Running 0 7d15h<\/span><\/em><br \/>\n<em><span style=\"font-family: courier new, courier, monospace;\">pinniped-concierge pinniped-concierge-dcd587f97-lk9n5 1\/1 Running 0 7d15h<\/span><\/em><br \/>\n<em><span style=\"font-family: courier new, courier, monospace;\">pinniped-concierge pinniped-concierge-dcd587f97-zrnb7 1\/1 Running 0 7d15h<\/span><\/em><br \/>\n<em><span style=\"font-family: courier new, courier, monospace;\">pinniped-concierge pinniped-concierge-kube-cert-agent-8a8e3e38 1\/1 Running 0 7d15h<\/span><\/em><br \/>\n<em><span style=\"font-family: courier new, courier, monospace;\">pinniped-supervisor pinniped-post-deploy-job-4ldt7 0\/1 Completed 0 7d15h<\/span><\/em><br \/>\n<em><span style=\"font-family: courier new, courier, monospace;\">pinniped-supervisor pinniped-post-deploy-job-m74gz 0\/1 Error 0 7d15h<\/span><\/em><br \/>\n<em><span style=\"font-family: courier new, courier, monospace;\">tkg-system kapp-controller-69c4d4bbb4-kwk5l 1\/1 Running 0 7d15h<\/span><\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In order to simplify the authentication of Kubernetes clusters operating on different clouds, VMware has developed the Pinniped project accessible in Opensource. Pinniped has been integrated by default into the\u00a0VMware Tanzu Kubernetes Grid (TKG) offering since version 1.3, replacing the Gangway. inniped allows authentication from OIDC or LDAP sources. In the case of LDAP source,<\/p><\/div>\n<div class=\"blog-btn\"><a href=\"https:\/\/loeilduse.fr\/?p=1111&#038;lang=en\" class=\"home-blog-btn\">Lire la suite<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[401],"tags":[550,552,554,556,479,558,560,562,564,566,568,570],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/loeilduse.fr\/index.php?rest_route=\/wp\/v2\/posts\/1111"}],"collection":[{"href":"https:\/\/loeilduse.fr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/loeilduse.fr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/loeilduse.fr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/loeilduse.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1111"}],"version-history":[{"count":7,"href":"https:\/\/loeilduse.fr\/index.php?rest_route=\/wp\/v2\/posts\/1111\/revisions"}],"predecessor-version":[{"id":1138,"href":"https:\/\/loeilduse.fr\/index.php?rest_route=\/wp\/v2\/posts\/1111\/revisions\/1138"}],"wp:attachment":[{"href":"https:\/\/loeilduse.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1111"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/loeilduse.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1111"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/loeilduse.fr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1111"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}