<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Juan Enciso Condeña</title>
    <description>The latest articles on DEV Community by Juan Enciso Condeña (@jenciso).</description>
    <link>https://dev.to/jenciso</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F16501%2Ff0d942b1-1493-4de7-a765-0634c596f0f0.jpg</url>
      <title>DEV Community: Juan Enciso Condeña</title>
      <link>https://dev.to/jenciso</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jenciso"/>
    <language>en</language>
    <item>
      <title>Creates a StackRox Lab on Kind</title>
      <dc:creator>Juan Enciso Condeña</dc:creator>
      <pubDate>Wed, 11 May 2022 18:27:56 +0000</pubDate>
      <link>https://dev.to/jenciso/creates-a-stackrox-lab-on-kind-5ha8</link>
      <guid>https://dev.to/jenciso/creates-a-stackrox-lab-on-kind-5ha8</guid>
      <description>&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;

&lt;p&gt;This document is based on the &lt;a href="https://github.com/stackrox/helm-charts/tree/main/3.69.1/central-services"&gt;Oficial Documentation&lt;/a&gt;. The idea is to create a local environment with multiple Kubernetes clusters provisioned via kind for laboratory purposes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---Uq6O2u7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1652233849828/91HCSc3kT.png%3Fauto%3Dcompress%2Cformat%26format%3Dwebp" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---Uq6O2u7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1652233849828/91HCSc3kT.png%3Fauto%3Dcompress%2Cformat%26format%3Dwebp" alt="" width="526" height="327"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Stackrox Platform is composed of two components:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Central Services (central)&lt;/li&gt;
&lt;li&gt;Secured Cluster Services (clients)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I will explain how to provision each one using Kind&lt;/p&gt;

&lt;h2&gt;
  
  
  Central services (Central)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;A kind cluster deployed the install the Stackrox central.&lt;/li&gt;
&lt;li&gt;To have a free node port in your cluster. E.g., 32444.&lt;/li&gt;
&lt;li&gt;A Red Hat Account is needed to download the container images.&lt;/li&gt;
&lt;li&gt;A domain name. E.g. stackrox.iplanet.site&lt;/li&gt;
&lt;li&gt;A SSL Certificate files for the domain stackrox.iplanet.site (cert.crt and cert.key).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Steps
&lt;/h3&gt;

&lt;p&gt;Create a &lt;code&gt;.env&lt;/code&gt; file with the username and password of your Red Hat account.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cat&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;EOF&lt;/span&gt;&lt;span class="sh"&gt; &amp;gt;&amp;gt; ./env
RH_USERNAME=email@domain.com
RH_PASSWORD=supersecret
&lt;/span&gt;&lt;span class="no"&gt;EOF
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install via helm&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;cat&lt;/span&gt; .env | xargs&lt;span class="si"&gt;)&lt;/span&gt;
helm repo add stackrox https://charts.stackrox.io
helm repo update
helm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; stackrox stackrox-central-services &lt;span class="se"&gt;\&lt;/span&gt;
  rhacs/central-services &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--create-namespace&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--set-file&lt;/span&gt; central.defaultTLS.cert&lt;span class="o"&gt;=&lt;/span&gt;./cert.crt &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--set-file&lt;/span&gt; central.defaultTLS.key&lt;span class="o"&gt;=&lt;/span&gt;./cert.key &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--set&lt;/span&gt; imagePullSecrets.username&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$RH_USERNAME&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--set&lt;/span&gt; imagePullSecrets.password&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$RH_PASSWORD&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--set&lt;/span&gt; central.exposure.nodePort.enabled&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;true&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--set&lt;/span&gt; central.exposure.nodePort.port&lt;span class="o"&gt;=&lt;/span&gt;32444
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;[Optional] &lt;/p&gt;

&lt;p&gt;If you want to save this deployment configuration, save the generated-values.yaml file using this command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl &lt;span class="nt"&gt;-n&lt;/span&gt; stackrox get secret &lt;span class="se"&gt;\&lt;/span&gt;
  stackrox-generated-vmxhju &lt;span class="nt"&gt;-o&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  go-template&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'{{ index .data "generated-values.yaml" }}'&lt;/span&gt; | &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nb"&gt;base64&lt;/span&gt; &lt;span class="nt"&gt;--decode&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; generated-values.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Secured cluster services (Clusters Clients)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Create another cluster with Kind.&lt;/li&gt;
&lt;li&gt;Create a token with “admin role” from the central services.&lt;/li&gt;
&lt;li&gt;Download the same version of roxctl CLI from Central.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Steps
&lt;/h3&gt;

&lt;p&gt;To create a token, go to this URL:&lt;/p&gt;

&lt;p&gt;https://$your_central_host:32444/main/integrations/authProviders/apitoken/create&lt;/p&gt;

&lt;p&gt;Generate a token: (Save it as &lt;code&gt;register.token&lt;/code&gt;)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VPU985nU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1652234246916/qzRS-O8Ez.png%3Fauto%3Dcompress%2Cformat%26format%3Dwebp" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VPU985nU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1652234246916/qzRS-O8Ez.png%3Fauto%3Dcompress%2Cformat%26format%3Dwebp" alt="" width="880" height="666"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Download the CLI from the central UI&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Q7T2b_az--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1652234255928/3j_Ic6BJP.png%3Fauto%3Dcompress%2Cformat%26format%3Dwebp" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Q7T2b_az--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1652234255928/3j_Ic6BJP.png%3Fauto%3Dcompress%2Cformat%26format%3Dwebp" alt="" width="880" height="575"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Generate config file to deploy in the Kubernetes clients&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;ROX_API_TOKEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;cat&lt;/span&gt; ./register.token&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;ROX_CENTRAL_ADDRESS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;stackrox.iplanet.site:32444
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;CLUSTER_NAME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;local-standard
roxctl &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;$ROX_CENTRAL_ADDRESS&lt;/span&gt; central &lt;span class="se"&gt;\&lt;/span&gt;
  init-bundles generate cluster-init-&lt;span class="nv"&gt;$CLUSTER_NAME&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--output&lt;/span&gt; cluster-init-bundle-&lt;span class="nv"&gt;$CLUSTER_NAME&lt;/span&gt;.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install via helm&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;helm repo add stackrox https://charts.stackrox.io
helm repo update
helm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; stackrox &lt;span class="se"&gt;\&lt;/span&gt;
  stackrox-secured-cluster-services &lt;span class="se"&gt;\&lt;/span&gt;
  rhacs/secured-cluster-services &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--create-namespace&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--set&lt;/span&gt; &lt;span class="nv"&gt;clusterName&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$CLUSTER_NAME&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--set&lt;/span&gt; imagePullSecrets.username&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$RH_USERNAME&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--set&lt;/span&gt; imagePullSecrets.password&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$RH_PASSWORD&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--set&lt;/span&gt; &lt;span class="nv"&gt;centralEndpoint&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$ROX_CENTRAL_ADDRESS&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--set&lt;/span&gt; clusterLabels.env&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;local&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--set&lt;/span&gt; collector.collectionMethod&lt;span class="o"&gt;=&lt;/span&gt;NO_COLLECTION &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-f&lt;/span&gt; cluster-init-bundle-&lt;span class="nv"&gt;$CLUSTER_NAME&lt;/span&gt;.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Because we are using kind cluster, the &lt;code&gt;collectionMethod&lt;/code&gt; is set to &lt;code&gt;NO_COLLECTION&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;[Optional]&lt;/p&gt;

&lt;p&gt;If you provisioned your kind cluster with the experimental option &lt;code&gt;KIND_EXPERIMENTAL_DOCKER_NETWORK&lt;/code&gt;, you need to allow network communication with the central kind network.&lt;/p&gt;

&lt;p&gt;E.g., if your docker network for your central cluster is: &lt;code&gt;172.28.1.0/24&lt;/code&gt;, execute this command to permit all communication among kind clusters installed.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;iptables &lt;span class="nt"&gt;-I&lt;/span&gt; FORWARD &lt;span class="nt"&gt;-s&lt;/span&gt; 172.28.1.0/24 &lt;span class="nt"&gt;-d&lt;/span&gt; 0/0 &lt;span class="nt"&gt;-j&lt;/span&gt; ACCEPT
&lt;span class="nb"&gt;sudo &lt;/span&gt;iptables &lt;span class="nt"&gt;-I&lt;/span&gt; FORWARD &lt;span class="nt"&gt;-s&lt;/span&gt; 0/0 &lt;span class="nt"&gt;-d&lt;/span&gt; 172.28.1.0/24 &lt;span class="nt"&gt;-j&lt;/span&gt; ACCEPT
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Check your setup
&lt;/h2&gt;

&lt;p&gt;Finally, if you provisioned two clusters in the central, you should see them in the “Platform configuration &amp;gt; Clusters” menu.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eaHO6v-1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1652234332131/U6Klxls_8.png%3Fauto%3Dcompress%2Cformat%26format%3Dwebp" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eaHO6v-1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1652234332131/U6Klxls_8.png%3Fauto%3Dcompress%2Cformat%26format%3Dwebp" alt="" width="880" height="537"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/stackrox/helm-charts/tree/main/3.69.1/central-services"&gt;https://github.com/stackrox/helm-charts/tree/main/3.69.1/central-services&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/stackrox/helm-charts/tree/main/3.69.1/secured-cluster-services"&gt;https://github.com/stackrox/helm-charts/tree/main/3.69.1/secured-cluster-services&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
  </channel>
</rss>
