<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6527688743456205256</id><updated>2026-10-10T18:22:49.232+11:00</updated><category term="Pivotal Cloud Foundry"/><category term="JDeveloper"/><category term="IBM Bluemix"/><category term="JDBC"/><category term="Oracle JDBC"/><category term="OC4J"/><category term="VFabric"/><category term="Spring Boot"/><category term="SQLFire"/><category term="Coherence"/><category term="Weblogic"/><category term="Pivotal"/><category term="Cloud Foundry"/><category term="KUbernetes"/><category term="PCF"/><category term="ADF"/><category term="UCP"/><category term="JRuby"/><category term="GemFire"/><category term="OAS"/><category term="Data Source"/><category term="PKS"/><category term="Pivotal Container Service"/><category term="Spring"/><category term="Oracle"/><category term="PLSQL"/><category term="Cloud Native Buildpacks"/><category term="Web Services"/><category term="Google Cloud Platform"/><category term="JMX"/><category term="PaaS"/><category term="Pivotal GemFireXD"/><category term="kubectl"/><category term="Bosh"/><category term="Docker"/><category term="FCF"/><category term="GemFireXD"/><category term="JAX-RS"/><category term="JSF 2.0"/><category term="RAC"/><category term="SSL"/><category term="ADF BC"/><category term="CF CLI"/><category term="Database Change Notification"/><category term="EJB3"/><category term="FMW 11g"/><category term="Greenplum"/><category term="MBean"/><category term="MBeanServer"/><category term="Pivotal GemFire"/><category term="Pivotal SQLFire"/><category term="SCAN"/><category term="Spinnaker"/><category term="TAS4K8s"/><category term="k8s"/><category term="ASP .NET Core"/><category term="Bluemix"/><category term="CloudFoundry"/><category term="External Table"/><category term="Feign"/><category term="GCP"/><category term="HAWQ"/><category term="JSP"/><category term="OFM"/><category term="Pivotal Cloud Cache"/><category term="Pivotal Function Service"/><category term="Pivotal MySQL for PCF"/><category term="Pivotal MySQL*Web"/><category term="Service Broker"/><category term="Spring Cloud"/><category term="Tanzu Application Service for Kubernetes"/><category term="Tomcat"/><category term="VMware"/><category term="Web Service"/><category term="hyperic HQ"/><category term="spring data"/><category term="ANT"/><category term="API NAB Developer"/><category term="BLOB"/><category term="Buildpacks"/><category term="CF REST API"/><category term="Cloud Foundry Task"/><category term="Concourse"/><category term="Debug"/><category term="Distributed Database"/><category term="ECK"/><category term="Elasticsearch"/><category term="IBM Watson"/><category term="JSTL1.2"/><category term="JavaSP"/><category term="Kafka"/><category term="Knative"/><category term="Meteor"/><category term="NAB"/><category term="NSX-T"/><category term="OCI"/><category term="Oracle Enterprise manager"/><category term="PFS"/><category term="Pivotal Greenplum"/><category term="RESTful"/><category term="SQL*Plus"/><category term="Secure Gateway"/><category term="Security"/><category term="Snyk&#xa;Harness&#xa;DevSecOps"/><category term="Spring Boot Actuator"/><category term="Spring Cloud GCP"/><category term="Spring Cloud Task"/><category term="SpringXD"/><category term="Struts 2"/><category term="TKG"/><category term="TKGI"/><category term="TMC"/><category term="Tanzu"/><category term="Tanzu Mission Control"/><category term="Telstra SMS API"/><category term="Telstra WIFI Api"/><category term="VCAP_SERVICES"/><category term="VMware Tanzu"/><category term="VMware Tanzu Kubernetes Grid Integrated Edition"/><category term="bosh-bootloader"/><category term="cf-for-k8s"/><category term="gpload"/><category term="jython"/><category term="kpack"/><category term="python"/><category term="snyk&#xa;snyk container&#xa;DevSecOps"/><category term="vFabric Application Director"/><category term="vSphere 7"/><category term=".NET"/><category term="1.9"/><category term="ADF faces"/><category term="AFL"/><category term="API"/><category term="ASC"/><category term="ASP.NET 5"/><category term="AWS"/><category term="AWS service broker"/><category term="Active GridLinbk"/><category term="Active GridLink"/><category term="Administration Console"/><category term="Apache Velocity"/><category term="Apigee Edge Service Broker for PCF"/><category term="Applications Manager"/><category term="Argo CD&#xa;Kubernetes&#xa;Snyk&#xa;AppSec"/><category term="Authentication"/><category term="Auto Scaling"/><category term="Autoscale"/><category term="Azure service broker"/><category term="Billing"/><category term="Bluemix Billing"/><category term="Bluemix CLI"/><category term="Bluemix Local"/><category term="Bluemix Usage"/><category term="Buildkite&#xa;Snyk"/><category term="CF CLI MySQL Plugin"/><category term="CF Quotas"/><category term="CKAD"/><category term="CNB"/><category term="CNCF"/><category term="COLLECT"/><category term="CORS"/><category term="CacheStore"/><category term="Cloud Foundry REST API"/><category term="Cloud Integration"/><category term="CloudFoundry provider"/><category term="Cluster"/><category term="Community Plugin"/><category term="Concourse UI"/><category term="Connection"/><category term="Connection Pool"/><category term="Connection Pooling"/><category term="Couchbase"/><category term="Cross-origin resource sharing"/><category term="DCN"/><category term="DEPLOY"/><category term="DESCRIBE"/><category term="Derby"/><category term="Diego"/><category term="Driver Version"/><category term="Elastic Cloud on Kubernetes"/><category term="Errands"/><category term="Exalogic"/><category term="FMW Control"/><category term="FSI"/><category term="Facelets"/><category term="GCP service broker"/><category term="GFMon"/><category term="GemF"/><category term="GitHub"/><category term="GitHub Actions"/><category term="GitLab"/><category term="Google Application Engine"/><category term="Google Chrome"/><category term="Google Cloud SQL"/><category term="Groovy"/><category term="H2"/><category term="HA"/><category term="HTTP"/><category term="HTTP Routing"/><category term="Hadoop"/><category term="Hipster"/><category term="HttpSessionListener"/><category term="IBM"/><category term="IBM Bluemix Garage"/><category term="IBM Conatiners"/><category term="IBM Containers"/><category term="IN bind variable"/><category term="IntelliJ"/><category term="IntelliJ IDEA"/><category term="JAR"/><category term="JAX-WS"/><category term="JCsonole"/><category term="JFrog artifactory"/><category term="JMS"/><category term="JNDI"/><category term="JPQL"/><category term="Java"/><category term="Java IDE"/><category term="JavaSSO"/><category term="K8&#39;s"/><category term="K8s&#xa;Elastic Cloud&#xa;Elastic APM"/><category term="Kotlin"/><category term="Kubernetes&#xa;containers"/><category term="LIST"/><category term="LOB"/><category term="LONG"/><category term="Lens"/><category term="Liberty"/><category term="Liberty Buildpack"/><category term="Log4j"/><category term="MFA"/><category term="MVC"/><category term="Memory Profile"/><category term="MySQL Web Interface for PCF"/><category term="MySQL. Stateful applications"/><category term="NCLOB"/><category term="NodeRed"/><category term="OEM"/><category term="ORA-01461"/><category term="ORA-1403"/><category term="ORA-29532"/><category term="Octant"/><category term="OpenWhisk"/><category term="Oracle 12c"/><category term="Oracle JVM"/><category term="PCF 2.0"/><category term="PCF Healthwatch"/><category term="PCF Metering"/><category term="PCF Usage"/><category term="PCFDev"/><category term="PCFm PCF Healthwatch"/><category term="PHD service"/><category term="PKS CLI"/><category term="POF"/><category term="PPR"/><category term="Paketo Buildpacks"/><category term="Pivotal Build Service"/><category term="Pivotal HD service"/><category term="Pivotal Isolation Segments"/><category term="Pivotal Ops Manager"/><category term="Pivotal Telemetry Collector"/><category term="PivotalHD"/><category term="Play Framework"/><category term="Proxy"/><category term="Query Tuning"/><category term="RA"/><category term="REST"/><category term="RabbitMQ"/><category term="Refcursor"/><category term="Rest Repositories"/><category term="RestTemplate"/><category term="SOAPElement"/><category term="SQLException"/><category term="SQLPlus"/><category term="SQLShell"/><category term="SQL_TRACE"/><category term="Serverless"/><category term="Service Registry"/><category term="ServletContextAware"/><category term="Session Trace"/><category term="Small footprint pivotal cloud foundry"/><category term="Snyk&#xa;Snyk Container&#xa;Security"/><category term="Snyk App&#xa;Elastic&#xa;Elastic Snyk Module&#xa;App Security"/><category term="Spring Boot 2.0 Actuator"/><category term="Spring Cloud Services"/><category term="Spring Data Elasticsearch"/><category term="Spring Initializr"/><category term="Spring JDBC"/><category term="Spring MVC"/><category term="Spring Security"/><category term="Spring Session"/><category term="Spring cloud GemFire Connector"/><category term="SpringBoot"/><category term="Spting Boot"/><category term="Strimzi"/><category term="Swagger"/><category term="Swagger UI"/><category term="T4CSTATEMENT"/><category term="TABLE"/><category term="TCPS"/><category term="Tanzu Application Service"/><category term="Tanzu Kubernetes Grid"/><category term="Target Instance"/><category term="Telstra API"/><category term="Telstra SMS"/><category term="Terminate Application Instance"/><category term="Thymeleaf"/><category term="Tomcat Buildpack"/><category term="Twitter Bootstrap"/><category term="Twitter Typeahead"/><category term="Typesafe activator"/><category term="UAAC"/><category term="UTL_DBWS"/><category term="VCAP_APPLICATION"/><category term="VMware Harbor Registry"/><category term="VMware Tanzu Octant"/><category term="VMworld"/><category term="Visual Studio Code"/><category term="WLS"/><category term="Workload Management"/><category term="Write-Behind"/><category term="admin_client.jar"/><category term="asp net core"/><category term="bbl"/><category term="bosh2 CLI"/><category term="certification"/><category term="cfdev"/><category term="cfdot"/><category term="cloud foundry droplet"/><category term="health-check-type"/><category term="httpie"/><category term="k3d&#xa;kubernetes&#xa;Elastic Cloud&#xa;Elastic Stack"/><category term="krew"/><category term="kubectl context"/><category term="kubectx"/><category term="kubie"/><category term="manifest"/><category term="manifest.yml"/><category term="namespaces"/><category term="pcp pipelines"/><category term="riff"/><category term="snyk&#xa;Atlassian&#xa;application security"/><category term="snyk&#xa;import project API"/><category term="snyk&#xa;snyk code"/><category term="snyk&#xa;snyk container&#xa;pulumi"/><category term="spring.io Spring"/><category term="vFabric Application Performance Manager"/><category term="vFabric Data Director"/><category term="vSphere"/><category term="vSphere 7 with Kubernetes"/><title type='text'>The Blas from Pas</title><subtitle type='html'>Information on Snyk : Develop Fast. Stay Secure.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://theblasfrompas.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://theblasfrompas.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Pas Apicella</name><uri>http://www.blogger.com/profile/09389663166398991762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://wiki.r31skylineclub.com/images/thumb/d/d4/Gts2-side.jpg/100px-Gts2-side.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>466</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6527688743456205256.post-6755125304144650564</id><published>2022-10-18T16:01:00.001+11:00</published><updated>2022-10-18T16:01:20.027+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Argo CD&#xa;Kubernetes&#xa;Snyk&#xa;AppSec"/><title type='text'>Secure your application from Argo CD to Kubernetes</title><content type='html'>&lt;p&gt;GitOps is a popular framework for managing and securing the application development pipeline. For many who have embarked on a GitOps journey, a common question is: “how can I secure my pipeline when everything is automated?”&amp;nbsp;&lt;/p&gt;&lt;p&gt;The GitOps framework is a concept where any code commits or changes are done through Git, which then triggers an automated pipeline that builds and deploys applications on Kubernetes. Because there are few touch points for development and security teams in the pipeline, its security needs to be mandated to ensure the deployed applications have as few vulnerabilities as possible.&amp;nbsp;&lt;/p&gt;&lt;p&gt;This blog covers how Snyk can provide application security in GitOps, focusing on a popular tool, Argo CD. In this scenario, Snyk runs an IaC scan to ensure the to-be-deployed application is safe before deployment, and stops the build if it is not. Snyk also can monitor the deployed applications across different namespaces in Kubernetes in an automated fashion.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://snyk.io/blog/secure-apps-from-argocd-to-kubernetes/&quot;&gt;https://snyk.io/blog/secure-apps-from-argocd-to-kubernetes/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;http://feeds.feedburner.com/TheBlasFromPas&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblasfrompas.blogspot.com/feeds/6755125304144650564/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6527688743456205256/6755125304144650564' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/6755125304144650564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/6755125304144650564'/><link rel='alternate' type='text/html' href='http://theblasfrompas.blogspot.com/2022/10/secure-your-application-from-argo-cd-to.html' title='Secure your application from Argo CD to Kubernetes'/><author><name>Pas Apicella</name><uri>http://www.blogger.com/profile/09389663166398991762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://wiki.r31skylineclub.com/images/thumb/d/d4/Gts2-side.jpg/100px-Gts2-side.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6527688743456205256.post-8925551321869650455</id><published>2022-06-02T21:30:00.001+10:00</published><updated>2022-06-02T21:30:10.808+10:00</updated><title type='text'>Note for self: Snyk scan from ArgoCD </title><content type='html'>&lt;p&gt;&lt;b&gt;&amp;nbsp;Demo&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/papicella/springbootemployee-api/tree/master/argocd&quot;&gt;https://github.com/papicella/springbootemployee-api/tree/master/argocd&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Demo Job on K8s to perform Snyk IaC Scan&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;pre class=&quot;brush: yml&quot;&gt;  
apiVersion: batch/v1
kind: Job
metadata:
  name: snyk-iac-scan
  annotations:
    argocd.argoproj.io/hook: PreSync
spec:
  ttlSecondsAfterFinished: 600
  template:
    spec:
      containers:
        - name: snyk-cli
          image: snyk/snyk-cli:npm
          command: [&quot;/bin/sh&quot;,&quot;-c&quot;]
          args:
            - git clone https://github.com/papicella/springbootemployee-api.git;
              snyk auth $SNYK_TOKEN;
              snyk iac test springbootemployee-api/argocd/employee-K8s.yaml || true;
          env:
            - name: SNYK_TOKEN
              valueFrom:
                secretKeyRef:
                  name: snyk-token
                  key: token
      restartPolicy: Never
  backoffLimit: 0
&lt;/pre&gt; &lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCG-Eazg249jOqQe1_9MP9YhAlssklcnZiqJuB6HDYcXOLItgxxlZEvilUj3qvogqBy40oFhJfgKtRTeD_IePM0cRLWhYso56N8BulrO_P4t-VhWo2lFNCoNc9clCawL0jAZ-COvzAp8t4KPplSGARADvvytA6NGJdCJdRL2_R9KC7_OvMmABpafbsBw/s3836/Screen%20Shot%202022-06-02%20at%208.18.38%20pm.png&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2122&quot; data-original-width=&quot;3836&quot; height=&quot;177&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCG-Eazg249jOqQe1_9MP9YhAlssklcnZiqJuB6HDYcXOLItgxxlZEvilUj3qvogqBy40oFhJfgKtRTeD_IePM0cRLWhYso56N8BulrO_P4t-VhWo2lFNCoNc9clCawL0jAZ-COvzAp8t4KPplSGARADvvytA6NGJdCJdRL2_R9KC7_OvMmABpafbsBw/s320/Screen%20Shot%202022-06-02%20at%208.18.38%20pm.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;table class=&quot;highlight tab-size js-file-line-container js-code-nav-container js-tagsearch-file&quot; data-paste-markdown-skip=&quot;&quot; data-tab-size=&quot;8&quot; data-tagsearch-lang=&quot;YAML&quot; data-tagsearch-path=&quot;goof/snyk-scan.yaml&quot;&gt;&lt;tbody&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;http://feeds.feedburner.com/TheBlasFromPas&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblasfrompas.blogspot.com/feeds/8925551321869650455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6527688743456205256/8925551321869650455' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/8925551321869650455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/8925551321869650455'/><link rel='alternate' type='text/html' href='http://theblasfrompas.blogspot.com/2022/06/note-for-self-snyk-scan-from-argocd.html' title='Note for self: Snyk scan from ArgoCD '/><author><name>Pas Apicella</name><uri>http://www.blogger.com/profile/09389663166398991762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://wiki.r31skylineclub.com/images/thumb/d/d4/Gts2-side.jpg/100px-Gts2-side.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCG-Eazg249jOqQe1_9MP9YhAlssklcnZiqJuB6HDYcXOLItgxxlZEvilUj3qvogqBy40oFhJfgKtRTeD_IePM0cRLWhYso56N8BulrO_P4t-VhWo2lFNCoNc9clCawL0jAZ-COvzAp8t4KPplSGARADvvytA6NGJdCJdRL2_R9KC7_OvMmABpafbsBw/s72-c/Screen%20Shot%202022-06-02%20at%208.18.38%20pm.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6527688743456205256.post-4417934380898571501</id><published>2022-05-30T19:42:00.002+10:00</published><updated>2022-05-30T19:42:11.517+10:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="snyk&#xa;snyk container&#xa;pulumi"/><title type='text'>Using Pulumi to automate the Snyk Kubernetes integration for containers</title><content type='html'>&lt;p&gt;Better late than never finally got around to posting this today.&lt;/p&gt;&lt;p&gt;In this blog post, we will walk through the process of using &lt;a href=&quot;https://www.pulumi.com/&quot; rel=&quot;noopener&quot;&gt;Pulumi&lt;/a&gt;,
 a new open source tool that allows developers to build code in multiple
 languages like JavaScript, Typescript, Python, and Go to create all 
that is required to configure the &lt;a href=&quot;https://docs.snyk.io/products/snyk-container/image-scanning-library/kubernetes-workload-and-image-scanning/kubernetes-integration-overview&quot;&gt;Kubernetes integration in Snyk Container&lt;/a&gt;.&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Using Pulumi to automate the Snyk Kubernetes integration for containers&lt;br /&gt;&lt;a href=&quot;https://snyk.io/blog/automate-snyk-kubernetes-pulumi/&quot;&gt;https://snyk.io/blog/automate-snyk-kubernetes-pulumi/&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;http://feeds.feedburner.com/TheBlasFromPas&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblasfrompas.blogspot.com/feeds/4417934380898571501/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6527688743456205256/4417934380898571501' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/4417934380898571501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/4417934380898571501'/><link rel='alternate' type='text/html' href='http://theblasfrompas.blogspot.com/2022/05/using-pulumi-to-automate-snyk.html' title='Using Pulumi to automate the Snyk Kubernetes integration for containers'/><author><name>Pas Apicella</name><uri>http://www.blogger.com/profile/09389663166398991762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://wiki.r31skylineclub.com/images/thumb/d/d4/Gts2-side.jpg/100px-Gts2-side.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6527688743456205256.post-2929088890207653288</id><published>2021-12-23T16:41:00.000+11:00</published><updated>2021-12-23T16:41:02.205+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Snyk&#xa;Harness&#xa;DevSecOps"/><title type='text'>Find and fix vulnerabilities in your CI/CD pipeline with Snyk and Harness</title><content type='html'>&lt;p&gt;Integrating the Snyk developer-focused security platform into Harness’ 
unified delivery pipeline workflow ensures security and compliance 
testing is part of every release. This allows you to prevent 
applications with vulnerable dependencies and code from making their way
 into production. With modern tooling like Snyk and Harness, you can 
find, fix, and remediate through a &lt;a href=&quot;https://snyk.io/learn/what-is-ci-cd-pipeline-and-tools-explained/&quot;&gt;CI/CD pipeline&lt;/a&gt; and mitigate the risk to the business without affecting your ability to release software quickly.&lt;/p&gt;&lt;p&gt;Created a new Snyk Blog with the harness team as per the link below.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://snyk.io/blog/find-fix-vulnerabilities-ci-cd-pipeline-snyk-harness/&quot;&gt;https://snyk.io/blog/find-fix-vulnerabilities-ci-cd-pipeline-snyk-harness/&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;http://feeds.feedburner.com/TheBlasFromPas&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblasfrompas.blogspot.com/feeds/2929088890207653288/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6527688743456205256/2929088890207653288' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/2929088890207653288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/2929088890207653288'/><link rel='alternate' type='text/html' href='http://theblasfrompas.blogspot.com/2021/12/find-and-fix-vulnerabilities-in-your.html' title='Find and fix vulnerabilities in your CI/CD pipeline with Snyk and Harness'/><author><name>Pas Apicella</name><uri>http://www.blogger.com/profile/09389663166398991762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://wiki.r31skylineclub.com/images/thumb/d/d4/Gts2-side.jpg/100px-Gts2-side.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6527688743456205256.post-3343722103665018643</id><published>2021-11-01T10:13:00.000+11:00</published><updated>2021-11-01T10:13:27.451+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Snyk&#xa;Harness&#xa;DevSecOps"/><title type='text'>Using harness CI to run a series of Snyk Tests</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;span style=&quot;font-family: Arial; font-size: 11pt; white-space: pre-wrap;&quot;&gt;When DevOps emerged more than 10 years ago, the main focus was to bridge the gaps between Dev and Ops teams by introducing automation to the processes of building, testing and deployment of applications.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;As development teams continue to deliver more rapidly and more frequently, security teams are finding it difficult to keep up and often end up being the bottleneck in the delivery pipeline. For this reason, bringing security early into the DevOps process from the outset – in other words, embracing a DevSecOps culture within a business – has become increasingly important.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Applications have changed as cloud-native technologies like Containers, Kubernetes, and the use of Infrastructure as Code technologies like Terraform, Cloudformation, ARM templates are now the norm. These elements are now built and customized by developers and live in their Source Code Management repositories.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;In this demo below I show you how Harness CI along with Snyk can help setup a DevSecOps Pipeline well before we even think about deployment.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;h2 style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Steps&lt;/span&gt;&lt;/h2&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;color: #ffa400; font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;i&gt;Note: We are using the public GitHub repo below&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;a href=&quot;https://github.com/papicella/springbootemployee-api&quot;&gt;https://github.com/papicella/springbootemployee-api&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;1. First we need to identify our user token within Snyk. For enterprise customers you can setup service accounts and retrieve a token which we will require later. For non enterprise Snyk accounts you can just use the main User Token. Both methods of how to obtain this are defined below.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;Service Accounts&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;a href=&quot;https://docs.snyk.io/features/integrations/managing-integrations/service-accounts&quot;&gt;https://docs.snyk.io/features/integrations/managing-integrations/service-accounts&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;For those without access to service accounts you can obtain your Snyk user Token as follows&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;a href=&quot;https://docs.snyk.io/features/snyk-cli/install-the-snyk-cli/authenticate-the-cli-with-your-account&quot;&gt;https://docs.snyk.io/features/snyk-cli/install-the-snyk-cli/authenticate-the-cli-with-your-account&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;2. In harness let&#39;s define a few secrets one being our Snyk Token we retrieved in step 1, also my GitHub token &lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJpZMH8JcWp2VPCIZQncI0oAboKsAD9L4iSaTynSIMgRA_v9NEeSrOFqG43DahpOlZPPeGL-9-Cc2kdsHNtcXkaagy6JoGMSDQUEhM8id18uCy9287FbkkoptBT4ZHmUHOJEKlahaLn9Dj/&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;1020&quot; data-original-width=&quot;3084&quot; height=&quot;106&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJpZMH8JcWp2VPCIZQncI0oAboKsAD9L4iSaTynSIMgRA_v9NEeSrOFqG43DahpOlZPPeGL-9-Cc2kdsHNtcXkaagy6JoGMSDQUEhM8id18uCy9287FbkkoptBT4ZHmUHOJEKlahaLn9Dj/&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;3. Our builds need to run somewhere in this example we are using a connector to our K8s cluster which is defined at the &quot;&lt;b&gt;Organization&lt;/b&gt;&quot; level within Harness&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSbp9KGCJCldjGHCXjzT3Uejk8OT9Q9baU79HEYQJfL-siGqlEiLWkfDNvazvT9Sv_Y75u7hUAJ0PIMvnr6LGHNMdu8rBC4-weLu0keOtQTAJ3nDM7UbDPPsBPgVly0W7q-jT8GBKKnUH3/&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;1343&quot; data-original-width=&quot;2048&quot; height=&quot;210&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSbp9KGCJCldjGHCXjzT3Uejk8OT9Q9baU79HEYQJfL-siGqlEiLWkfDNvazvT9Sv_Y75u7hUAJ0PIMvnr6LGHNMdu8rBC4-weLu0keOtQTAJ3nDM7UbDPPsBPgVly0W7q-jT8GBKKnUH3/&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhS7xUNEwQdx6KYWVdCJ0IDD6DE-xK3IlV42MyJTLiM4XjLp8R5RvuzDxnfpHxXCIrK2xGkHv42W3X2xebhNU8mxiLTRvtxHeMBXmNoTEUjveg8-mzdmzBXXXu7OoxDzfRJ3v-gHoEQ4kHs/&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;1090&quot; data-original-width=&quot;1300&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhS7xUNEwQdx6KYWVdCJ0IDD6DE-xK3IlV42MyJTLiM4XjLp8R5RvuzDxnfpHxXCIrK2xGkHv42W3X2xebhNU8mxiLTRvtxHeMBXmNoTEUjveg8-mzdmzBXXXu7OoxDzfRJ3v-gHoEQ4kHs/&quot; width=&quot;286&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;4. Our first execution step is simply going to package the application. Our Spring Boot application is using maven and has a single pom.xml file. Notice below that we have to use a Docker connector for a &quot;&lt;b&gt;Build-&amp;gt; Run&lt;/b&gt;&quot; step , here I am using  an account level Docker connector&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcU2lsj27vpD__jQYdEzwpgCqEvWakpQaqKFc9Sx7o_okzsEvltF29XbaOMzpdBosLu-q1Ijvmps_D1zSgCRzYanp6JuT6XczbWmCK2vgiLEuaKkRL7RNOZM1qeq1vRJf81p0Q9nBde39w/&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;1758&quot; data-original-width=&quot;1196&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcU2lsj27vpD__jQYdEzwpgCqEvWakpQaqKFc9Sx7o_okzsEvltF29XbaOMzpdBosLu-q1Ijvmps_D1zSgCRzYanp6JuT6XczbWmCK2vgiLEuaKkRL7RNOZM1qeq1vRJf81p0Q9nBde39w/&quot; width=&quot;163&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;5. Now we can run our first Snyk Test. In this simple example we don&#39;t fail the build at all and ensure we pass a SUCCESS exit code for our Snyk Open Source test which will pick up the one and only pom.xml file in the repo. I am also using Snyk Docker image that includes the Snyk CLI and Maven to perform this test.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYPaPoih8kla5DqifVd4ICEbeRCY0ugS1LLnVEGsn3W6uyhmuCEjjzyy9QfXHyb2lnegreHOvJvjecmnP8-XHhKO1e-X1wS-eZ5Lv771k3oDZ0L5PBdvVe4-cFbHaRKu116K77QKOI9TCv/&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;1744&quot; data-original-width=&quot;1240&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYPaPoih8kla5DqifVd4ICEbeRCY0ugS1LLnVEGsn3W6uyhmuCEjjzyy9QfXHyb2lnegreHOvJvjecmnP8-XHhKO1e-X1wS-eZ5Lv771k3oDZ0L5PBdvVe4-cFbHaRKu116K77QKOI9TCv/&quot; width=&quot;171&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;6. So jumping right ahead let&#39;s quickly take a look at our other 3 tests.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;b&gt;Snyk Code Test&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhq1Ryt2dg2K-EoaS_EKp1M_giwxvxGz3Veo1n2CQvYkXkzERnOipQD4XKBAazRWQ0J7U3bhK3WFmiPCT4vcTZjWMOrpMYU0NUIhQji4_z3CV2hheVQa15yCyygRb0Uni9dTXdbesXc_wne/&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;1802&quot; data-original-width=&quot;1258&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhq1Ryt2dg2K-EoaS_EKp1M_giwxvxGz3Veo1n2CQvYkXkzERnOipQD4XKBAazRWQ0J7U3bhK3WFmiPCT4vcTZjWMOrpMYU0NUIhQji4_z3CV2hheVQa15yCyygRb0Uni9dTXdbesXc_wne/&quot; width=&quot;168&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;b&gt;Snyk IaC test&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;b&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtnxHQITMZKxhh_pPxcA7O1kCg3kwtPTDcFzpHEgg0e7y8hHX4ORG5zb-8blGpKBt8Lqj_lAgpuepO_Y7Ds42_hrNGSlmCBzkGQ5p9GDekvikzTXzLgZJYr9xwPbcU1CSfsSMvIIXo6lUy/&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;1788&quot; data-original-width=&quot;1268&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtnxHQITMZKxhh_pPxcA7O1kCg3kwtPTDcFzpHEgg0e7y8hHX4ORG5zb-8blGpKBt8Lqj_lAgpuepO_Y7Ds42_hrNGSlmCBzkGQ5p9GDekvikzTXzLgZJYr9xwPbcU1CSfsSMvIIXo6lUy/&quot; width=&quot;170&quot; /&gt;&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;&lt;p&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;b&gt;Snyk Container Test&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;b&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZDE9nAsmUTqceBFR8rhi7bGGne058W4UeJICeUyfermLrQQzXOCzZDM0xOx_QnqxuhM5WyIwiLaj1aKC2-oGtsUZpstcZ4_xZQSvU5NNCx-mkxSnKgKscrrlzzLdDz30MRBZuJhOTtEYv/&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;1750&quot; data-original-width=&quot;1262&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZDE9nAsmUTqceBFR8rhi7bGGne058W4UeJICeUyfermLrQQzXOCzZDM0xOx_QnqxuhM5WyIwiLaj1aKC2-oGtsUZpstcZ4_xZQSvU5NNCx-mkxSnKgKscrrlzzLdDz30MRBZuJhOTtEYv/&quot; width=&quot;173&quot; /&gt;&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;&lt;p&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;In all these Snyk Tests we ensure nothing fails instead we just report on &lt;/span&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;vulnerabilities. WE could also set our &lt;/span&gt;&lt;span style=&quot;font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;severity&lt;/span&gt;&lt;span style=&quot;font-size: 14.6667px; white-space: pre-wrap;&quot;&gt; threshold as part of our tests as shown below.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;--severity-threshold=medium&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;a href=&quot;https://docs.snyk.io/features/snyk-cli/test-for-vulnerabilities/set-severity-thresholds-for-cli-tests&quot;&gt;https://docs.snyk.io/features/snyk-cli/test-for-vulnerabilities/set-severity-thresholds-for-cli-tests&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;7. In order to run the container test we had to build our container image which was done using a &quot;&lt;b&gt;Build and push image to Dockerhub&lt;/b&gt;&quot; step as shown below&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxJcphPPEpCRYKJ4PiN-yrz-U7io789XAfsO1_pOODfBZKYaIsk6Liq07tblOVxu5ce9wW8VTUuHawPf5UDA7edYvbM_WtwjvIDn8kcyvpqDNYxgV4q50EFLRoji6Gkwg0A1ZDoGMpZlnE/&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;2048&quot; data-original-width=&quot;1130&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxJcphPPEpCRYKJ4PiN-yrz-U7io789XAfsO1_pOODfBZKYaIsk6Liq07tblOVxu5ce9wW8VTUuHawPf5UDA7edYvbM_WtwjvIDn8kcyvpqDNYxgV4q50EFLRoji6Gkwg0A1ZDoGMpZlnE/&quot; width=&quot;132&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;8. Now after running a few builds our Overview page on Harness UI nicely summarises what has passed versus what has failed for us.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTBmbT3mcoG718PKSQorpxrmc8hu-0jtGbb8rm60pMguKSoydPABreMed1-P_jJ_0qEBcQtxO7N6SrA1z55JWp2mwtGaFZeh6aOveT1CqFhpTojKNGHvJkA1VYEy5WrV5cHQd6wPSfiKVC/&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;1239&quot; data-original-width=&quot;2539&quot; height=&quot;156&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTBmbT3mcoG718PKSQorpxrmc8hu-0jtGbb8rm60pMguKSoydPABreMed1-P_jJ_0qEBcQtxO7N6SrA1z55JWp2mwtGaFZeh6aOveT1CqFhpTojKNGHvJkA1VYEy5WrV5cHQd6wPSfiKVC/&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt; &lt;p&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;9. Finally we can view each build as follows&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj35DCu02XBMpF8IF65ew09TWP0QG80w33zGLbvQqwxozGYoBcEFfyY9L88wyjXMDTVe5j8ERtSehCKax6KZKxUZdk9Du_FJyIvbteyee8QIjweiRN74dQI9MKAOLR3Je1D-FT4Qu07jqoh/&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;1299&quot; data-original-width=&quot;2048&quot; height=&quot;203&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj35DCu02XBMpF8IF65ew09TWP0QG80w33zGLbvQqwxozGYoBcEFfyY9L88wyjXMDTVe5j8ERtSehCKax6KZKxUZdk9Du_FJyIvbteyee8QIjweiRN74dQI9MKAOLR3Je1D-FT4Qu07jqoh/&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;h2 style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Sample Images&lt;/span&gt;&lt;/h2&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Overview Page&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdHaq94YJAgvbAYTeXkjDifXZ2eIdlNnmfkKANQJITM8zYbOWT0sN7-9_7A3R_Md8lFtHhbxvNRXSlKAFBWgY8Otb7fB_fsxrnmYAZ5hgSAWToyefK2tCCqa4l5Mu6eN3cRlRa_OmkE7h7/&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;1301&quot; data-original-width=&quot;2048&quot; height=&quot;203&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdHaq94YJAgvbAYTeXkjDifXZ2eIdlNnmfkKANQJITM8zYbOWT0sN7-9_7A3R_Md8lFtHhbxvNRXSlKAFBWgY8Otb7fB_fsxrnmYAZ5hgSAWToyefK2tCCqa4l5Mu6eN3cRlRa_OmkE7h7/&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Infrastructure Page - Here we define where are harness delegate running in a K8s cluster which is just one of the options here when it comes to a worker node for the pipeline steps we run&lt;p&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJ3uL-_i6_OdevcIV_eT_L6IlBp58RmmMQxml5gsD3naVQz3vdggwS7REnR1KhrNH6RZxg_sPIzjfQ3LVHcNVe2xKs9aDmxYWep8s9oImcVyicA6tX0q2BAJvCbWoATGN3xaGf58ZZLqLJ/&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;1201&quot; data-original-width=&quot;2619&quot; height=&quot;147&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJ3uL-_i6_OdevcIV_eT_L6IlBp58RmmMQxml5gsD3naVQz3vdggwS7REnR1KhrNH6RZxg_sPIzjfQ3LVHcNVe2xKs9aDmxYWep8s9oImcVyicA6tX0q2BAJvCbWoATGN3xaGf58ZZLqLJ/&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;Execution Page - here we define four seperate tests. &lt;p&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Snyk Open Source Test&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Snyk Code Test&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Snyk IaC Test&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Snyk Container Test&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNwaFcKKp3heUNX4z4obORnPT1XkIKh5wwKnIo-GEMadCmiChTQug5C9KUHFbbRiZ2NPIlbpTIrdbwCj2t-YNKKt5_4kJ3Efxr0rslwRKXHv5OnbkzdoWbV97HRhk45NuARzyC_3pqqg3a/&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;1172&quot; data-original-width=&quot;2683&quot; height=&quot;140&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNwaFcKKp3heUNX4z4obORnPT1XkIKh5wwKnIo-GEMadCmiChTQug5C9KUHFbbRiZ2NPIlbpTIrdbwCj2t-YNKKt5_4kJ3Efxr0rslwRKXHv5OnbkzdoWbV97HRhk45NuARzyC_3pqqg3a/&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Pipeline Result Page&lt;p&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEik9PC4XkC55Ij2pfHh5pwwICNHk4uc2b0Rq3dkkioF6n8cHXWc9WZnWhO1smcSLNUd7Es_AWPJMFL-ONpWzJ90eb4pYioEvgZ6dANZA9abKk-Dwv9fRj-K8WCXw4QE7_vfIhCwHyw2Wsg2/&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;1226&quot; data-original-width=&quot;2565&quot; height=&quot;153&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEik9PC4XkC55Ij2pfHh5pwwICNHk4uc2b0Rq3dkkioF6n8cHXWc9WZnWhO1smcSLNUd7Es_AWPJMFL-ONpWzJ90eb4pYioEvgZ6dANZA9abKk-Dwv9fRj-K8WCXw4QE7_vfIhCwHyw2Wsg2/&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;For those that wish to see the whole pipeline YAML here it is below:&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;pipeline:
    name: employee-api-pipeline
    identifier: employeeapipipeline
    projectIdentifier: Springboot_Employee_API
    orgIdentifier: default
    tags: {}
    properties:
        ci:
            codebase:
                connectorRef: pasgithub
                repoName: springbootemployee-api
                build: &amp;lt;+input&amp;gt;
    stages:
        - stage:
              name: build employee api
              identifier: build_employee_api
              description: &quot;&quot;
              type: CI
              spec:
                  cloneCodebase: true
                  infrastructure:
                      type: KubernetesDirect
                      spec:
                          connectorRef: org.GKE
                          namespace: harness-builds
                  execution:
                      steps:
                          - step:
                                type: Run
                                name: Package Application
                                identifier: Package_Application
                                spec:
                                    connectorRef: account.harnessImage
                                    image: maven:3.8.3-openjdk-11-slim
                                    command: mvn -DskipTests -Dsnyk.skip package
                                    privileged: false
                          - step:
                                type: Run
                                name: snyk test
                                identifier: snyk_test
                                spec:
                                    connectorRef: account.harnessImage
                                    image: snyk/snyk-cli:1.745.0-maven-3.5.4
                                    command: |-
                                        SNYK_TOKEN=&amp;lt;+secrets.getValue(&quot;SNYK_TOKEN&quot;)&amp;gt;
                                        snyk config set api=$SNYK_TOKEN
                                        snyk test || true
                                    privileged: false
                                failureStrategies: []
                          - step:
                                type: Run
                                name: snyk code test
                                identifier: snyk_code_test
                                spec:
                                    connectorRef: account.harnessImage
                                    image: snyk/snyk-cli:1.745.0-maven-3.5.4
                                    command: |-
                                        SNYK_TOKEN=&amp;lt;+secrets.getValue(&quot;SNYK_TOKEN&quot;)&amp;gt;
                                        snyk config set api=$SNYK_TOKEN
                                        snyk code test || true
                                    privileged: false
                                when:
                                    stageStatus: Success
                                failureStrategies: []
                          - step:
                                type: Run
                                name: snyk IaC test
                                identifier: snyk_IaC_test
                                spec:
                                    connectorRef: account.harnessImage
                                    image: snyk/snyk-cli:1.745.0-maven-3.5.4
                                    command: |-
                                        SNYK_TOKEN=&amp;lt;+secrets.getValue(&quot;SNYK_TOKEN&quot;)&amp;gt;
                                        snyk config set api=$SNYK_TOKEN
                                        snyk iac test ./employee-K8s.yaml || true
                                    privileged: false
                                when:
                                    stageStatus: Success
                                failureStrategies: []
                          - step:
                                type: BuildAndPushDockerRegistry
                                name: Build Container
                                identifier: Build_Container
                                spec:
                                    connectorRef: pasdockerhub
                                    repo: pasapples/springbootemployee
                                    tags:
                                        - harness
                                    dockerfile: Dockerfile.harness
                                    optimize: true
                          - step:
                                type: Run
                                name: snyk container test
                                identifier: snyk_container_test
                                spec:
                                    connectorRef: pasdockerhub
                                    image: snyk/snyk-cli:1.745.0-maven-3.5.4
                                    command: |-
                                        SNYK_TOKEN=&amp;lt;+secrets.getValue(&quot;SNYK_TOKEN&quot;)&amp;gt;
                                        snyk config set api=$SNYK_TOKEN
                                        snyk container test pasapples/springbootemployee:harness || true
                                    privileged: false
                                    resources:
                                        limits:
                                            memory: 2048Mi
              variables: []&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;h2 style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;More Information&lt;/span&gt;&lt;/h2&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Snyk&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;a href=&quot;https://snyk.io&quot;&gt;https://snyk.io&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Harness&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;a href=&quot;https://harness.io/&quot;&gt;https://harness.io/&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;http://feeds.feedburner.com/TheBlasFromPas&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblasfrompas.blogspot.com/feeds/3343722103665018643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6527688743456205256/3343722103665018643' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/3343722103665018643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/3343722103665018643'/><link rel='alternate' type='text/html' href='http://theblasfrompas.blogspot.com/2021/11/using-harness-ci-to-run-series-of-snyk.html' title='Using harness CI to run a series of Snyk Tests'/><author><name>Pas Apicella</name><uri>http://www.blogger.com/profile/09389663166398991762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://wiki.r31skylineclub.com/images/thumb/d/d4/Gts2-side.jpg/100px-Gts2-side.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJpZMH8JcWp2VPCIZQncI0oAboKsAD9L4iSaTynSIMgRA_v9NEeSrOFqG43DahpOlZPPeGL-9-Cc2kdsHNtcXkaagy6JoGMSDQUEhM8id18uCy9287FbkkoptBT4ZHmUHOJEKlahaLn9Dj/s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6527688743456205256.post-8002106115875181044</id><published>2021-09-15T14:15:00.003+10:00</published><updated>2021-09-15T15:19:51.129+10:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Buildkite&#xa;Snyk"/><title type='text'>Using Buildkite to perform Snyk Open Source and Snyk Code (SAST) tests</title><content type='html'>&lt;p&gt;&lt;a href=&quot;https://buildkite.com/&quot; target=&quot;_blank&quot;&gt;Buildkite&lt;/a&gt; is a platform for running fast, secure, and scalable continuous integration pipelines on your own infrastructure. In the example below I will run my Buildkite pipeline on my Macbook to perform two Snyk Tests, one for Open-Source dependancies and the other a SAST test of the code itself.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://snyk.io&quot; target=&quot;_blank&quot;&gt;Snyk&lt;/a&gt; is an open source security platform designed to help software-driven businesses enhance developer security.&lt;/p&gt;&lt;p&gt;You will need an account on &lt;a href=&quot;https://app.snyk.io&quot; target=&quot;_blank&quot;&gt;Snyk&lt;/a&gt; and &lt;a href=&quot;https://buildkite.com/&quot; target=&quot;_blank&quot;&gt;Buildkite&lt;/a&gt; to follow the steps below.&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Steps&lt;/h2&gt;&lt;p&gt;1. First in Snyk let&#39;s create a Service Account which will be the Snyk token I will use to authenticate with. You can use the Snyk API Token but the service account is all you need to run &quot;&lt;b&gt;Snyk Tests&lt;/b&gt;&quot; so makes sense to use that.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEha_sqU8Ykug6uT24FPrGrw6lIa52jfQU15kOXBz4TJBggmPKTnFa9Xuhoa76tMsgWlI721TbS3fQckTUwXO4TsS06FFqsiDD-w37a0XrPefkbbp326phjA-kjsG7MeqRP1-HQ91yKsPam6/s2048/Screen+Shot+2021-09-15+at+11.55.41+am.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1325&quot; data-original-width=&quot;2048&quot; height=&quot;207&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEha_sqU8Ykug6uT24FPrGrw6lIa52jfQU15kOXBz4TJBggmPKTnFa9Xuhoa76tMsgWlI721TbS3fQckTUwXO4TsS06FFqsiDD-w37a0XrPefkbbp326phjA-kjsG7MeqRP1-HQ91yKsPam6/s320/Screen+Shot+2021-09-15+at+11.55.41+am.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;2. Next let&#39;s store that Service Account token somewhere where I can safely inject that into my pipeline at the appropriate step. In this example I am using &quot;&lt;b&gt;Google Secret Manager&lt;/b&gt;&quot; but there are other choices of course.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVVvr21hiaLSdbTWfZQBiH62IN8wdBIYKzVzM66nr-7lVH9rP_0i45radGWsOOs3roj7XcRtV3gTLqneKv7iKFcs2y4Hn8jFNgUZWLYo7ggfCUzWjrPq3F-h8FkeeZM2DEGAWOeI34djzj/s2822/Screen+Shot+2021-09-15+at+11.59.48+am.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1070&quot; data-original-width=&quot;2822&quot; height=&quot;121&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVVvr21hiaLSdbTWfZQBiH62IN8wdBIYKzVzM66nr-7lVH9rP_0i45radGWsOOs3roj7XcRtV3gTLqneKv7iKFcs2y4Hn8jFNgUZWLYo7ggfCUzWjrPq3F-h8FkeeZM2DEGAWOeI34djzj/s320/Screen+Shot+2021-09-15+at+11.59.48+am.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #ffa400;&quot;&gt;Note: We will be using the secret NAME shortly &quot;&lt;b&gt;PAS_BUILDKITE_SA_SNYK_TOKEN&lt;/b&gt;&quot;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;3. You will need a Buildkite agent on your local Infrastructure in my case I using my Macbook so that&#39;s done as follows&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://buildkite.com/docs/agent/v3/macos&quot;&gt;https://buildkite.com/docs/agent/v3/macos&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;pasapicella@192-168-1-113:~/demos/integrations/buildkite$ ./start-agent.sh&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp;_&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_ _&amp;nbsp; &amp;nbsp; &amp;nbsp;_ _&amp;nbsp; &amp;nbsp; _ _&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; | |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(_) |&amp;nbsp; &amp;nbsp;| | |&amp;nbsp; (_) |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | |&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; | |__&amp;nbsp; _&amp;nbsp; &amp;nbsp;_ _| | __| | | ___| |_ ___&amp;nbsp; &amp;nbsp; __ _&amp;nbsp; __ _&amp;nbsp; ___ _ __ | |_&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; | &#39;_ \| | | | | |/ _` | |/ / | __/ _ \&amp;nbsp; / _` |/ _` |/ _ \ &#39;_ \| __|&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; | |_) | |_| | | | (_| |&amp;nbsp; &amp;nbsp;&amp;lt;| | ||&amp;nbsp; __/ | (_| | (_| |&amp;nbsp; __/ | | | |_&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; |_.__/ \__,_|_|_|\__,_|_|\_\_|\__\___|&amp;nbsp; \__,_|\__, |\___|_| |_|\__|&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;__/ |&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;https://buildkite.com/agent&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |___/&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;2021-09-15 11:09:33 NOTICE Starting buildkite-agent v3.32.3 with PID: 50130&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;2021-09-15 11:09:33 NOTICE The agent source code can be found here: https://github.com/buildkite/agent&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;2021-09-15 11:09:33 NOTICE For questions and support, email us at: hello@buildkite.com&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;2021-09-15 11:09:33 INFO&amp;nbsp; &amp;nbsp;Configuration loaded path=/usr/local/etc/buildkite-agent/buildkite-agent.cfg&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;2021-09-15 11:09:33 INFO&amp;nbsp; &amp;nbsp;Registering agent with Buildkite...&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;2021-09-15 11:09:35 INFO&amp;nbsp; &amp;nbsp;Successfully registered agent &quot;y.y.y.y.tpgi.com.au-1&quot; with tags []&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;2021-09-15 11:09:35 INFO&amp;nbsp; &amp;nbsp;Starting 1 Agent(s)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;2021-09-15 11:09:35 INFO&amp;nbsp; &amp;nbsp;You can press Ctrl-C to stop the agents&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;4. You&#39;re now ready to create a pipeline.&amp;nbsp;A pipeline is a template of the steps you want to run. There are many types of steps, some run scripts, some define conditional logic, and others wait for user input. When you run a pipeline, a build is created. Each of the steps in the pipeline end up as jobs in the build, which then get distributed to available agents.&lt;/p&gt;&lt;p&gt;In the example below our pipeline is created from a GitHub repo and then select the default branch. At that point incoming webhooks are sent to Buildkite by source control providers (GitHub, GitLab, Bitbucket, etc.) to trigger builds, in this scenario we using GitHub&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijNUTlNaCcaHOngO91Y4zGdehcQV4Me04_FkQjkfjZ0B-beAediNCU_6UjaKoh00uhsS-q9hXV-cEVgGgeMxtcX1xdZCupmHodgJmYhTtsjk6h4LFf94HmafNFI6Z3pj7avyUX6SEv9gtH/s2048/Screen+Shot+2021-09-15+at+1.36.13+pm.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1809&quot; data-original-width=&quot;2048&quot; height=&quot;283&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijNUTlNaCcaHOngO91Y4zGdehcQV4Me04_FkQjkfjZ0B-beAediNCU_6UjaKoh00uhsS-q9hXV-cEVgGgeMxtcX1xdZCupmHodgJmYhTtsjk6h4LFf94HmafNFI6Z3pj7avyUX6SEv9gtH/s320/Screen+Shot+2021-09-15+at+1.36.13+pm.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;5. Let&#39;s go ahead and actually just edit the build steps using YAML. My final YAML is as follows and I explain below why it looks this way but in short I just want to run two snyk tests rather then actually deploy anything for this demo.&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;steps:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; - commands:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; - &quot;snyk config set api=$$SNYK_SA_TOKEN_VAR&quot;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; - &quot;snyk test --severity-threshold=$$SEVERITY_THRESHOLD&quot;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; - &quot;snyk code test --org=$$SNYK_ORG&quot;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; plugins:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; - avaly/gcp-secret-manager#v1.0.0:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; credentials_file: /Users/pasapicella/snyk/clouds/gcp/buildkite-secrets-gcp.json&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; env:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SNYK_SA_TOKEN_VAR: PAS_BUILDKITE_SA_SNYK_TOKEN&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; env:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; SEVERITY_THRESHOLD: &quot;critical&quot;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; SNYK_ORG: &quot;pas.apicella-41p&quot;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; label: &quot;Employee API Snyk Test&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Few things to note here:&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;I am using a GCP secret manager plugin to retrieve my Snyk SA token with a name as follows &quot;&lt;b&gt;PAS_BUILDKITE_SA_SNYK_TOKEN&lt;/b&gt;&quot;&lt;/li&gt;&lt;li&gt;I am using a Google Service Account JSON so I can authenticate with GCP and retrieve my secret &quot;&lt;b&gt;SNYK_SA_TOKEN_VAR&lt;/b&gt;&quot;, you will need to use a Service Account with privileges to at least READ from Google Secret Manager&lt;/li&gt;&lt;li&gt;I am using some local non sensitive ENV variables which get used at the appropriate time&lt;/li&gt;&lt;li&gt;I have three commands of which the first command sets my Snyk API token for the Snyk CLI&lt;/li&gt;&lt;li&gt;I have not installed the Snyk CLI because it already exists on my Macbook&amp;nbsp;&lt;/li&gt;&lt;li&gt;I am only looking for my Snyk tests to fail if it finds any &lt;b&gt;CRITICAL&lt;/b&gt; issues only&lt;/li&gt;&lt;li&gt;I should be running a &quot;&lt;b&gt;mvn package&lt;/b&gt;&quot; here but I can still execute a &quot;&lt;b&gt;snyk test&lt;/b&gt;&quot; without it for demo purposes as we have a &lt;b&gt;pom..xml&lt;/b&gt;&lt;/li&gt;&lt;li&gt;I could also build a container in the pipeline from the source code and then&lt;b&gt;&amp;nbsp;&lt;/b&gt;run a &quot;&lt;b&gt;snyk container test&lt;/b&gt;&quot; as well, in fact I could even run &quot;&lt;b&gt;snyk iac test&lt;/b&gt;&quot; against any IaC files in the repo as well&lt;/li&gt;&lt;li&gt;If a test fails we can easily run &quot;&lt;b&gt;snyk monitor&lt;/b&gt;&quot; to load the results into the Snyk App but for this demo we don&#39;t do that&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;p&gt;6. Now we can manually run a build or wait for triggering event on our repo, here is some screen shots of what it looks like including some failures where we find vulnerabilities in a separate node.js repo&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPwoJ4ga7iBML29n5CWICWG_xf5kjoUhhNZyjhQUGmv8E2WgAdwe7LMjTHVRsPOpnrwnoZKbGqw1IKhy1IQdNYwFvZIAnXadlDORlThyffNvVzxfxPaZegjZTTuvIPxWEEJ0A8G4pDMKDO/s2682/Screen+Shot+2021-09-15+at+2.05.17+pm.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;686&quot; data-original-width=&quot;2682&quot; height=&quot;82&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPwoJ4ga7iBML29n5CWICWG_xf5kjoUhhNZyjhQUGmv8E2WgAdwe7LMjTHVRsPOpnrwnoZKbGqw1IKhy1IQdNYwFvZIAnXadlDORlThyffNvVzxfxPaZegjZTTuvIPxWEEJ0A8G4pDMKDO/s320/Screen+Shot+2021-09-15+at+2.05.17+pm.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEht1C4zo24WfL4WN4oIUiP6GA05js9K3I5MirccQB0OC5pQa3pCiGljaUhPcUAeFwymo22xafzkxVkuVjtV0Rn5mnd65c71RAqdAUX72NBl7EcwLyNKeOel1Rdc2BOlQNkwIXHfzj0nFxXD/s2048/Screen+Shot+2021-09-15+at+2.05.31+pm.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1076&quot; data-original-width=&quot;2048&quot; height=&quot;168&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEht1C4zo24WfL4WN4oIUiP6GA05js9K3I5MirccQB0OC5pQa3pCiGljaUhPcUAeFwymo22xafzkxVkuVjtV0Rn5mnd65c71RAqdAUX72NBl7EcwLyNKeOel1Rdc2BOlQNkwIXHfzj0nFxXD/s320/Screen+Shot+2021-09-15+at+2.05.31+pm.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuuiDzBBALjMGyXkkzxDp8Dp-xQFWoz93lTgMG_Fxr3E6yZCDzud3ct99eLUtTXvdI1NYoDAOyl6mZEg_Bg7vFUXPJUylCLFHSswFpu9-zxeFRLzDSs5T_eNTOGlF0TfuOzwwSivyVI4IS/s2048/Screen+Shot+2021-09-15+at+2.05.51+pm.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1790&quot; data-original-width=&quot;2048&quot; height=&quot;280&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuuiDzBBALjMGyXkkzxDp8Dp-xQFWoz93lTgMG_Fxr3E6yZCDzud3ct99eLUtTXvdI1NYoDAOyl6mZEg_Bg7vFUXPJUylCLFHSswFpu9-zxeFRLzDSs5T_eNTOGlF0TfuOzwwSivyVI4IS/s320/Screen+Shot+2021-09-15+at+2.05.51+pm.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjU-ojuc7qXROAGpgKN7iwKVnfQeFBT_m6csKX9gN9LB0xIn3ivQmCOkdITdYSqnY2FS9bxyks5o7wo-YAiUSEvspmp_8wPdSpkSGgRI9W1xyRCOeJGz_qxrtoWGauM1k-18FcAz7Dt_dsj/s2048/Screen+Shot+2021-09-15+at+2.06.41+pm.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1698&quot; data-original-width=&quot;2048&quot; height=&quot;265&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjU-ojuc7qXROAGpgKN7iwKVnfQeFBT_m6csKX9gN9LB0xIn3ivQmCOkdITdYSqnY2FS9bxyks5o7wo-YAiUSEvspmp_8wPdSpkSGgRI9W1xyRCOeJGz_qxrtoWGauM1k-18FcAz7Dt_dsj/s320/Screen+Shot+2021-09-15+at+2.06.41+pm.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;p&gt;It makes more sense to create a Buildkite plugin for Snyk rather than execute commands using a script and here is an example of one below. Having said that the commands you run to execute a &quot;&lt;b&gt;snyk test&lt;/b&gt;&quot; are simple enough to include in the pipeline YML without the need for a plugin here especially if you have infrastructure already setup with the ability to run the &quot;&lt;b&gt;snyk cli&lt;/b&gt;&quot;. A plugin would be the right approach here though as per the example below.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/seek-oss/snyk-buildkite-plugin&quot;&gt;https://github.com/seek-oss/snyk-buildkite-plugin&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAVcuNkZN4cLbMio6rr32tCUI-iS8AmPBhKcuhKecWwMWJEvoOpHiu8FypYTe9e2X9psN5BDTtbmKpQRq1sJjlX3r-QbJXu2pNGvdd3SLvkJ79N2U28_xS3DQhpvkMZqfrpIw780aYGglX/s2048/Screen+Shot+2021-09-15+at+2.09.10+pm.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1421&quot; data-original-width=&quot;2048&quot; height=&quot;222&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAVcuNkZN4cLbMio6rr32tCUI-iS8AmPBhKcuhKecWwMWJEvoOpHiu8FypYTe9e2X9psN5BDTtbmKpQRq1sJjlX3r-QbJXu2pNGvdd3SLvkJ79N2U28_xS3DQhpvkMZqfrpIw780aYGglX/s320/Screen+Shot+2021-09-15+at+2.09.10+pm.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Hopefully you have seen how easy it is to continuously avoid known vulnerabilities in your dependencies and code, by integrating Snyk into your continuous integration pipeline with Buildkite.&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;More Information&lt;/h2&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Snyk&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;http://snyk.io&quot;&gt;http://snyk.io&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;Buildkite&lt;br /&gt;&lt;a href=&quot;https://buildkite.com&quot;&gt;https://buildkite.com&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;http://feeds.feedburner.com/TheBlasFromPas&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblasfrompas.blogspot.com/feeds/8002106115875181044/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6527688743456205256/8002106115875181044' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/8002106115875181044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/8002106115875181044'/><link rel='alternate' type='text/html' href='http://theblasfrompas.blogspot.com/2021/09/using-buildkite-to-perform-snyk-open.html' title='Using Buildkite to perform Snyk Open Source and Snyk Code (SAST) tests'/><author><name>Pas Apicella</name><uri>http://www.blogger.com/profile/09389663166398991762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://wiki.r31skylineclub.com/images/thumb/d/d4/Gts2-side.jpg/100px-Gts2-side.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEha_sqU8Ykug6uT24FPrGrw6lIa52jfQU15kOXBz4TJBggmPKTnFa9Xuhoa76tMsgWlI721TbS3fQckTUwXO4TsS06FFqsiDD-w37a0XrPefkbbp326phjA-kjsG7MeqRP1-HQ91yKsPam6/s72-c/Screen+Shot+2021-09-15+at+11.55.41+am.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6527688743456205256.post-5658276775551518398</id><published>2021-08-30T15:47:00.006+10:00</published><updated>2021-08-30T19:27:43.654+10:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Snyk App&#xa;Elastic&#xa;Elastic Snyk Module&#xa;App Security"/><title type='text'>Using the Elastic Snyk module to visualize Snyk imported project data with Elastic Kibana </title><content type='html'>&lt;p&gt;&lt;a href=&quot;http://snyk.io&quot; target=&quot;_blank&quot;&gt;Snyk&lt;/a&gt; is an open source security platform designed to help software-driven businesses enhance developer security&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Elastic (ELK) stack is a distributed, RESTful search and analytics engine capable of addressing a growing number of use cases.&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;In this blog we will use Elastic to visualize our vulnerability data from Snyk using the &lt;a href=&quot;https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-module-snyk.html&quot; target=&quot;_blank&quot;&gt;Elastic Snyk Module&lt;/a&gt;.&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;This module is used for ingesting data from the different Snyk API Endpoints. Currently supports these filesets:&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;b&gt;vulnerabilities fileset&lt;/b&gt;: Collects all found vulnerabilities for the related organizations and projects&lt;/li&gt;&lt;li&gt;&lt;b&gt;audit fileset&lt;/b&gt;: Collects audit logging from Snyk, this can be actions like users, permissions, groups, api access and more.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;When you run the module, it performs a few tasks under the hood:&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Sets the default paths to the log files (but don’t worry, you can override the defaults)&lt;/li&gt;&lt;li&gt;Makes sure each multiline log event gets sent as a single event&lt;/li&gt;&lt;li&gt;Uses ingest node to parse and process the log lines, shaping the data into a structure suitable for visualizing in Kibana&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;p style=&quot;text-align: left;&quot;&gt;Here is how to get started with this currently BETA module&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Steps&amp;nbsp;&lt;/h3&gt;&lt;p&gt;1. First you will need an account on Snyk App and have imported a few projects so you have some vulnerability data to get started with. Here is an example of some imported projects which already exist in my Snyk App Account.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_k3AD9kx2xbcR2SRi2ll-_G9Fy7w4HBMUg02G7vkPToXHO9_jU6UW_FAqr8Lm3AqFSfU3wmlOWtwkOaMn-QDQ4USGVREFydC86MtCbfiKAtnRkMsZK8yCaVA1bbPpp2bE5yKot5nGg71Z/s2048/Screen+Shot+2021-08-30+at+2.40.45+pm.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1716&quot; data-original-width=&quot;2048&quot; height=&quot;268&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_k3AD9kx2xbcR2SRi2ll-_G9Fy7w4HBMUg02G7vkPToXHO9_jU6UW_FAqr8Lm3AqFSfU3wmlOWtwkOaMn-QDQ4USGVREFydC86MtCbfiKAtnRkMsZK8yCaVA1bbPpp2bE5yKot5nGg71Z/s320/Screen+Shot+2021-08-30+at+2.40.45+pm.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;2. You will need an Elastic Cluster best way to get one of those if you don&#39;t have one is to head to the &lt;a href=&quot;https://www.elastic.co/cloud/&quot; target=&quot;_blank&quot;&gt;Elastic Cloud Service&lt;/a&gt; for a free trial&lt;/p&gt;&lt;p&gt;3. Next we need to install Elastic Filebeat. The quick start guide here is the best way to do that&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-installation-configuration.html&quot;&gt;https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-installation-configuration.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Couple of things here&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;You need to run this command to enable the snyk module as shown below. In this example the module is already enabled so the output would differ the first time you run this.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ ./filebeat modules enable snyk&lt;br /&gt;Module snyk is already enabled&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Make sure you have configured connectivity to your Elastic Cluster as per the doc above. The example below is for the Elastic Cloud Service itself.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;cloud.id: &quot;staging:dXMtZWFzdC0xLmF3cy5mb3VuZC5pbyRjZWM2ZjI2MWE3NGJmMjRjZTMzYmI4ODExYjg0Mjk0ZiRjNmMyY2E2ZDA0MjI0OWFmMGNjN2Q3YTllOTYyNTc0Mw==&quot;&lt;br /&gt;cloud.auth: &quot;filebeat_setup:YOUR_PASSWORD&quot;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;4. With Elastic Filebeat installed and configured now we can setup the Snyk module to do that we perform the following.&lt;/p&gt;&lt;p&gt;Edit &quot;&lt;b&gt;./modules.d/snyk.yml&lt;/b&gt;&quot;&amp;nbsp;&lt;/p&gt;&lt;p&gt;The following link shows how to configure the &lt;b&gt;snyk.yml&lt;/b&gt; file and what settings are available&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-module-snyk.html&quot;&gt;https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-module-snyk.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Example Config to get started with:&amp;nbsp;&lt;/b&gt;&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;- module: snyk&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; audit:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; enabled: true&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; var.input: httpjson&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; var.audit_type: organization&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; var.audit_id: SNYK_ORG_ID&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; var.interval: 1h&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; var.api_token: SNYK_API_TOKEN&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; var.first_interval: 30d&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; vulnerabilities:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; enabled: true&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; var.interval: 1h&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; var.first_interval: 30d&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; var.api_token: SNYK_API_TOKEN&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; var.orgs:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; - SNYK_ORG_ID_1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; - SNYK_ORG_ID_2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #e69138;&quot;&gt;Note: In this example we are obtaining data from 2 organizations&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You obtain your ORG_ID&#39;s and SNYK_TOKEN_ID from Snyk App as shown below&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Account Settings -&amp;gt; General&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5PTBkzu4LogaAkczuXeDhcBNvbxV83Nib2jsr49c5agpto4s30CR6IeJ0Xt2XqmMP1MZqbHMRqu8UzTmRY6C7Ihb_Ry43g2Rhon9qDNsYsUQL0ZPyS-08x8XAyF8LNrJM42xxxHtBsYX-/s2690/Screen+Shot+2021-08-30+at+3.01.02+pm.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;880&quot; data-original-width=&quot;2690&quot; height=&quot;105&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5PTBkzu4LogaAkczuXeDhcBNvbxV83Nib2jsr49c5agpto4s30CR6IeJ0Xt2XqmMP1MZqbHMRqu8UzTmRY6C7Ihb_Ry43g2Rhon9qDNsYsUQL0ZPyS-08x8XAyF8LNrJM42xxxHtBsYX-/s320/Screen+Shot+2021-08-30+at+3.01.02+pm.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Settings -&amp;gt; General -&amp;gt;&amp;nbsp;Organization ID (For each orgnization you wish to use)&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirHy7s4P0gp5uFfuAAyH-Ll4iyyHWKEK59rF7gtqaLoaskRwdq9NaAKHlbn7FUvb2rpCnl4mKhBIpyyIkfLTFqyOOOC2Tl5afGiLyh8-AP-LAcnaCrlX-OcQFB3aHLqJsROvhOaTBASrUV/s2684/Screen+Shot+2021-08-30+at+3.07.15+pm.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1150&quot; data-original-width=&quot;2684&quot; height=&quot;137&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirHy7s4P0gp5uFfuAAyH-Ll4iyyHWKEK59rF7gtqaLoaskRwdq9NaAKHlbn7FUvb2rpCnl4mKhBIpyyIkfLTFqyOOOC2Tl5afGiLyh8-AP-LAcnaCrlX-OcQFB3aHLqJsROvhOaTBASrUV/s320/Screen+Shot+2021-08-30+at+3.07.15+pm.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;5. At this point we can start Elastic Filebeat as shown below.&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ ./filebeat -e&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;...&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;2021-08-30T14:23:48.034+1000&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;INFO&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;[esclientleg]&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;eslegclient/connection.go:273&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;Attempting to connect to Elasticsearch version 7.14.0&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;2021-08-30T14:23:48.163+1000&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;INFO&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;cfgfile/reload.go:224&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;Loading of config files completed.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;2021-08-30T14:23:48.163+1000&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;INFO&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;[input.httpjson-cursor]&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;compat/compat.go:111&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;Input httpjson-cursor starting&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;{&quot;id&quot;: &quot;BC01B4DEC1514B32&quot;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;2021-08-30T14:23:48.163+1000&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;INFO&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;[input.httpjson-cursor]&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;compat/compat.go:111&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;Input httpjson-cursor starting&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;{&quot;id&quot;: &quot;303DFE9AECEEEF55&quot;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;2021-08-30T14:23:48.164+1000&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;INFO&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;[input.httpjson-cursor]&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;v2/input.go:112&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;Process another repeated request.&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;{&quot;id&quot;: &quot;303DFE9AECEEEF55&quot;, &quot;input_source&quot;: &quot;https://snyk.io/api/v1/reporting/issues/?page=1&amp;amp;perPage=10&amp;amp;sortBy=issueTitle&amp;amp;order=asc&amp;amp;groupBy=issue&quot;, &quot;input_url&quot;: &quot;https://snyk.io/api/v1/reporting/issues/?page=1&amp;amp;perPage=10&amp;amp;sortBy=issueTitle&amp;amp;order=asc&amp;amp;groupBy=issue&quot;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;2021-08-30T14:23:48.164+1000&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;INFO&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;[input.httpjson-cursor]&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;v2/input.go:112&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;Process another repeated request.&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;{&quot;id&quot;: &quot;BC01B4DEC1514B32&quot;, &quot;input_source&quot;: &quot;https://snyk.io/api/v1/org/yyyy/audit?page=1&amp;amp;sortOrder=ASC&quot;, &quot;input_url&quot;: &quot;https://snyk.io/api/v1/org/yyyy/audit?page=1&amp;amp;sortOrder=ASC&quot;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;2021-08-30T14:23:49.656+1000&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;INFO&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;[input.httpjson-cursor]&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;v2/request.go:210&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;request finished: 0 events published&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;{&quot;id&quot;: &quot;BC01B4DEC1514B32&quot;, &quot;input_source&quot;: &quot;https://snyk.io/api/v1/org/yyyy/audit?page=1&amp;amp;sortOrder=ASC&quot;, &quot;input_url&quot;: &quot;https://snyk.io/api/v1/org/yyyy/audit?page=1&amp;amp;sortOrder=ASC&quot;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;...&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;6. If we head to Kibana and go into the &quot;&lt;b&gt;Discover&lt;/b&gt;&quot; Page we will see data flowing into the cluster by setting &quot;&lt;b&gt;event.module = snyk&lt;/b&gt;&quot; on the &quot;&lt;b&gt;filebeat-*&lt;/b&gt;&quot; index pattern as shown below.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOVQeuxhvx8hbaac_OW71d9SpLRFfXy5lQvtCoV0AAeGjGWULufTb8K64Ma_xCE3DY6f94T0Nh91L7f4iG2t7DhLoEiqLvK3Oqs_-RFtM38iyd4nR8RPW4WY7LSB98q7ZPr-zCOde9upRG/s2048/Screen+Shot+2021-08-30+at+3.15.49+pm.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1176&quot; data-original-width=&quot;2048&quot; height=&quot;184&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOVQeuxhvx8hbaac_OW71d9SpLRFfXy5lQvtCoV0AAeGjGWULufTb8K64Ma_xCE3DY6f94T0Nh91L7f4iG2t7DhLoEiqLvK3Oqs_-RFtM38iyd4nR8RPW4WY7LSB98q7ZPr-zCOde9upRG/s320/Screen+Shot+2021-08-30+at+3.15.49+pm.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;Or maybe we want to use Dev Tools itself&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCOtbzSiXTcEP59W0PHjXgtueKnW3iNkC_SIFrRL44J_Q7D40ve0PJZuJs-VI8MN28VaCTZWz2-hQNnlzHJYq4IEj9e8WqRgR9Dt1vZZOSkWaYAZ-0QnibKBkOKVqPTA9YF_6LgxZ0LoG2/s2048/Screen+Shot+2021-08-30+at+3.42.59+pm.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1233&quot; data-original-width=&quot;2048&quot; height=&quot;193&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCOtbzSiXTcEP59W0PHjXgtueKnW3iNkC_SIFrRL44J_Q7D40ve0PJZuJs-VI8MN28VaCTZWz2-hQNnlzHJYq4IEj9e8WqRgR9Dt1vZZOSkWaYAZ-0QnibKBkOKVqPTA9YF_6LgxZ0LoG2/s320/Screen+Shot+2021-08-30+at+3.42.59+pm.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1TspIqs2ST9ezBa72ST-X84D9kMltJyZJ4lFtbiZNRSQI0oG2K2AbUf-5mtJrN321X8g-5PqP2kiWPeTfGHNA_lrYTfJCE3e9a-kksUzXem448yBwlfkdFFJBe7-e1oeM0plKZoM0TcEn/s2048/Screen+Shot+2021-08-30+at+5.22.05+pm.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1179&quot; data-original-width=&quot;2048&quot; height=&quot;184&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1TspIqs2ST9ezBa72ST-X84D9kMltJyZJ4lFtbiZNRSQI0oG2K2AbUf-5mtJrN321X8g-5PqP2kiWPeTfGHNA_lrYTfJCE3e9a-kksUzXem448yBwlfkdFFJBe7-e1oeM0plKZoM0TcEn/s320/Screen+Shot+2021-08-30+at+5.22.05+pm.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;7. Finally a Dashboard of some graphs as we monitor the &quot;&lt;b&gt;Snyk Data&lt;/b&gt;&quot; coming into the cluster&amp;nbsp;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYR_37e6gB0qOr_CoJKNHHRSwGFXiiuxdg3w2ik092X-BsgGW2xmxbC4Suo7Zo8fFcCI5bMbvdJOByNn32-Zs_MSdJ63T3vNy9yj8HieOgWJ0aUIsBxJZSIcUGF0ZLExripf77NBqCuI_7/s2048/Screen+Shot+2021-08-30+at+3.26.23+pm.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1247&quot; data-original-width=&quot;2048&quot; height=&quot;195&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYR_37e6gB0qOr_CoJKNHHRSwGFXiiuxdg3w2ik092X-BsgGW2xmxbC4Suo7Zo8fFcCI5bMbvdJOByNn32-Zs_MSdJ63T3vNy9yj8HieOgWJ0aUIsBxJZSIcUGF0ZLExripf77NBqCuI_7/s320/Screen+Shot+2021-08-30+at+3.26.23+pm.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Next Steps?&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Kibana gives you the freedom to select the way you give shape to your 
data. With its interactive visualizations, start with one question and 
see where it leads you!!!. If it was me I would go straight to Kibana Lens.&amp;nbsp;Kibana Lens is an easy-to-use, intuitive UI that simplifies the process of data visualization through a drag-and-drop experience it allowed me to create the dashboard page above in under 3 minutes even without knowing where to start.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.elastic.co/kibana/kibana-lens&quot;&gt;https://www.elastic.co/kibana/kibana-lens&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Want all your vulnerability data form the &lt;a href=&quot;https://app.snyk.io&quot; target=&quot;_blank&quot;&gt;Snyk Platform&lt;/a&gt;&amp;nbsp;within your Elastic Stack the &quot;&lt;a href=&quot;https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-module-snyk.html&quot; target=&quot;_blank&quot;&gt;Elastic Snyk Module&lt;/a&gt;&quot; will do that for you in a few easy steps.&lt;/p&gt;&lt;h1 style=&quot;text-align: left;&quot;&gt;More Information&lt;/h1&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Snyk&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;http://snyk.io&quot;&gt;http://snyk.io&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Elastic Snyk Module&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-module-snyk.html&quot;&gt;https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-module-snyk.html&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;http://feeds.feedburner.com/TheBlasFromPas&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblasfrompas.blogspot.com/feeds/5658276775551518398/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6527688743456205256/5658276775551518398' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/5658276775551518398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/5658276775551518398'/><link rel='alternate' type='text/html' href='http://theblasfrompas.blogspot.com/2021/08/using-elastic-snyk-module-to-visualize.html' title='Using the Elastic Snyk module to visualize Snyk imported project data with Elastic Kibana '/><author><name>Pas Apicella</name><uri>http://www.blogger.com/profile/09389663166398991762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://wiki.r31skylineclub.com/images/thumb/d/d4/Gts2-side.jpg/100px-Gts2-side.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_k3AD9kx2xbcR2SRi2ll-_G9Fy7w4HBMUg02G7vkPToXHO9_jU6UW_FAqr8Lm3AqFSfU3wmlOWtwkOaMn-QDQ4USGVREFydC86MtCbfiKAtnRkMsZK8yCaVA1bbPpp2bE5yKot5nGg71Z/s72-c/Screen+Shot+2021-08-30+at+2.40.45+pm.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6527688743456205256.post-5273911100761599199</id><published>2021-08-27T08:25:00.001+10:00</published><updated>2021-08-27T08:25:23.181+10:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Snyk&#xa;Snyk Container&#xa;Security"/><title type='text'>Snyk Container meets Cloud Native Buildpacks: Cloud Native Application Security the right way</title><content type='html'>&lt;p&gt;&lt;span class=&quot;break-words&quot;&gt;&lt;span dir=&quot;ltr&quot;&gt;Released my first Snyk 
Blog post on how Snyk Container along with Cloud Native Buildpacks can 
mitigate the security risks of containerized applications.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://snyk.io/blog/snyk-container-cloud-native-buildpacks-cloud-native-application-security/&quot;&gt;https://snyk.io/blog/snyk-container-cloud-native-buildpacks-cloud-native-application-security/&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgw410wQf50j2BBvChPoQ53K1CxheCCxtE8uKjzLjP5i-e9LrZbEsLtqEU0sofRh2J0W_knnN-3qgI5RzMXE4iFj_2yPl9w9dSds4KYHa8rXoy5p5Zwid2iiBgoiVaVfL1R9nckuOgd75N4/s2048/Screen+Shot+2021-08-27+at+8.23.28+am.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1539&quot; data-original-width=&quot;2048&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgw410wQf50j2BBvChPoQ53K1CxheCCxtE8uKjzLjP5i-e9LrZbEsLtqEU0sofRh2J0W_knnN-3qgI5RzMXE4iFj_2yPl9w9dSds4KYHa8rXoy5p5Zwid2iiBgoiVaVfL1R9nckuOgd75N4/s320/Screen+Shot+2021-08-27+at+8.23.28+am.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;http://feeds.feedburner.com/TheBlasFromPas&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblasfrompas.blogspot.com/feeds/5273911100761599199/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6527688743456205256/5273911100761599199' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/5273911100761599199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/5273911100761599199'/><link rel='alternate' type='text/html' href='http://theblasfrompas.blogspot.com/2021/08/snyk-container-meets-cloud-native.html' title='Snyk Container meets Cloud Native Buildpacks: Cloud Native Application Security the right way'/><author><name>Pas Apicella</name><uri>http://www.blogger.com/profile/09389663166398991762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://wiki.r31skylineclub.com/images/thumb/d/d4/Gts2-side.jpg/100px-Gts2-side.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgw410wQf50j2BBvChPoQ53K1CxheCCxtE8uKjzLjP5i-e9LrZbEsLtqEU0sofRh2J0W_knnN-3qgI5RzMXE4iFj_2yPl9w9dSds4KYHa8rXoy5p5Zwid2iiBgoiVaVfL1R9nckuOgd75N4/s72-c/Screen+Shot+2021-08-27+at+8.23.28+am.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6527688743456205256.post-7046458068410771878</id><published>2021-08-20T11:45:00.000+10:00</published><updated>2021-08-20T11:45:43.287+10:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="snyk&#xa;snyk code"/><title type='text'>Taking Snyk Code for Test Drive</title><content type='html'>&lt;p&gt;Snyk Code is our newest addition to the Snyk platform.&amp;nbsp;Snyk Code uses a revolutionary approach designed to be developer-first. Conventional Static Application Security Testing (SAST) tools are limited by lengthy scans times and poor accuracy, returning too many false positives, and eroding developer trust. Snyk Code makes developer efforts efficient and actionable.&lt;/p&gt;&lt;p&gt;In this short blog post let&#39;s take it for a test drive on a large Java Project.&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Steps&lt;/h2&gt;&lt;p&gt;1. You will need an account on Snyk App sign up for free at &lt;a href=&quot;http://snyk.io&quot;&gt;snyk.io&lt;/a&gt;&lt;/p&gt;&lt;p&gt;2. Once you have an account and are logged in go ahead and enable &quot;&lt;b&gt;Snyk Code&lt;/b&gt;&quot; as follows&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiHVqY5qUYEzO51-VMRl8fuC2KW_qUzFKLR6-RpZ8B8c55gyLsTXvUfv1F8m17fbjgEr1KrOmLOCRdtTX8sfdDx3Hg7EucmWL1GFM4FRIIDsol8FqXadOnaFTkQyM4LpW0QeHNysjHfS6C/s2048/Screen+Shot+2021-08-20+at+11.23.44+am.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1193&quot; data-original-width=&quot;2048&quot; height=&quot;186&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiHVqY5qUYEzO51-VMRl8fuC2KW_qUzFKLR6-RpZ8B8c55gyLsTXvUfv1F8m17fbjgEr1KrOmLOCRdtTX8sfdDx3Hg7EucmWL1GFM4FRIIDsol8FqXadOnaFTkQyM4LpW0QeHNysjHfS6C/s320/Screen+Shot+2021-08-20+at+11.23.44+am.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;3. Clone the following GitHub repo as follows.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/papicella/CWE-Juliet-TestSuite-Java&quot;&gt;https://github.com/papicella/CWE-Juliet-TestSuite-Java&lt;/a&gt;&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ git clone https://github.com/papicella/CWE-Juliet-TestSuite-Java&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;Cloning into &#39;CWE-Juliet-TestSuite-Java&#39;...&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;remote: Enumerating objects: 12964, done.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;remote: Counting objects: 100% (12964/12964), done.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;remote: Compressing objects: 100% (969/969), done.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;remote: Total 12964 (delta 11931), reused 12964 (delta 11931), pack-reused 0&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;Receiving objects: 100% (12964/12964), 6.44 MiB | 6.04 MiB/s, done.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;Resolving deltas: 100% (11931/11931), done.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;Updating files: 100% (13095/13095), done.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;4. Authenticate with &quot;&lt;b&gt;Snyk CLI&lt;/b&gt;&quot; as shown below&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #ffa400;&quot;&gt;Note: The following link will get the CLI installed for you&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://support.snyk.io/hc/en-us/articles/360003812538-Install-the-Snyk-CLI&quot;&gt;https://support.snyk.io/hc/en-us/articles/360003812538-Install-the-Snyk-CLI&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ snyk auth&lt;/span&gt;&lt;/p&gt;&lt;p&gt;5. Let&#39;s check the number of lines of code we scanning as follows. Here we are making sure we only scan Java Source files as that&#39;s all that exists in this repo in any case. Snyk Code supports other programming languages as well like Python, JavaScript etc.&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ cd CWE-Juliet-TestSuite-Java&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ find ./Java/src -name &quot;*.java&quot; -type f -exec wc -l {} \; | awk &#39;{total += $1} END{print total}&#39;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;2,479,301&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;So we have close 2.5 million lines of code here of course that counts lines of empty space such as carriage returns BUT still that&#39;s lots of code to scan.&lt;/p&gt;&lt;p&gt;6. Run your &quot;&lt;b&gt;Snyk Code&lt;/b&gt;&quot; Test as follows to see two things , how long the scan took and the number of results returned. From this we can see the scan and results took less then 2 minutes!&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ time snyk code test ./Java/src&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;....&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;✗ [High] SQL Injection&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Path: testcases/CWE89_SQL_Injection/s02/CWE89_SQL_Injection__getCookies_Servlet_execute_41.java, line 42&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Info: Unsanitized input from cookies flows into execute, where it is used in an SQL query. This may result in an SQL Injection vulnerability.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;✗ [High] SQL Injection&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Path: testcases/CWE89_SQL_Injection/s02/CWE89_SQL_Injection__getCookies_Servlet_execute_14.java, line 62&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Info: Unsanitized input from cookies flows into execute, where it is used in an SQL query. This may result in an SQL Injection vulnerability.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp;✗ [High] SQL Injection&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Path: testcases/CWE89_SQL_Injection/s02/CWE89_SQL_Injection__getCookies_Servlet_execute_10.java, line 62&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Info: Unsanitized input from cookies flows into execute, where it is used in an SQL query. This may result in an SQL Injection vulnerability.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;✔ Test completed&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;Organization:&amp;nbsp; &amp;nbsp; &amp;nbsp; undefined&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;Test type:&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Static code analysis&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;Project path:&amp;nbsp; &amp;nbsp; &amp;nbsp; ./Java/src&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;3086 Code issues found&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;1491 [High]&amp;nbsp; 1595 [Medium]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;real&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;1m4.269s&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;user&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;0m45.630s&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;sys&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;0m7.182s&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;The following post shows some comparison data against other SAST engines and code repositories.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://snyk.io/blog/sast-tools-speed-comparison-snyk-code-sonarqube-lgtm/&quot;&gt;https://snyk.io/blog/sast-tools-speed-comparison-snyk-code-sonarqube-lgtm/&lt;/a&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;More Information&lt;/h2&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Snyk Code&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;https://snyk.io/product/snyk-code/&quot;&gt;https://snyk.io/product/snyk-code/&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Snyk Code is now available for free&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;https://snyk.io/blog/snyk-code-now-available-free-sast/&quot;&gt;https://snyk.io/blog/snyk-code-now-available-free-sast/&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;http://feeds.feedburner.com/TheBlasFromPas&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblasfrompas.blogspot.com/feeds/7046458068410771878/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6527688743456205256/7046458068410771878' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/7046458068410771878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/7046458068410771878'/><link rel='alternate' type='text/html' href='http://theblasfrompas.blogspot.com/2021/08/taking-snyk-code-for-test-drive.html' title='Taking Snyk Code for Test Drive'/><author><name>Pas Apicella</name><uri>http://www.blogger.com/profile/09389663166398991762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://wiki.r31skylineclub.com/images/thumb/d/d4/Gts2-side.jpg/100px-Gts2-side.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiHVqY5qUYEzO51-VMRl8fuC2KW_qUzFKLR6-RpZ8B8c55gyLsTXvUfv1F8m17fbjgEr1KrOmLOCRdtTX8sfdDx3Hg7EucmWL1GFM4FRIIDsol8FqXadOnaFTkQyM4LpW0QeHNysjHfS6C/s72-c/Screen+Shot+2021-08-20+at+11.23.44+am.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6527688743456205256.post-298151633394796798</id><published>2021-07-23T14:56:00.000+10:00</published><updated>2021-07-23T14:56:03.546+10:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="snyk&#xa;Atlassian&#xa;application security"/><title type='text'>Snyk provides native integration for Atlassian Bitbucket Cloud security - Here is how!!!</title><content type='html'>&lt;p&gt;The Snyk security integration is free and easy to set up with just a 
few clicks inside the Bitbucket Cloud product. For the first time, 
developers can consume information that was previously only available 
inside Snyk now within Bitbucket Cloud. Snyk enables developers to see 
new vulnerabilities as they emerge and implement fixes early and quickly
 in the process.&amp;nbsp;&lt;/p&gt;&lt;p&gt;In this post we show how easily you can integrate Snyk into Bitbucket Cloud&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Steps&lt;/h2&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #ffa400;&quot;&gt;Note: For the following to work you have to integrate Bitbucket Cloud with the Snyk App as per this link&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;https://support.snyk.io/hc/en-us/articles/360004032097-Bitbucket-Cloud-how-it-works&quot;&gt;https://support.snyk.io/hc/en-us/articles/360004032097-Bitbucket-Cloud-how-it-works&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;1. Once logged into Bitbucket Cloud navigate to your &quot;&lt;b&gt;Workplace Settings&lt;/b&gt;&quot; and authenticate with Snyk as shown below.&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGY3sGfXukYKvKaFu0f7B5GnmPPuXG3wQsOIgcNYiioq6TtbaNOtPXSrgi8P3A2nJCcOOmPANk8LeUrDpf-d7W6bmYDxOmYDv67J-KBSAm5t_gTGYu5fN9w0N0DiQl3gXTgz9BLmrPFsD2/s2048/Screen+Shot+2021-07-23+at+1.23.44+pm.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1662&quot; data-original-width=&quot;2048&quot; height=&quot;325&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGY3sGfXukYKvKaFu0f7B5GnmPPuXG3wQsOIgcNYiioq6TtbaNOtPXSrgi8P3A2nJCcOOmPANk8LeUrDpf-d7W6bmYDxOmYDv67J-KBSAm5t_gTGYu5fN9w0N0DiQl3gXTgz9BLmrPFsD2/w400-h325/Screen+Shot+2021-07-23+at+1.23.44+pm.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;2. Next select the repository you wish to use as shown below.&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRnKAg8toTVB-7_sSvm63SgUMxUlE68xqsUIlJBTTn-5YT9tj3o0dpVRw5KNt9EQ_-cCfElPTFqhcD8lc67P2Je6i1W9go4qi2Np3kAbTlT_qcHVHFhClR1LXRLnlynj8uKcOuXA8xg170/s3212/Screen+Shot+2021-07-23+at+1.24.49+pm.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;979&quot; data-original-width=&quot;3212&quot; height=&quot;122&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRnKAg8toTVB-7_sSvm63SgUMxUlE68xqsUIlJBTTn-5YT9tj3o0dpVRw5KNt9EQ_-cCfElPTFqhcD8lc67P2Je6i1W9go4qi2Np3kAbTlT_qcHVHFhClR1LXRLnlynj8uKcOuXA8xg170/w400-h122/Screen+Shot+2021-07-23+at+1.24.49+pm.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;3. You should see a &quot;&lt;b&gt;Snyk&lt;/b&gt;&quot; tab on the left hand side click on this and then click on &quot;&lt;b&gt;Import this repository&lt;/b&gt;&quot; as shown below.&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgB6QC3b-g6rmGQqb9q5Uwe2-woyZmDoqXNrwHu-ZZ2ZWT8dXwe93RhW2e2zj278b_CTS84Bdr4abOrDTxNLaMwzhcGNOmY_rvYq_OPyXpyTl05ANCGtjDcKwK9wyNGzHc6VmyXPjCU2ZxP/s2635/Screen+Shot+2021-07-23+at+1.25.08+pm.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1193&quot; data-original-width=&quot;2635&quot; height=&quot;181&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgB6QC3b-g6rmGQqb9q5Uwe2-woyZmDoqXNrwHu-ZZ2ZWT8dXwe93RhW2e2zj278b_CTS84Bdr4abOrDTxNLaMwzhcGNOmY_rvYq_OPyXpyTl05ANCGtjDcKwK9wyNGzHc6VmyXPjCU2ZxP/w400-h181/Screen+Shot+2021-07-23+at+1.25.08+pm.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;4. In a couple of minutes or less you should see a &quot;&lt;b&gt;Snyk&lt;/b&gt;&quot; overview report as per below.&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmqA7Oz5AcXJDhLl-kGq9u_Wex8JM1m_XSUesEGRJ198YDVwh_Tx-QuVLKZoRy5HMq9iGIkrZ-mA2mrCoawrbW7FOKwGUVWpC9f7qbQSh4lAMnjpCeevMXRWoExv2fq13ZMlOwEZT4seA7/s2763/Screen+Shot+2021-07-23+at+1.26.56+pm.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1138&quot; data-original-width=&quot;2763&quot; height=&quot;165&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmqA7Oz5AcXJDhLl-kGq9u_Wex8JM1m_XSUesEGRJ198YDVwh_Tx-QuVLKZoRy5HMq9iGIkrZ-mA2mrCoawrbW7FOKwGUVWpC9f7qbQSh4lAMnjpCeevMXRWoExv2fq13ZMlOwEZT4seA7/w400-h165/Screen+Shot+2021-07-23+at+1.26.56+pm.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;5. Click on &quot;&lt;b&gt;pom.xml&lt;/b&gt;&quot; to get more information as shown below. Here we get a list of all Vulnerabilities as per a scan of the package manifest file &quot;&lt;b&gt;pom.xml&lt;/b&gt;&quot; in this example.&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuY5SXTyNaQHixJb6aDeObRXzUVfENnOUuTvLsOVjIrpWJ9FYq7qAvqUlwh5uMSVj6253_gZUD2NiQEwN8fFb2FYQ4u8WSJNizxl2WOZPuVFmp30yH0QrASQn81PvJteIPD5p-dhKBjqr6/s2048/Screen+Shot+2021-07-23+at+1.29.57+pm.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1807&quot; data-original-width=&quot;2048&quot; height=&quot;353&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuY5SXTyNaQHixJb6aDeObRXzUVfENnOUuTvLsOVjIrpWJ9FYq7qAvqUlwh5uMSVj6253_gZUD2NiQEwN8fFb2FYQ4u8WSJNizxl2WOZPuVFmp30yH0QrASQn81PvJteIPD5p-dhKBjqr6/w400-h353/Screen+Shot+2021-07-23+at+1.29.57+pm.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;6. On the top of this page you can directly go to the project page on &quot;&lt;b&gt;Snyk App&lt;/b&gt;&quot; by clicking on &quot;&lt;b&gt;Visit Snyk&lt;/b&gt;&quot; as shown below.&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiv69oQ6mK6yC3NEKmYZSMkdga6BRJDj8FBCndxhd5VflRuOKTiXB_hzMwiUnN1IDgxdN07L8gH7rW6YHiWYuIJB2d7vIZO8LN4HpOr-f5oaWCnxyLAN8-UgjHyuUgJKhGlAwxF0NWQgqFa/s2048/Screen+Shot+2021-07-23+at+1.30.56+pm.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1506&quot; data-original-width=&quot;2048&quot; height=&quot;294&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiv69oQ6mK6yC3NEKmYZSMkdga6BRJDj8FBCndxhd5VflRuOKTiXB_hzMwiUnN1IDgxdN07L8gH7rW6YHiWYuIJB2d7vIZO8LN4HpOr-f5oaWCnxyLAN8-UgjHyuUgJKhGlAwxF0NWQgqFa/w400-h294/Screen+Shot+2021-07-23+at+1.30.56+pm.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;It&#39;s as simple as that!&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;More Information&lt;/h2&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Demo Video&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=IqRjH7zkxiM&quot;&gt;https://www.youtube.com/watch?v=IqRjH7zkxiM&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Snyk provides native integration for Atlassian Bitbucket Cloud security&lt;br /&gt;&lt;a href=&quot;https://snyk.io/blog/snyk-native-integration-atlassian-bitbucket-cloud-security/?utm_campaign=PR-LH-Bitbucket-2021&amp;amp;utm_medium=Social&amp;amp;utm_source=Linkedin-Organic&quot;&gt;https://snyk.io/blog/snyk-native-integration-atlassian-bitbucket-cloud-security/?utm_campaign=PR-LH-Bitbucket-2021&amp;amp;utm_medium=Social&amp;amp;utm_source=Linkedin-Organic&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;http://feeds.feedburner.com/TheBlasFromPas&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblasfrompas.blogspot.com/feeds/298151633394796798/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6527688743456205256/298151633394796798' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/298151633394796798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/298151633394796798'/><link rel='alternate' type='text/html' href='http://theblasfrompas.blogspot.com/2021/07/snyk-provides-native-integration-for.html' title='Snyk provides native integration for Atlassian Bitbucket Cloud security - Here is how!!!'/><author><name>Pas Apicella</name><uri>http://www.blogger.com/profile/09389663166398991762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://wiki.r31skylineclub.com/images/thumb/d/d4/Gts2-side.jpg/100px-Gts2-side.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGY3sGfXukYKvKaFu0f7B5GnmPPuXG3wQsOIgcNYiioq6TtbaNOtPXSrgi8P3A2nJCcOOmPANk8LeUrDpf-d7W6bmYDxOmYDv67J-KBSAm5t_gTGYu5fN9w0N0DiQl3gXTgz9BLmrPFsD2/s72-w400-h325-c/Screen+Shot+2021-07-23+at+1.23.44+pm.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6527688743456205256.post-6422223560403364236</id><published>2021-07-02T11:43:00.001+10:00</published><updated>2021-07-02T11:43:42.241+10:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="snyk&#xa;import project API"/><title type='text'>Snyk Import Project API using Azure Repos</title><content type='html'>&lt;p&gt;In this example below we show how you could import a Azure Repo directly from the &lt;a href=&quot;https://snyk.docs.apiary.io/#&quot; target=&quot;_blank&quot;&gt;Snyk API&lt;/a&gt;.&amp;nbsp;The Snyk API is available to customers on paid plans and allows you to programatically integrate with Snyk.&lt;/p&gt;&lt;p&gt;&lt;b&gt;API url&lt;/b&gt;&lt;/p&gt;&lt;p&gt;The base URL for all API endpoints is &lt;a href=&quot;https://snyk.io/api/v1/&quot;&gt;https://snyk.io/api/v1/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Authorization&lt;/b&gt;&lt;/p&gt;&lt;p&gt;To use this API, you must get your token from Snyk. It can be seen on &lt;a href=&quot;https://snyk.io/account/&quot;&gt;https://snyk.io/account/&lt;/a&gt; after you register with Snyk and login.&lt;/p&gt;&lt;p&gt;The token should be supplied in an Authorization header with the token, preceded by token:&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;Authorization: token API_KEY&lt;/span&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Steps&lt;/h2&gt;&lt;p&gt;&lt;span style=&quot;color: #e69138;&quot;&gt;Note: You would have configured an Azure Repos Integration as shown below prior to running these steps&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBJPSNByjFaX5NTcMsvfB2aiitXgt9ZBMTjscKO8IgB9qUTLnSNVHgTgDhWmhNK4JVb8iiAk8GlMveV1YmfRbpqXvUTa6DBI25GTVxYUbnVRQcAAOkwQxQa3w9XDSBXUGtwk2fhgcViLCt/s380/Screen+Shot+2021-07-02+at+10.39.28+am.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;352&quot; data-original-width=&quot;380&quot; height=&quot;185&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBJPSNByjFaX5NTcMsvfB2aiitXgt9ZBMTjscKO8IgB9qUTLnSNVHgTgDhWmhNK4JVb8iiAk8GlMveV1YmfRbpqXvUTa6DBI25GTVxYUbnVRQcAAOkwQxQa3w9XDSBXUGtwk2fhgcViLCt/w200-h185/Screen+Shot+2021-07-02+at+10.39.28+am.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPpquA90Pd1EXv_Z0vUF77v4hEJa1VksET1T3A4e9gr_OGTZA-e3oXSmllM7nIU5OW9i3K3UhyrILawFRo4a-lkS9sPIGWarM4VhIQiyKiUyzfZ7J3tn4ymGhBRplk01ooMDl9el_m11Ss/s2607/Screen+Shot+2021-07-02+at+10.41.00+am.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1206&quot; data-original-width=&quot;2607&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPpquA90Pd1EXv_Z0vUF77v4hEJa1VksET1T3A4e9gr_OGTZA-e3oXSmllM7nIU5OW9i3K3UhyrILawFRo4a-lkS9sPIGWarM4VhIQiyKiUyzfZ7J3tn4ymGhBRplk01ooMDl9el_m11Ss/s320/Screen+Shot+2021-07-02+at+10.41.00+am.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;1. Authenticate with the CLI using your Snyk Token as follows&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ snyk auth TOKEN&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;Your account has been authenticated. Snyk is now ready to be used.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;2. Log into your Azure DevOps account and verify which Project Repo you wish to import as per the image below&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3AQazbyNDzdjeimYG1d8gF1Brp7v7s5g39Rmmlps4LFHz-fqcBB_Xv3CxFv1VYQvIbaTm2Xk3jzTrKcxVP2t_HModH31G2IPDF_ZRmSR8njjBtTuzLCWuF17757qKwUUS2LX98CLMt_Xe/s3162/Screen+Shot+2021-07-02+at+10.42.31+am.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;894&quot; data-original-width=&quot;3162&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3AQazbyNDzdjeimYG1d8gF1Brp7v7s5g39Rmmlps4LFHz-fqcBB_Xv3CxFv1VYQvIbaTm2Xk3jzTrKcxVP2t_HModH31G2IPDF_ZRmSR8njjBtTuzLCWuF17757qKwUUS2LX98CLMt_Xe/s320/Screen+Shot+2021-07-02+at+10.42.31+am.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;3. With your project selected you will need the following details to perform the Snyk API import request&lt;/p&gt;&lt;p&gt;&lt;b&gt;owner: Name of your project&lt;/b&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzqa97WVINUfW_K26-edLucKaEp_O35diBgHbvtH9VEDHOkOdtbWhRdTQT_M8lgBQhpyIrxNA43IX408JNZDA2ffpliwvC_Zu5BiDjiqPK-djLsH6cS1EaVIY0MR66rqahC2M4sVqebflB/s2534/Screen+Shot+2021-07-02+at+10.46.50+am.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1241&quot; data-original-width=&quot;2534&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzqa97WVINUfW_K26-edLucKaEp_O35diBgHbvtH9VEDHOkOdtbWhRdTQT_M8lgBQhpyIrxNA43IX408JNZDA2ffpliwvC_Zu5BiDjiqPK-djLsH6cS1EaVIY0MR66rqahC2M4sVqebflB/s320/Screen+Shot+2021-07-02+at+10.46.50+am.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;name: Name of your Repository&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLsRUR2OL3uRjhvhLkSKga0_mx4tj6SfAbC_XLpQ74wwdpmhWCXFFNnXvuUEz2jlcj3LZl2trEsTCM-QoiYa48H5nUZH25mlLHt53qsbiFubkNpU4_y2GSPTCWCejdW19oX17hMz9XEny1/s2534/Screen+Shot+2021-07-02+at+10.46.50+am+2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1241&quot; data-original-width=&quot;2534&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLsRUR2OL3uRjhvhLkSKga0_mx4tj6SfAbC_XLpQ74wwdpmhWCXFFNnXvuUEz2jlcj3LZl2trEsTCM-QoiYa48H5nUZH25mlLHt53qsbiFubkNpU4_y2GSPTCWCejdW19oX17hMz9XEny1/s320/Screen+Shot+2021-07-02+at+10.46.50+am+2.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;branch: Branch name you wish to import&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBdopwDMg532KnpQ55Dm0ELYUehP04fyOwmoV8BqDwsuDcIRQMiBKd-2vlQw-9QvKYeQ_XhbFO3fqDMFMYYKxFhE40zcL3jxFlafZCKKxh1svXvqG25HLu7FRbmEeNp1YIQm7oPDvpARzq/s2534/Screen+Shot+2021-07-02+at+10.46.50+am+3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1241&quot; data-original-width=&quot;2534&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBdopwDMg532KnpQ55Dm0ELYUehP04fyOwmoV8BqDwsuDcIRQMiBKd-2vlQw-9QvKYeQ_XhbFO3fqDMFMYYKxFhE40zcL3jxFlafZCKKxh1svXvqG25HLu7FRbmEeNp1YIQm7oPDvpARzq/s320/Screen+Shot+2021-07-02+at+10.46.50+am+3.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;4. Finally we will need our Organisation ID and Azure Repos ID which we retrieve from the Snyk UI as follows&lt;/p&gt;&lt;p&gt;&lt;b&gt;organization ID&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Setting &amp;gt; General -&amp;gt; Organization ID&lt;/p&gt;&lt;p&gt;&lt;b&gt;Azure Repos ID&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Setting &amp;gt; Integrations -&amp;gt; Azure Repos -&amp;gt; Edit Settings -&amp;gt; Scroll to bottom of page&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyKBAuTvkZ1V2Aije-qtl3R8xJeGV2Nnq72qvFjY8suTLIiPeSRYS8o7e2jkbZ74ISSDsy-ctccXzs1E0h9tVgRHtCzaCx7baEkR9KuDOBG-tlSukXombAMF1093xHK3cuzLmjrhTPl4nw/s2620/Screen+Shot+2021-07-02+at+11.07.49+am.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;500&quot; data-original-width=&quot;2620&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyKBAuTvkZ1V2Aije-qtl3R8xJeGV2Nnq72qvFjY8suTLIiPeSRYS8o7e2jkbZ74ISSDsy-ctccXzs1E0h9tVgRHtCzaCx7baEkR9KuDOBG-tlSukXombAMF1093xHK3cuzLmjrhTPl4nw/s320/Screen+Shot+2021-07-02+at+11.07.49+am.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Take of note of both ID&#39;s we will need them in the steps below&lt;/p&gt;&lt;p&gt;5. Now we are ready to import our Azure Repo using a command as follows. We are using a &quot;curl&quot; command to issue a POST request and this command is for a Mac OSX or linux system so it would need tweaking if running on Windows for example&lt;/p&gt;&lt;p&gt;Command&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;curl --include \&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;--request POST \&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;--header &quot;Content-Type: application/json; charset=utf-8&quot; \&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;--header &quot;Authorization: token `snyk config get api`&quot; \&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;--data-binary &quot;{&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; \&quot;target\&quot;: {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; \&quot;owner\&quot;: \&quot;spring-book-service\&quot;,&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; \&quot;name\&quot;: \&quot;spring-book-service\&quot;,&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; \&quot;branch\&quot;: \&quot;master\&quot;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; }&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;}&quot; \&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&#39;https://snyk.io/api/v1/org/$ORG_ID/integrations/$AZURE_REPO_ID/import&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;6. Set the ENV variables for ORG_ID and AZURE_REPO_ID as follows&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;export ORG_ID=FROM_STEP-4&lt;br /&gt;export AZURE_REPO_ID=FROM_STEP-4&lt;/span&gt;&lt;/div&gt;&lt;p&gt;7. Run command&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ curl --include \&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; --request POST \&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; --header &quot;Content-Type: application/json; charset=utf-8&quot; \&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; --header &quot;Authorization: token `snyk config get api`&quot; \&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; --data-binary &quot;{&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;gt;&amp;nbsp; &amp;nbsp;\&quot;target\&quot;: {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;\&quot;owner\&quot;: \&quot;spring-book-service\&quot;,&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;\&quot;name\&quot;: \&quot;spring-book-service\&quot;,&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;\&quot;branch\&quot;: \&quot;master\&quot;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;gt;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;gt; }&quot; \&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;gt; &quot;https://snyk.io/api/v1/org/${ORG_ID}/integrations/${AZURE_REPO_ID}/import&quot;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;HTTP/2 201&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;content-security-policy: base-uri &#39;none&#39;; script-src &#39;self&#39; https: &#39;nonce-ENlk6rSQsdLgbcWNcCaA7A==&#39; &#39;unsafe-inline&#39; &#39;unsafe-eval&#39; &#39;strict-dynamic&#39; &#39;report-sample&#39;; img-src https: data:; object-src &#39;none&#39;; report-to csp-report-group; report-uri https://web-reports.snyk.io/csp?version=39e8721a74a6dffcb97fc790cfbf1fca91cefc03;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;report-to: {&quot;group&quot;:&quot;csp-report-group&quot;,&quot;max_age&quot;:1800,&quot;endpoints&quot;:[{&quot;url&quot;:&quot;https://web-reports.snyk.io/csp?version=39e8721a74a6dffcb97fc790cfbf1fca91cefc03&quot;}],&quot;include_subdomains&quot;:true}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;x-snyk-version: undefined&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;snyk-request-id: 1669e85e-abe5-401b-80bb-dae41829d6e1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;location: https://snyk.io/api/v1/org/.....&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;content-type: application/json; charset=utf-8&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;content-length: 2&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;etag: W/&quot;2-vyGp6PvFo4RvsFtPoIWeCReyIC8&quot;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;date: Fri, 02 Jul 2021 01:39:45 GMT&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;x-frame-options: deny&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;x-content-type-options: nosniff&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;x-xss-protection: 1; mode=block&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;strict-transport-security: max-age=31536000; preload&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;{}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Finally switch back to the Snyk UI and verify you have imported the Azure repo as shown below&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKhlroTJftf425o5PpDSHma2OrS1C9fYZNxhh_Q7Q57tfwALg8JhV0vKJbi_GSUZYjjeE8b9um3XKuFfuKNKUkddP3HTl7enB8g0dBiF5aAc1i9jFdBswmbdoPx__O7_ebULat8q9Ehgin/s2796/Screen+Shot+2021-07-02+at+11.41.15+am.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;918&quot; data-original-width=&quot;2796&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKhlroTJftf425o5PpDSHma2OrS1C9fYZNxhh_Q7Q57tfwALg8JhV0vKJbi_GSUZYjjeE8b9um3XKuFfuKNKUkddP3HTl7enB8g0dBiF5aAc1i9jFdBswmbdoPx__O7_ebULat8q9Ehgin/s320/Screen+Shot+2021-07-02+at+11.41.15+am.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;More Information&lt;/h2&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Import Projects API&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;https://snyk.docs.apiary.io/#reference/integrations/import-projects/import&quot;&gt;https://snyk.docs.apiary.io/#reference/integrations/import-projects/import&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;http://feeds.feedburner.com/TheBlasFromPas&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblasfrompas.blogspot.com/feeds/6422223560403364236/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6527688743456205256/6422223560403364236' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/6422223560403364236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/6422223560403364236'/><link rel='alternate' type='text/html' href='http://theblasfrompas.blogspot.com/2021/07/snyk-import-project-api-using-azure.html' title='Snyk Import Project API using Azure Repos'/><author><name>Pas Apicella</name><uri>http://www.blogger.com/profile/09389663166398991762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://wiki.r31skylineclub.com/images/thumb/d/d4/Gts2-side.jpg/100px-Gts2-side.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBJPSNByjFaX5NTcMsvfB2aiitXgt9ZBMTjscKO8IgB9qUTLnSNVHgTgDhWmhNK4JVb8iiAk8GlMveV1YmfRbpqXvUTa6DBI25GTVxYUbnVRQcAAOkwQxQa3w9XDSBXUGtwk2fhgcViLCt/s72-w200-h185-c/Screen+Shot+2021-07-02+at+10.39.28+am.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6527688743456205256.post-7099231741841813003</id><published>2021-06-14T15:20:00.002+10:00</published><updated>2021-06-14T15:20:41.994+10:00</updated><title type='text'>Basic Pipeline using Snyk Container, OCI Images, Azure DevOps all part of Cloud Native Application Security</title><content type='html'>&lt;p&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; white-space: pre-wrap;&quot;&gt;&lt;a href=&quot;https://snyk.io/product/container-vulnerability-management/&quot; target=&quot;_blank&quot;&gt;Snyk Container&lt;/a&gt; will find vulnerabilities in containers and Kubernetes workloads throughout the SDLC by scanning any compliant OCI image which includes those created by &lt;a href=&quot;https://buildpacks.io/&quot; target=&quot;_blank&quot;&gt;Cloud Native Buildpacks&lt;/a&gt; or other build tools that create OCI images.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;So what could an Azure DevOps Pipeline look like that incorporates the following using Snyk?&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;Running a Snyk Scan against the project &lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;repository&lt;/span&gt;&lt;/h4&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;Here we run a &quot;&lt;b&gt;snyk test&lt;/b&gt;&quot; from the root folder of the repository itself and that report is then&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQx4oavAysilE5hj7M_jAYCtIvLVbz5GhkMeIRfUFtu-u7kdT7GncjMyzmAUAg35BzhvpawPKXF1ChRS5rU2zW0Xk5VBB8rp3zihvLJRAsv1kacKcmlR6nhRVgPx_VUwRTpXxE7VzQjGnX/s2048/Screen+Shot+2021-06-14+at+3.05.24+pm.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1205&quot; data-original-width=&quot;2048&quot; height=&quot;376&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQx4oavAysilE5hj7M_jAYCtIvLVbz5GhkMeIRfUFtu-u7kdT7GncjMyzmAUAg35BzhvpawPKXF1ChRS5rU2zW0Xk5VBB8rp3zihvLJRAsv1kacKcmlR6nhRVgPx_VUwRTpXxE7VzQjGnX/w640-h376/Screen+Shot+2021-06-14+at+3.05.24+pm.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;Building your Artifact&lt;/span&gt;&lt;/h4&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;Here we use a Maven task which packages the application Artifact as a JAR file ready to run&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_JL9UR35NnEIM_enVrmjsJkw9UsCPtYbMMKBx5_WegiWO3uj5S7zKYq9kiwivWNJpZdgK87U4mj27dXbUNv9wF_lQY2ZxMsvcI_qUpQ1CCyFb90rV8y9ZYywlKDhLefXOFM_-QXXdZ5WN/&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;1198&quot; data-original-width=&quot;2048&quot; height=&quot;374&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_JL9UR35NnEIM_enVrmjsJkw9UsCPtYbMMKBx5_WegiWO3uj5S7zKYq9kiwivWNJpZdgK87U4mj27dXbUNv9wF_lQY2ZxMsvcI_qUpQ1CCyFb90rV8y9ZYywlKDhLefXOFM_-QXXdZ5WN/w640-h374/Screen+Shot+2021-06-14+at+3.07.13+pm.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;Creating an OCI compliant container image from the Artifact itself&lt;/span&gt;&lt;/h4&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;There are various ways to create a OCI compliant image but by the far the simplest is using Cloud Native  Buildpacks and for this we use the pack CLI which in turns using the Java Buildpack from our JAR file directly avoid a compilation step from the source code given we already did that on the step above.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhd74jWyi-UMBWHrqB3ji8YHUnNDcMTMjiR5xt6r30CkSXNeoTchpzBTS9_LgBu4DkHoH2r1Dy54VpFE4vqyztUhdFmyHZS-QQbH9H18qPd2FN2mpEasZIf4-EVOZKH9OHYBLfG7RUrHF1-/&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;202&quot; data-original-width=&quot;2582&quot; height=&quot;50&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhd74jWyi-UMBWHrqB3ji8YHUnNDcMTMjiR5xt6r30CkSXNeoTchpzBTS9_LgBu4DkHoH2r1Dy54VpFE4vqyztUhdFmyHZS-QQbH9H18qPd2FN2mpEasZIf4-EVOZKH9OHYBLfG7RUrHF1-/w640-h50/Screen+Shot+2021-06-14+at+3.10.31+pm.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;Running a Snyk Scan against the container image directly on the Container Registry&lt;/span&gt;&lt;/h4&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;With our container image now in our Container Registry we can use &quot;&lt;/span&gt;&lt;b style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;snyk container&lt;/b&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&quot; to check for issues directly from the registry and also check for application security issues from the open source &lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;dependancies&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt; as well.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjEIpi0coaaBlFods3tgRK971c03C0fES-XB1fm50HbXDnHskAHBa0jE3NwEcdX0YFFkV0ixQt8KjW8wtw9Xhc9fGZQQTcXf3Hp1WIGCo1L10qDLGMaPwj7aVEQej9gim61GbKiqo7jo4B/&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;1246&quot; data-original-width=&quot;2048&quot; height=&quot;390&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjEIpi0coaaBlFods3tgRK971c03C0fES-XB1fm50HbXDnHskAHBa0jE3NwEcdX0YFFkV0ixQt8KjW8wtw9Xhc9fGZQQTcXf3Hp1WIGCo1L10qDLGMaPwj7aVEQej9gim61GbKiqo7jo4B/w640-h390/Screen+Shot+2021-06-14+at+3.11.40+pm.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;The finished Pipeline ...&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTLxn5lEe4ev0V_zgBYnpyamJF2hdUZPl4nUyh2VDPGM1GGsvpW2ZLrkE4-c4lPlobojfv8jITyQOp9NEO6XOPuDbStoxtQx2tYoTYMjt57i07du_zBLQUjIkQ7G5_jpoitAAnCs81ro5H/&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;1196&quot; data-original-width=&quot;2048&quot; height=&quot;374&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTLxn5lEe4ev0V_zgBYnpyamJF2hdUZPl4nUyh2VDPGM1GGsvpW2ZLrkE4-c4lPlobojfv8jITyQOp9NEO6XOPuDbStoxtQx2tYoTYMjt57i07du_zBLQUjIkQ7G5_jpoitAAnCs81ro5H/w640-h374/Screen+Shot+2021-06-14+at+2.54.09+pm.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;b&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfr6dJxSW-24wLTVvbQSLZ1Q_59sizHCUtStDSf7BSKoBh61XsT8xcU4-QtKCCc7C6NGGbEijx3tU6cBSegN4kCDjcrns6JruD1P4NzMhYs3CQ9kXvCYqUbNb-Gqbc9c8uEwjhlFhBpFDc/&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;1167&quot; data-original-width=&quot;2048&quot; height=&quot;364&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfr6dJxSW-24wLTVvbQSLZ1Q_59sizHCUtStDSf7BSKoBh61XsT8xcU4-QtKCCc7C6NGGbEijx3tU6cBSegN4kCDjcrns6JruD1P4NzMhYs3CQ9kXvCYqUbNb-Gqbc9c8uEwjhlFhBpFDc/w640-h364/Screen+Shot+2021-06-14+at+3.18.14+pm.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;b&gt;azure-pipeline.yml Pipeline used in Azure DevOps &lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14.6667px; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;background-color: #fffffe; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14px; line-height: 21px; white-space: pre;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #007200;&quot;&gt;# Starter pipeline&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #007200;&quot;&gt;# Start with a minimal pipeline that you can customize to build and deploy your code.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #007200;&quot;&gt;# Add steps that build, run tests, deploy, and more:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #007200;&quot;&gt;# https://aka.ms/yaml&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: teal;&quot;&gt;trigger&lt;/span&gt;:&lt;/div&gt;&lt;div&gt;- &lt;span style=&quot;color: #0451a5;&quot;&gt;master&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: teal;&quot;&gt;pool&lt;/span&gt;:&lt;/div&gt;&lt;div&gt;  &lt;span style=&quot;color: teal;&quot;&gt;vmImage&lt;/span&gt;: &lt;span style=&quot;color: #0451a5;&quot;&gt;ubuntu-latest&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: teal;&quot;&gt;steps&lt;/span&gt;:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;- &lt;span style=&quot;color: teal;&quot;&gt;task&lt;/span&gt;: &lt;span style=&quot;color: #0451a5;&quot;&gt;Maven@3&lt;/span&gt;&lt;/div&gt;&lt;div&gt;  &lt;span style=&quot;color: teal;&quot;&gt;inputs&lt;/span&gt;:&lt;/div&gt;&lt;div&gt;    &lt;span style=&quot;color: teal;&quot;&gt;mavenPomFile&lt;/span&gt;: &lt;span style=&quot;color: #0451a5;&quot;&gt;&#39;pom.xml&#39;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;    &lt;span style=&quot;color: teal;&quot;&gt;mavenOptions&lt;/span&gt;: &lt;span style=&quot;color: #0451a5;&quot;&gt;&#39;-Xmx3072m&#39;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;    &lt;span style=&quot;color: teal;&quot;&gt;javaHomeOption&lt;/span&gt;: &lt;span style=&quot;color: #0451a5;&quot;&gt;&#39;JDKVersion&#39;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;    &lt;span style=&quot;color: teal;&quot;&gt;jdkVersionOption&lt;/span&gt;: &lt;span style=&quot;color: #0451a5;&quot;&gt;&#39;1.11&#39;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;    &lt;span style=&quot;color: teal;&quot;&gt;jdkArchitectureOption&lt;/span&gt;: &lt;span style=&quot;color: #0451a5;&quot;&gt;&#39;x64&#39;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;    &lt;span style=&quot;color: teal;&quot;&gt;publishJUnitResults&lt;/span&gt;: &lt;span style=&quot;color: blue;&quot;&gt;true&lt;/span&gt;&lt;/div&gt;&lt;div&gt;    &lt;span style=&quot;color: teal;&quot;&gt;options&lt;/span&gt;: &lt;span style=&quot;color: #0451a5;&quot;&gt;&quot;-Dskiptests -Dsnyk.skip&quot;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;    &lt;span style=&quot;color: teal;&quot;&gt;goals&lt;/span&gt;: &lt;span style=&quot;color: #0451a5;&quot;&gt;&#39;package&#39;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;  &lt;span style=&quot;color: teal;&quot;&gt;displayName&lt;/span&gt;: &lt;span style=&quot;color: #0451a5;&quot;&gt;&quot;Build artifact JAR&quot;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;  &lt;/div&gt;&lt;div&gt;- &lt;span style=&quot;color: teal;&quot;&gt;task&lt;/span&gt;: &lt;span style=&quot;color: #0451a5;&quot;&gt;SnykSecurityScan@0&lt;/span&gt;&lt;/div&gt;&lt;div&gt;  &lt;span style=&quot;color: teal;&quot;&gt;inputs&lt;/span&gt;:&lt;/div&gt;&lt;div&gt;    &lt;span style=&quot;color: teal;&quot;&gt;serviceConnectionEndpoint&lt;/span&gt;: &lt;span style=&quot;color: #0451a5;&quot;&gt;&#39;snyk-token&#39;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;    &lt;span style=&quot;color: teal;&quot;&gt;testType&lt;/span&gt;: &lt;span style=&quot;color: #0451a5;&quot;&gt;&#39;app&#39;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;    &lt;span style=&quot;color: teal;&quot;&gt;monitorOnBuild&lt;/span&gt;: &lt;span style=&quot;color: blue;&quot;&gt;false&lt;/span&gt;&lt;/div&gt;&lt;div&gt;    &lt;span style=&quot;color: teal;&quot;&gt;failOnIssues&lt;/span&gt;: &lt;span style=&quot;color: blue;&quot;&gt;false&lt;/span&gt;&lt;/div&gt;&lt;div&gt;  &lt;span style=&quot;color: teal;&quot;&gt;displayName&lt;/span&gt;: &lt;span style=&quot;color: #0451a5;&quot;&gt;&quot;snyk test from source&quot;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;- &lt;span style=&quot;color: teal;&quot;&gt;task&lt;/span&gt;: &lt;span style=&quot;color: #0451a5;&quot;&gt;Docker@2&lt;/span&gt;&lt;/div&gt;&lt;div&gt;  &lt;span style=&quot;color: teal;&quot;&gt;inputs&lt;/span&gt;:&lt;/div&gt;&lt;div&gt;    &lt;span style=&quot;color: teal;&quot;&gt;containerRegistry&lt;/span&gt;: &lt;span style=&quot;color: #0451a5;&quot;&gt;&#39;docker-pasapples-connection&#39;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;    &lt;span style=&quot;color: teal;&quot;&gt;command&lt;/span&gt;: &lt;span style=&quot;color: #0451a5;&quot;&gt;&#39;login&#39;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;  &lt;span style=&quot;color: teal;&quot;&gt;displayName&lt;/span&gt;: &lt;span style=&quot;color: #0451a5;&quot;&gt;&quot;Login to DockerHub&quot;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;- &lt;span style=&quot;color: teal;&quot;&gt;script&lt;/span&gt;: |&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #0451a5;&quot;&gt;    curl -sSL &quot;https://github.com/buildpacks/pack/releases/download/v0.19.0/pack-v0.19.0-linux.tgz&quot; | tar -C ./ --no-same-owner -xzv pack&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #0451a5;&quot;&gt;    ./pack build pasapples/springbootemployee:cnb-paketo-base --builder paketobuildpacks/builder:base --publish --path ./target/springbootemployee-0.0.1-SNAPSHOT.jar&lt;/span&gt;&lt;/div&gt;&lt;div&gt;  &lt;span style=&quot;color: teal;&quot;&gt;displayName&lt;/span&gt;: &lt;span style=&quot;color: #0451a5;&quot;&gt;&#39;Build Container with Pack&#39;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;- &lt;span style=&quot;color: teal;&quot;&gt;task&lt;/span&gt;: &lt;span style=&quot;color: #0451a5;&quot;&gt;SnykSecurityScan@0&lt;/span&gt;&lt;/div&gt;&lt;div&gt;  &lt;span style=&quot;color: teal;&quot;&gt;inputs&lt;/span&gt;:&lt;/div&gt;&lt;div&gt;    &lt;span style=&quot;color: teal;&quot;&gt;serviceConnectionEndpoint&lt;/span&gt;: &lt;span style=&quot;color: #0451a5;&quot;&gt;&#39;snyk-token&#39;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;    &lt;span style=&quot;color: teal;&quot;&gt;testType&lt;/span&gt;: &lt;span style=&quot;color: #0451a5;&quot;&gt;&#39;container&#39;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;    &lt;span style=&quot;color: teal;&quot;&gt;dockerImageName&lt;/span&gt;: &lt;span style=&quot;color: #0451a5;&quot;&gt;&#39;pasapples/springbootemployee:cnb-paketo-base&#39;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;    &lt;span style=&quot;color: teal;&quot;&gt;severityThreshold&lt;/span&gt;: &lt;span style=&quot;color: #0451a5;&quot;&gt;&#39;low&#39;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;    &lt;span style=&quot;color: teal;&quot;&gt;monitorOnBuild&lt;/span&gt;: &lt;span style=&quot;color: blue;&quot;&gt;false&lt;/span&gt;&lt;/div&gt;&lt;div&gt;    &lt;span style=&quot;color: teal;&quot;&gt;failOnIssues&lt;/span&gt;: &lt;span style=&quot;color: blue;&quot;&gt;false&lt;/span&gt;&lt;/div&gt;&lt;div&gt;    &lt;span style=&quot;color: teal;&quot;&gt;additionalArguments&lt;/span&gt;: &lt;span style=&quot;color: #0451a5;&quot;&gt;&quot;--app-vulns&quot;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;  &lt;span style=&quot;color: teal;&quot;&gt;displayName&lt;/span&gt;: &lt;span style=&quot;color: #0451a5;&quot;&gt;&quot;snyk container scan from image&quot;&lt;/span&gt;  &lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/h4&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; white-space: pre-wrap;&quot;&gt;More Information&lt;/span&gt;&lt;/h2&gt;&lt;p dir=&quot;ltr&quot; id=&quot;docs-internal-guid-ac01cef4-7fff-6902-f2da-cc247938f2ff&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;So, for Container and Kubernetes security, designed to help developers find and fix vulnerabilities in cloud native applications, click the links below to learn more and get started today.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://snyk.io/product/container-vulnerability-management/&quot; style=&quot;text-decoration-line: none;&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Snyk Container&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;a href=&quot;https://snyk.io&quot; style=&quot;text-decoration-line: none;&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Snyk Platform&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;http://feeds.feedburner.com/TheBlasFromPas&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblasfrompas.blogspot.com/feeds/7099231741841813003/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6527688743456205256/7099231741841813003' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/7099231741841813003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/7099231741841813003'/><link rel='alternate' type='text/html' href='http://theblasfrompas.blogspot.com/2021/06/basic-pipeline-using-snyk-container-oci.html' title='Basic Pipeline using Snyk Container, OCI Images, Azure DevOps all part of Cloud Native Application Security'/><author><name>Pas Apicella</name><uri>http://www.blogger.com/profile/09389663166398991762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://wiki.r31skylineclub.com/images/thumb/d/d4/Gts2-side.jpg/100px-Gts2-side.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQx4oavAysilE5hj7M_jAYCtIvLVbz5GhkMeIRfUFtu-u7kdT7GncjMyzmAUAg35BzhvpawPKXF1ChRS5rU2zW0Xk5VBB8rp3zihvLJRAsv1kacKcmlR6nhRVgPx_VUwRTpXxE7VzQjGnX/s72-w640-h376-c/Screen+Shot+2021-06-14+at+3.05.24+pm.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6527688743456205256.post-5185914112875293565</id><published>2021-06-03T15:16:00.003+10:00</published><updated>2021-06-03T15:16:41.958+10:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Kubernetes&#xa;containers"/><category scheme="http://www.blogger.com/atom/ns#" term="snyk&#xa;snyk container&#xa;DevSecOps"/><title type='text'>Installing Snyk Controller into a k3d kubernetes cluster to enable runtime container scanning with the Snyk Platform</title><content type='html'>&lt;p&gt;Snyk integrates with Kubernetes, enabling you to import and test your running workloads and identify vulnerabilities in their associated images and configurations that might make those workloads less secure. Once imported, Snyk continues to monitor those workloads, identifying additional security issues as new images are deployed and the workload configuration changes&lt;/p&gt;&lt;p&gt;In the example below we show you how easy it is to integrate the Snyk Platform with any K8s distribution in this case k3d running on my laptop.&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Steps&amp;nbsp;&lt;/h2&gt;&lt;p&gt;1. Install k3d using the instructions from the link below.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://k3d.io/&quot;&gt;https://k3d.io/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;2. Create a cluster as shown below.&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;pasapicella@192-168-1-113:~/snyk/demos/kubernetes/k3d$ k3d cluster create snyk-k3d --servers 1 --agents 2&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;INFO[0000] Prep: Network&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;INFO[0003] Created network &#39;k3d-snyk-k3d&#39;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;INFO[0003] Created volume &#39;k3d-snyk-k3d-images&#39;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;INFO[0004] Creating node &#39;k3d-snyk-k3d-server-0&#39;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;INFO[0005] Creating node &#39;k3d-snyk-k3d-agent-0&#39;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;INFO[0005] Creating node &#39;k3d-snyk-k3d-agent-1&#39;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;INFO[0005] Creating LoadBalancer &#39;k3d-snyk-k3d-serverlb&#39;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;INFO[0005] Starting cluster &#39;snyk-k3d&#39;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;INFO[0005] Starting servers...&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;INFO[0005] Starting Node &#39;k3d-snyk-k3d-server-0&#39;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;INFO[0012] Starting agents...&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;INFO[0012] Starting Node &#39;k3d-snyk-k3d-agent-0&#39;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;INFO[0023] Starting Node &#39;k3d-snyk-k3d-agent-1&#39;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;INFO[0031] Starting helpers...&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;INFO[0031] Starting Node &#39;k3d-snyk-k3d-serverlb&#39;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;INFO[0033] (Optional) Trying to get IP of the docker host and inject it into the cluster as &#39;host.k3d.internal&#39; for easy access&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;INFO[0036] Successfully added host record to /etc/hosts in 4/4 nodes and to the CoreDNS ConfigMap&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;INFO[0036] Cluster &#39;snyk-k3d&#39; created successfully!&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;INFO[0036] --kubeconfig-update-default=false --&amp;gt; sets --kubeconfig-switch-context=false&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;INFO[0036] You can now use it like this:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;kubectl config use-context k3d-snyk-k3d&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;kubectl cluster-info&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;3. View the Kubernetes nodes.&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ kubectl get nodes&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;NAME&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; STATUS&amp;nbsp; &amp;nbsp;ROLES&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AGE&amp;nbsp; &amp;nbsp;VERSION&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;k3d-snyk-k3d-server-0&amp;nbsp; &amp;nbsp;Ready&amp;nbsp; &amp;nbsp; control-plane,master&amp;nbsp; &amp;nbsp;21h&amp;nbsp; &amp;nbsp;v1.20.5+k3s1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;k3d-snyk-k3d-agent-0&amp;nbsp; &amp;nbsp; Ready&amp;nbsp; &amp;nbsp; &amp;lt;none&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;21h&amp;nbsp; &amp;nbsp;v1.20.5+k3s1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;k3d-snyk-k3d-agent-1&amp;nbsp; &amp;nbsp; Ready&amp;nbsp; &amp;nbsp; &amp;lt;none&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;21h&amp;nbsp; &amp;nbsp;v1.20.5+k3s1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;4.&amp;nbsp; Run the following command in order to add the Snyk Charts repository to Helm.&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ helm repo add snyk-charts https://snyk.github.io/kubernetes-monitor/&lt;br /&gt;&quot;snyk-charts&quot; already exists with the same configuration, skipping&lt;/span&gt;&lt;/div&gt;&lt;p&gt;5. Once the repository is added, create a unique namespace for the Snyk controller:&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ kubectl create namespace snyk-monitor&lt;/span&gt;&lt;/p&gt;&lt;p&gt;6. Now, log in to your Snyk account and navigate to Integrations. Search for and click Kubernetes. Click Connect from the page that loads, copy the Integration ID. The Snyk Integration ID is a UUID, similar to this format: abcd1234-abcd-1234-abcd-1234abcd1234. Save it for use from your Kubernetes environment in the next step&lt;/p&gt;&lt;p&gt;Instructions link : &lt;a href=&quot;https://support.snyk.io/hc/en-us/articles/360006368657-Viewing-your-Kubernetes-integration-settings&quot;&gt;https://support.snyk.io/hc/en-us/articles/360006368657-Viewing-your-Kubernetes-integration-settings&lt;/a&gt;&lt;/p&gt;&lt;p&gt;7.&amp;nbsp;Snyk monitor runs by using your Snyk Integration ID, and using a dockercfg file. If you are not using any private registries which we are not in this demo, create a Kubernetes secret called snyk-monitor containing the Snyk Integration ID from the previous step and run the following command:&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ kubectl create secret generic snyk-monitor -n snyk-monitor \&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;--from-literal=dockercfg.json={} \&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;--from-literal=integrationId=INTEGRATION_TOKEN_FROM_STEP_6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;secret/snyk-monitor created&lt;/span&gt;&lt;/div&gt;&lt;p&gt;8. Install the Snyk Helm chart as follows:&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ helm upgrade --install snyk-monitor snyk-charts/snyk-monitor \&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; --namespace snyk-monitor \&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; --set clusterName=&quot;k3d Dev cluster&quot;&lt;br /&gt;Release &quot;snyk-monitor&quot; does not exist. Installing it now.&lt;br /&gt;NAME: snyk-monitor&lt;br /&gt;LAST DEPLOYED: Wed Jun&amp;nbsp; 2 17:47:13 2021&lt;br /&gt;NAMESPACE: snyk-monitor&lt;br /&gt;STATUS: deployed&lt;br /&gt;REVISION: 1&lt;br /&gt;TEST SUITE: None&lt;/span&gt;&lt;/div&gt;&lt;p&gt;9. Verify the Snyk Controller is running using either&amp;nbsp;&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ kubectl get pods -n snyk-monitor&lt;br /&gt;NAME&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;READY&amp;nbsp; &amp;nbsp;STATUS&amp;nbsp; &amp;nbsp; RESTARTS&amp;nbsp; &amp;nbsp;AGE&lt;br /&gt;snyk-monitor-64c94685b-fwpvx&amp;nbsp; &amp;nbsp;1/1&amp;nbsp; &amp;nbsp; &amp;nbsp;Running&amp;nbsp; &amp;nbsp;3&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 21h&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;10. At this point we can create some workloads as follows let&#39;s just add a single POD to the cluster for a basic Spring Boot application.&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ kubectl run springboot-app --image=pasapples/spring-boot-jib --port=8080&lt;br /&gt;pod/springboot-app created&lt;/span&gt;&lt;/div&gt;&lt;p&gt;11. Head back to the Snyk Dashboard and click on your Kubernetes Integration Tile and you should see a list of applicable workloads to monitor in our case&amp;nbsp; we just have the single app called &quot;&lt;b&gt;springboot-app&lt;/b&gt;&quot;.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9Sgv7Jedj20Ug2SvOb8rhL1I5ZAsrkNycYfI0WObZ9io7BccVhxjqoF5j0UF9e-XxNTosSYAiChXtqzPaJ-TKS_rF1V00tN-O58vm-PHMMbPovB0u7SKWlZUJXpW3b8MGfnGt0mYxfikR/&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;764&quot; data-original-width=&quot;3004&quot; height=&quot;162&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9Sgv7Jedj20Ug2SvOb8rhL1I5ZAsrkNycYfI0WObZ9io7BccVhxjqoF5j0UF9e-XxNTosSYAiChXtqzPaJ-TKS_rF1V00tN-O58vm-PHMMbPovB0u7SKWlZUJXpW3b8MGfnGt0mYxfikR/w640-h162/Screen+Shot+2021-06-03+at+3.11.33+pm.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;12. Add the selected workload and your done!!!&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHB7dIaMbdvFxVlmNtJUqsYEvStnHijaw1PUqRD2kZp1oc7JEPgngh2sBswmDt8AgVbBpCwcDRG_fIDNTVSWmEX6fNrUbhq0x-3-_TBquGiJBMztp_H3eWyTUrdBGWUelnIP259bOuuHXk/&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;1078&quot; data-original-width=&quot;2917&quot; height=&quot;236&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHB7dIaMbdvFxVlmNtJUqsYEvStnHijaw1PUqRD2kZp1oc7JEPgngh2sBswmDt8AgVbBpCwcDRG_fIDNTVSWmEX6fNrUbhq0x-3-_TBquGiJBMztp_H3eWyTUrdBGWUelnIP259bOuuHXk/w640-h236/Screen+Shot+2021-06-03+at+3.13.13+pm.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;More Information&lt;/h2&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Kubernetes integration overview&lt;br /&gt;&lt;a href=&quot;https://support.snyk.io/hc/en-us/articles/360003916138-Kubernetes-integration-overview&quot;&gt;https://support.snyk.io/hc/en-us/articles/360003916138-Kubernetes-integration-overview&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Install the Snyk controller with Helm&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;https://support.snyk.io/hc/en-us/articles/360003916158#UUID-753328ea-3d73-0eeb-4301-c22522273797&quot;&gt;https://support.snyk.io/hc/en-us/articles/360003916158#UUID-753328ea-3d73-0eeb-4301-c22522273797&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;http://feeds.feedburner.com/TheBlasFromPas&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblasfrompas.blogspot.com/feeds/5185914112875293565/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6527688743456205256/5185914112875293565' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/5185914112875293565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/5185914112875293565'/><link rel='alternate' type='text/html' href='http://theblasfrompas.blogspot.com/2021/06/installing-snyk-controller-into-k3d.html' title='Installing Snyk Controller into a k3d kubernetes cluster to enable runtime container scanning with the Snyk Platform'/><author><name>Pas Apicella</name><uri>http://www.blogger.com/profile/09389663166398991762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://wiki.r31skylineclub.com/images/thumb/d/d4/Gts2-side.jpg/100px-Gts2-side.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9Sgv7Jedj20Ug2SvOb8rhL1I5ZAsrkNycYfI0WObZ9io7BccVhxjqoF5j0UF9e-XxNTosSYAiChXtqzPaJ-TKS_rF1V00tN-O58vm-PHMMbPovB0u7SKWlZUJXpW3b8MGfnGt0mYxfikR/s72-w640-h162-c/Screen+Shot+2021-06-03+at+3.11.33+pm.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6527688743456205256.post-8527438957376039875</id><published>2021-05-27T22:35:00.001+10:00</published><updated>2021-05-27T22:37:12.958+10:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="snyk&#xa;snyk container&#xa;DevSecOps"/><title type='text'>Cloud Native Buildpacks meets Snyk Container</title><content type='html'>&lt;p&gt;&lt;a href=&quot;http://buildpacks.io&quot; target=&quot;_blank&quot;&gt;&lt;em&gt;Cloud Native Buildpacks&lt;/em&gt;&lt;/a&gt; transform your application source code into images that can run on any cloud and avoid ever having a write Dockerfile again after all why would you even care about a Dockerfile?&lt;/p&gt;&lt;p&gt;So in today&#39;s post we are going to take a look at how &lt;a href=&quot;http://snyk.io&quot; target=&quot;_blank&quot;&gt;Snyk App&lt;/a&gt; with Snyk Container can scan those Cloud Native Buildpack OCI images for you.&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Snyk Container equips developers to quickly fix container issues. Use the following to find out more about Snyk Container -&amp;nbsp;&lt;a href=&quot;https://snyk.io/product/container-vulnerability-management/&quot;&gt;https://snyk.io/product/container-vulnerability-management/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;You may not always have access to the original source code that runs in your containers, but vulnerabilities in your code dependencies are still important. Snyk can detect and monitor open source dependencies for popular languages as part of the container scan which is important because Cloud Native Buildpacks are building container images from source code using popular programming languages.&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Demo&lt;/h2&gt;&lt;p&gt;1. First let&#39;s clone spring petclinic app and create our artifact for deployment.&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ git clone&amp;nbsp;https://github.com/spring-projects/spring-petclinic&lt;br /&gt;$ cd spring-petclinic&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ /mvnw package&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;2. Install pack so we can build some OCI images directly into our registries from a simple CLI. Instructions as follows&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;https://buildpacks.io/docs/tools/pack/&quot;&gt;https://buildpacks.io/docs/tools/pack/&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;3. Test kpack is installed by listing the suggested builders&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ pack --version&lt;br /&gt;0.18.1+git-b5c1a96.build-2373&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;$ pack builder suggest&lt;/div&gt;&lt;div&gt;Suggested builders:&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;Google:&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;gcr.io/buildpacks/builder:v1&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;Heroku:&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;heroku/buildpacks:18&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;Heroku:&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;heroku/buildpacks:20&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;Paketo Buildpacks:&amp;nbsp; &amp;nbsp; &amp;nbsp;paketobuildpacks/builder:base&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;Paketo Buildpacks:&amp;nbsp; &amp;nbsp; &amp;nbsp;paketobuildpacks/builder:full&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;Paketo Buildpacks:&amp;nbsp; &amp;nbsp; &amp;nbsp;paketobuildpacks/builder:tiny&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;At this point we are ready to go so let&#39;s create 3 OCI images and push them to 3 separate regitries as follows&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Dockerhub&lt;/li&gt;&lt;li&gt;Amazon Elastic Container Registry (ECR)&lt;/li&gt;&lt;li&gt;Google Cloud Registry (GCR)&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Note: Your local docker desktop needs to be able to establish connections to the 3 registries above&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;4. Build an OCI image of petclinic to Dockerhub.&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ pack build pasapples/petclinic:latest --builder paketobuildpacks/builder:base --publish --path ./spring-petclinic/target/spring-petclinic-2.4.5.jar&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;base: Pulling from paketobuildpacks/builder&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;Digest: sha256:a6f81cb029d4d3272981c12dad7212a5063ec0076e2438b7b5bb702f2e1fd11a&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;Status: Image is up to date for paketobuildpacks/builder:base&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;===&amp;gt; DETECTING&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;5 of 18 buildpacks participating&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;paketo-buildpacks/ca-certificates&amp;nbsp; &amp;nbsp;2.2.0&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;paketo-buildpacks/bellsoft-liberica 8.0.0&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;...&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;Adding label &#39;org.opencontainers.image.version&#39;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;Adding label &#39;org.springframework.boot.version&#39;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;Setting default process type &#39;web&#39;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;Saving pasapples/petclinic:latest...&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;*** Images (sha256:d730612833826cd9e39a7241c1fba411eacd9b5f771915b00af4b3b499838bd5):&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; pasapples/petclinic:latest&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;Successfully built image pasapples/petclinic:latest&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;5. Build an OCI image of petclinic to ECR.&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ pack build 300326902600.dkr.ecr.us-east-1.amazonaws.com/petclinic:latest --builder paketobuildpacks/builder:base --publish --path ./spring-petclinic/target/spring-petclinic-2.4.5.jar&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;base: Pulling from paketobuildpacks/builder&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;Digest: sha256:a6f81cb029d4d3272981c12dad7212a5063ec0076e2438b7b5bb702f2e1fd11a&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;Status: Image is up to date for paketobuildpacks/builder:base&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;===&amp;gt; DETECTING&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;5 of 18 buildpacks participating&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;paketo-buildpacks/ca-certificates&amp;nbsp; &amp;nbsp;2.2.0&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;paketo-buildpacks/bellsoft-liberica 8.0.0&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;...&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;Adding label &#39;org.opencontainers.image.version&#39;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;Adding label &#39;org.springframework.boot.version&#39;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;Setting default process type &#39;web&#39;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;Saving 300326902600.dkr.ecr.us-east-1.amazonaws.com/petclinic:latest...&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;*** Images (sha256:d730612833826cd9e39a7241c1fba411eacd9b5f771915b00af4b3b499838bd5):&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 300326902600.dkr.ecr.us-east-1.amazonaws.com/petclinic:latest&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;Successfully built image 300326902600.dkr.ecr.us-east-1.amazonaws.com/petclinic:latest&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;6. Build an OCI image of petclinic to GCR.&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ pack build us.gcr.io/snyk-cx-se-demo/petclinic-google:latest --builder paketobuildpacks/builder:base --publish --path ./spring-petclinic/target/spring-petclinic-2.4.5.jar&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;base: Pulling from paketobuildpacks/builder&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;Digest: sha256:a6f81cb029d4d3272981c12dad7212a5063ec0076e2438b7b5bb702f2e1fd11a&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;Status: Image is up to date for paketobuildpacks/builder:base&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;===&amp;gt; DETECTING&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;5 of 18 buildpacks participating&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;paketo-buildpacks/ca-certificates&amp;nbsp; &amp;nbsp;2.2.0&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;paketo-buildpacks/bellsoft-liberica 8.0.0&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;...&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;Adding label &#39;org.opencontainers.image.version&#39;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;Adding label &#39;org.springframework.boot.version&#39;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;Setting default process type &#39;web&#39;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;Saving us.gcr.io/snyk-cx-se-demo/petclinic-google:latest...&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;*** Images (sha256:d730612833826cd9e39a7241c1fba411eacd9b5f771915b00af4b3b499838bd5):&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; us.gcr.io/snyk-cx-se-demo/petclinic-google:latest&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;Successfully built image us.gcr.io/snyk-cx-se-demo/petclinic-google:latest&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Three OCI compliant images of petclinic in our 3 registries done!!!&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;So now it&#39;s over to Snyk.&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;7. Login Snyk App - &lt;a href=&quot;https://app.snyk.io&quot;&gt;https://app.snyk.io&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;p&gt;8. Lets do a scan from the CLI by first authenticating with Snyk App as follows which will direct you to a browser to authenticate once done return to the prompt.&lt;/p&gt;&lt;p&gt;$ snyk auth&amp;nbsp;&lt;/p&gt;&lt;p&gt;9. Now you can run a snyk container test to any of the 3 registries we used as follows.&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ snyk container test us.gcr.io/snyk-cx-se-demo/petclinic-google:latest&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ snyk container test&amp;nbsp;300326902600.dkr.ecr.us-east-1.amazonaws.com/petclinic:latest&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ snyk container test&amp;nbsp;pasapples/petclinic:latest&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Demo Output&lt;/b&gt;&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;Testing us.gcr.io/snyk-cx-se-demo/petclinic-google:latest...&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;✗ Low severity vulnerability found in shadow/passwd&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; Description: Time-of-check Time-of-use (TOCTOU)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; Info: https://snyk.io/vuln/SNYK-UBUNTU1804-SHADOW-306209&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; Introduced through: shadow/passwd@1:4.5-1ubuntu2, apt@1.6.13, shadow/login@1:4.5-1ubuntu2&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; From: shadow/passwd@1:4.5-1ubuntu2&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; From: apt@1.6.13 &amp;gt; adduser@3.116ubuntu1 &amp;gt; shadow/passwd@1:4.5-1ubuntu2&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; From: shadow/login@1:4.5-1ubuntu2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;...&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;✗ Medium severity vulnerability found in gcc-8/libstdc++6&lt;br /&gt;&amp;nbsp; Description: Information Exposure&lt;br /&gt;&amp;nbsp; Info: https://snyk.io/vuln/SNYK-UBUNTU1804-GCC8-572149&lt;br /&gt;&amp;nbsp; Introduced through: gcc-8/libstdc++6@8.4.0-1ubuntu1~18.04, apt/libapt-pkg5.0@1.6.13, apt@1.6.13, meta-common-packages@meta&lt;br /&gt;&amp;nbsp; From: gcc-8/libstdc++6@8.4.0-1ubuntu1~18.04&lt;br /&gt;&amp;nbsp; From: apt/libapt-pkg5.0@1.6.13 &amp;gt; gcc-8/libstdc++6@8.4.0-1ubuntu1~18.04&lt;br /&gt;&amp;nbsp; From: apt@1.6.13 &amp;gt; gcc-8/libstdc++6@8.4.0-1ubuntu1~18.04&lt;br /&gt;&amp;nbsp; and 2 more...&lt;br /&gt;&lt;br /&gt;Organization:&amp;nbsp; &amp;nbsp; &amp;nbsp; pas.apicella-41p&lt;br /&gt;Package manager:&amp;nbsp; &amp;nbsp;deb&lt;br /&gt;Project name:&amp;nbsp; &amp;nbsp; &amp;nbsp; docker-image|us.gcr.io/snyk-cx-se-demo/petclinic-google&lt;br /&gt;Docker image:&amp;nbsp; &amp;nbsp; &amp;nbsp; us.gcr.io/snyk-cx-se-demo/petclinic-google:latest&lt;br /&gt;Platform:&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; linux/amd64&lt;br /&gt;Licenses:&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; enabled&lt;/span&gt;&lt;/div&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;Tested 97 dependencies for known issues, found 25 issues.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;10. Back to Snyk App we can import all 3 OCI images from all 3 registries once we configure each integration for the registries as shown below&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdiUTlWy62T3QB3nsD_Ogw46HLXfFAU9xr2b_gkJ4_Md-F0hrryPCImo4W-CMkZ-7fSwigpWjEEVkH2SvTaiHO0N924hujLWTosXjwMXH67IPSVqM-DfaIr7BzK2u2eHh4Oj0Dn6y6b_Yy/&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;446&quot; data-original-width=&quot;1310&quot; height=&quot;218&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdiUTlWy62T3QB3nsD_Ogw46HLXfFAU9xr2b_gkJ4_Md-F0hrryPCImo4W-CMkZ-7fSwigpWjEEVkH2SvTaiHO0N924hujLWTosXjwMXH67IPSVqM-DfaIr7BzK2u2eHh4Oj0Dn6y6b_Yy/w640-h218/Screen+Shot+2021-05-27+at+10.31.59+pm.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1sJgHGklQ6xAuKPXl-nPsiUZoDxEe3PbVBwybn-XjnA4a8ym1lqaJq2_O-ufdVIRTEbumboUTeapsVVAiUpTGI12lxHIzxnwMwiqmTYqV_Jg-kqed_fcMcAWNe7AAa_kAU_lh9SQXDIw3/&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;866&quot; data-original-width=&quot;2774&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1sJgHGklQ6xAuKPXl-nPsiUZoDxEe3PbVBwybn-XjnA4a8ym1lqaJq2_O-ufdVIRTEbumboUTeapsVVAiUpTGI12lxHIzxnwMwiqmTYqV_Jg-kqed_fcMcAWNe7AAa_kAU_lh9SQXDIw3/w640-h200/Screen+Shot+2021-05-27+at+10.24.37+pm.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;11. And take a look at where the vulnerabilities exist within those open source dependencies used in our petclinic source code as well as base image layer vulnerabilities&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcWSM2i_yQsp3OIF8O_vfZeKkx7klJgLbOHuP_cu8URiIMf_3CExbkp7HMhLZEWaTPBAAujwg9wFt9SES5jhQNE8Pg_Duy0RRZqRh6UUoWNaSXoi8GLWXh8BaPQSfDZ866aSi8W8jtpKif/&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;1617&quot; data-original-width=&quot;2048&quot; height=&quot;505&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcWSM2i_yQsp3OIF8O_vfZeKkx7klJgLbOHuP_cu8URiIMf_3CExbkp7HMhLZEWaTPBAAujwg9wFt9SES5jhQNE8Pg_Duy0RRZqRh6UUoWNaSXoi8GLWXh8BaPQSfDZ866aSi8W8jtpKif/w640-h505/Screen+Shot+2021-05-27+at+10.25.59+pm.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeSAnYx-DLSlhD3XJrwhm4iMsQHO928COSyP05PdiZyKMF5zfBXAhwH2F8cF75jkHS5hMqjO_0QwRiV55t7AsZEZXgBODhdKwmRt6uTeeP7MuBHmSpwkNsiQm0zNq_cPnYlssA99UZwF6q/&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;1570&quot; data-original-width=&quot;2048&quot; height=&quot;491&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeSAnYx-DLSlhD3XJrwhm4iMsQHO928COSyP05PdiZyKMF5zfBXAhwH2F8cF75jkHS5hMqjO_0QwRiV55t7AsZEZXgBODhdKwmRt6uTeeP7MuBHmSpwkNsiQm0zNq_cPnYlssA99UZwF6q/w640-h491/Screen+Shot+2021-05-27+at+10.28.57+pm.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Give &lt;a href=&quot;https://app.snyk.io&quot; target=&quot;_blank&quot;&gt;Snyk App&lt;/a&gt; a go yourself and start scanning those OCI container images built using Cloud Native Buildpacks now!!!&lt;p&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;More Information&lt;/h2&gt;&lt;div&gt;Main Snyk Web Page&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://snyk.io&quot;&gt;http://snyk.io&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Snyk Container&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://snyk.io/product/container-vulnerability-management/&quot;&gt;https://snyk.io/product/container-vulnerability-management/&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;http://feeds.feedburner.com/TheBlasFromPas&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblasfrompas.blogspot.com/feeds/8527438957376039875/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6527688743456205256/8527438957376039875' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/8527438957376039875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/8527438957376039875'/><link rel='alternate' type='text/html' href='http://theblasfrompas.blogspot.com/2021/05/cloud-native-buildpacks-meets-snyk.html' title='Cloud Native Buildpacks meets Snyk Container'/><author><name>Pas Apicella</name><uri>http://www.blogger.com/profile/09389663166398991762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://wiki.r31skylineclub.com/images/thumb/d/d4/Gts2-side.jpg/100px-Gts2-side.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdiUTlWy62T3QB3nsD_Ogw46HLXfFAU9xr2b_gkJ4_Md-F0hrryPCImo4W-CMkZ-7fSwigpWjEEVkH2SvTaiHO0N924hujLWTosXjwMXH67IPSVqM-DfaIr7BzK2u2eHh4Oj0Dn6y6b_Yy/s72-w640-h218-c/Screen+Shot+2021-05-27+at+10.31.59+pm.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6527688743456205256.post-8189651000504573804</id><published>2021-02-25T20:02:00.003+11:00</published><updated>2021-02-25T20:02:58.155+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="k3d&#xa;kubernetes&#xa;Elastic Cloud&#xa;Elastic Stack"/><title type='text'>Elastic Cloud with Observability 7.11 Using Rancher k3d  for K8s </title><content type='html'>&lt;p&gt;Started working locally with rancher&#39;s &lt;a href=&quot;https://k3d.io/&quot; target=&quot;_blank&quot;&gt;k3d&lt;/a&gt; to spin up K8s clusters so I thought why not use&amp;nbsp;&lt;a href=&quot;https://cloud.elastic.co/&quot; target=&quot;_blank&quot;&gt;Elastic Cloud &lt;/a&gt;with Elastic Observability to monitor this local K8s cluster and even run container workloads that use Elastic APM to monitor the application through tracing.&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;A successful Kubernetes monitoring solution has a few requirements:&lt;br /&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Monitors all layers of your technology stack, including:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;The host systems where Kubernetes is running.&lt;/li&gt;&lt;li&gt;Kubernetes core components, nodes, pods, and containers running within the cluster.&lt;/li&gt;&lt;li&gt;All of the applications and services running in Kubernetes containers.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Automatically detects and monitors services as they appear dynamically.&lt;/li&gt;&lt;li&gt;Provides a way to correlate related data so that you can group and explore related metrics, logs, and other observability data.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;p&gt;Some basic steps to get this running as per below. This was tested with Elastic Stack 7.11 using the Elastic Cloud Service&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Pre Steps&lt;/h2&gt;&lt;p&gt;1. I have my Elastic stack running using Elastic Cloud as per the screen shot below&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2YdmNZyYiXtCQuqGLUlP9pvnipvvAbbJYxWyaWF9hJAeu2Xy6HRKoAHmBNl_JbsH7NE_CD3xsvGo5H-_burXA2uXCcWHWn0mupr6zUczTtcjUw74tNmVA6l4Qvsf_prcrMRH7QFC-x8ig/s3049/Screen+Shot+2021-02-25+at+7.13.43+pm.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1032&quot; data-original-width=&quot;3049&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2YdmNZyYiXtCQuqGLUlP9pvnipvvAbbJYxWyaWF9hJAeu2Xy6HRKoAHmBNl_JbsH7NE_CD3xsvGo5H-_burXA2uXCcWHWn0mupr6zUczTtcjUw74tNmVA6l4Qvsf_prcrMRH7QFC-x8ig/s320/Screen+Shot+2021-02-25+at+7.13.43+pm.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;2. I have k3d installed on my Mac as follows&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ k3d --version&lt;br /&gt;k3d version v4.0.0&lt;br /&gt;k3s version latest (default)&lt;/span&gt;&lt;/div&gt;&lt;p&gt;3. You will need the &lt;a href=&quot;https://v1-18.docs.kubernetes.io/docs/tasks/tools/install-kubectl/&quot; target=&quot;_blank&quot;&gt;kubectl&lt;/a&gt; CLI as well&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Steps&lt;/h2&gt;&lt;p&gt;1. First let&#39;s start a K8s cluster as follows. I have created a 5 node K8s cluster with 1 master node but you can reduce the number of worker nodes if you don&#39;t have the memory to support this&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;$&amp;nbsp;k3d cluster create elastic-k3d --servers 1 --agents 5&lt;/span&gt;&lt;/p&gt;&lt;p&gt;2. Start your k3d cluster as follows if not already started&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ k3d cluster start elastic-k3d&lt;br /&gt;INFO[0000] Starting cluster &#39;elastic-k3d&#39;&lt;br /&gt;INFO[0000] Starting Node &#39;k3d-elastic-k3d-agent-4&#39;&lt;br /&gt;INFO[0000] Starting Node &#39;k3d-elastic-k3d-agent-3&#39;&lt;br /&gt;INFO[0000] Starting Node &#39;k3d-elastic-k3d-agent-2&#39;&lt;br /&gt;INFO[0001] Starting Node &#39;k3d-elastic-k3d-agent-1&#39;&lt;br /&gt;INFO[0001] Starting Node &#39;k3d-elastic-k3d-agent-0&#39;&lt;br /&gt;INFO[0001] Starting Node &#39;k3d-elastic-k3d-server-0&#39;&lt;br /&gt;INFO[0002] Starting Node &#39;k3d-elastic-k3d-serverlb&#39;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;3. Let&#39;s list out our nodes just to verify what you created&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ k get nodes&lt;br /&gt;NAME&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;STATUS&amp;nbsp; &amp;nbsp;ROLES&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AGE&amp;nbsp; &amp;nbsp;VERSION&lt;br /&gt;k3d-elastic-k3d-server-0&amp;nbsp; &amp;nbsp;Ready&amp;nbsp; &amp;nbsp; control-plane,master&amp;nbsp; &amp;nbsp;34h&amp;nbsp; &amp;nbsp;v1.20.2+k3s1&lt;br /&gt;k3d-elastic-k3d-agent-4&amp;nbsp; &amp;nbsp; Ready&amp;nbsp; &amp;nbsp; &amp;lt;none&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;34h&amp;nbsp; &amp;nbsp;v1.20.2+k3s1&lt;br /&gt;k3d-elastic-k3d-agent-1&amp;nbsp; &amp;nbsp; Ready&amp;nbsp; &amp;nbsp; &amp;lt;none&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;34h&amp;nbsp; &amp;nbsp;v1.20.2+k3s1&lt;br /&gt;k3d-elastic-k3d-agent-3&amp;nbsp; &amp;nbsp; Ready&amp;nbsp; &amp;nbsp; &amp;lt;none&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;34h&amp;nbsp; &amp;nbsp;v1.20.2+k3s1&lt;br /&gt;k3d-elastic-k3d-agent-2&amp;nbsp; &amp;nbsp; Ready&amp;nbsp; &amp;nbsp; &amp;lt;none&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;34h&amp;nbsp; &amp;nbsp;v1.20.2+k3s1&lt;br /&gt;k3d-elastic-k3d-agent-0&amp;nbsp; &amp;nbsp; Ready&amp;nbsp; &amp;nbsp; &amp;lt;none&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;34h&amp;nbsp; &amp;nbsp;v1.20.2+k3s1&lt;/span&gt;&lt;/div&gt;&lt;p&gt;Now it&#39;s time to &quot;Monitor Kubernetes: Observe the health and performance of your Kubernetes deployments&quot; To do that we could just follow this tutorial as shown below&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.elastic.co/guide/en/observability/7.11/monitor-kubernetes.html&quot;&gt;https://www.elastic.co/guide/en/observability/7.11/monitor-kubernetes.html&lt;/a&gt;&lt;/p&gt;&lt;div&gt;This tutorial will walk you through how to do the following&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Deploy filebeat into your k3d cluster&lt;/div&gt;&lt;div&gt;Deploy metricbeat into your k3d cluster&lt;/div&gt;&lt;div&gt;Deploy an application which is instrumented using the Elastic APM agent&amp;nbsp;&lt;/div&gt;&lt;p&gt;4. When installing filebeat and metricbeat make sure you add your Elastic Cloud credentials which can be obtained from the Elastic Cloud deployments page and would have also been provided as a XLS file to download once you create your deployment&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;filebeat-kubernetes.yaml&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; processors:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; - add_cloud_metadata:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; - add_host_metadata:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; cloud.id: pas-K8s:{PASSWORD}&lt;br /&gt;&amp;nbsp; &amp;nbsp; cloud.auth: elastic:{PASSWORD}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;b&gt;metricbeat-kubernetes.yaml (Notice how I have added a kubernetes_metadata processor)&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; processors:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; - add_host_metadata:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; - add_kubernetes_metadata:&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; cloud.id: pas-K8s:{PASSWORD}&lt;br /&gt;&amp;nbsp; &amp;nbsp; cloud.auth: elastic:{PASSWORD}&lt;/span&gt;&lt;/div&gt;&lt;p style=&quot;text-align: left;&quot;&gt;5. Once installed filebeat and metricbeat PODS should be running as per the output below&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;Filebeat&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ kubectl get pods -n kube-system -l k8s-app=filebeat&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;NAME&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;READY&amp;nbsp; &amp;nbsp;STATUS&amp;nbsp; &amp;nbsp; RESTARTS&amp;nbsp; &amp;nbsp;AGE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;filebeat-m8s6s&amp;nbsp; &amp;nbsp;1/1&amp;nbsp; &amp;nbsp; &amp;nbsp;Running&amp;nbsp; &amp;nbsp;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 32h&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;filebeat-g86vf&amp;nbsp; &amp;nbsp;1/1&amp;nbsp; &amp;nbsp; &amp;nbsp;Running&amp;nbsp; &amp;nbsp;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 32h&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;filebeat-bj548&amp;nbsp; &amp;nbsp;1/1&amp;nbsp; &amp;nbsp; &amp;nbsp;Running&amp;nbsp; &amp;nbsp;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 32h&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;filebeat-5cpcn&amp;nbsp; &amp;nbsp;1/1&amp;nbsp; &amp;nbsp; &amp;nbsp;Running&amp;nbsp; &amp;nbsp;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 32h&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;filebeat-nwj2h&amp;nbsp; &amp;nbsp;1/1&amp;nbsp; &amp;nbsp; &amp;nbsp;Running&amp;nbsp; &amp;nbsp;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 32h&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;filebeat-4hs8j&amp;nbsp; &amp;nbsp;1/1&amp;nbsp; &amp;nbsp; &amp;nbsp;Running&amp;nbsp; &amp;nbsp;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 32h&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;Metricbeat&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ kubectl get pods -n kube-system -l k8s-app=metricbeat&lt;br /&gt;NAME&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;READY&amp;nbsp; &amp;nbsp;STATUS&amp;nbsp; &amp;nbsp; RESTARTS&amp;nbsp; &amp;nbsp;AGE&lt;br /&gt;metricbeat-pbfvs&amp;nbsp; &amp;nbsp;1/1&amp;nbsp; &amp;nbsp; &amp;nbsp;Running&amp;nbsp; &amp;nbsp;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 32h&lt;br /&gt;metricbeat-v5n8l&amp;nbsp; &amp;nbsp;1/1&amp;nbsp; &amp;nbsp; &amp;nbsp;Running&amp;nbsp; &amp;nbsp;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 32h&lt;br /&gt;metricbeat-cdfz9&amp;nbsp; &amp;nbsp;1/1&amp;nbsp; &amp;nbsp; &amp;nbsp;Running&amp;nbsp; &amp;nbsp;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 32h&lt;br /&gt;metricbeat-z85g8&amp;nbsp; &amp;nbsp;1/1&amp;nbsp; &amp;nbsp; &amp;nbsp;Running&amp;nbsp; &amp;nbsp;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 32h&lt;br /&gt;metricbeat-4fxhh&amp;nbsp; &amp;nbsp;1/1&amp;nbsp; &amp;nbsp; &amp;nbsp;Running&amp;nbsp; &amp;nbsp;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 32h&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;metricbeat-g25lh&amp;nbsp; &amp;nbsp;1/1&amp;nbsp; &amp;nbsp; &amp;nbsp;Running&amp;nbsp; &amp;nbsp;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 32h&lt;/span&gt;&lt;/div&gt;&lt;p style=&quot;text-align: left;&quot;&gt;6. At this point it&#39;s worth heading to Kibana Obserability page and from there you will see we have logs and metrics from our local k3d K8s cluster as shown below&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIWmUGWKw2ysysW_T37CoyXhKNIELvC2p79XkdG9ORVGQCaZwnz5pCSWCNeLrBKvD75vcYYm9CdHd0ujYBYBlqiGfOKizR7vCH_n-0kv7Ouc0LzPXGTmcRCkM9g5mE9I7kEq0P1UlrqKlb/s2048/Screen+Shot+2021-02-25+at+7.50.38+pm.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1064&quot; data-original-width=&quot;2048&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIWmUGWKw2ysysW_T37CoyXhKNIELvC2p79XkdG9ORVGQCaZwnz5pCSWCNeLrBKvD75vcYYm9CdHd0ujYBYBlqiGfOKizR7vCH_n-0kv7Ouc0LzPXGTmcRCkM9g5mE9I7kEq0P1UlrqKlb/s320/Screen+Shot+2021-02-25+at+7.50.38+pm.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p style=&quot;text-align: left;&quot;&gt;7. Now click on Metrics view and you can clearly see each of your k3d K8s nodes and by clicking on any node you get a very convenient view of metrics, process, metadata and more all from a single page. This was one of the new Elastic 7.11 features for Observability&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgs0ubUGdHKl8h7dztCZeu_SrLWinTQo5QPHYVxvT1zn5kt7hS1o6qEVc-kRxMlLamdUnYjqreUF7jJHMNdq8MWwAVb9c-IiLAga68S8lLOGZp4lxI9jYG8xTWUze4Ifv8cz0rKB_br4NSf/s2805/Screen+Shot+2021-02-25+at+7.55.02+pm.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1121&quot; data-original-width=&quot;2805&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgs0ubUGdHKl8h7dztCZeu_SrLWinTQo5QPHYVxvT1zn5kt7hS1o6qEVc-kRxMlLamdUnYjqreUF7jJHMNdq8MWwAVb9c-IiLAga68S8lLOGZp4lxI9jYG8xTWUze4Ifv8cz0rKB_br4NSf/s320/Screen+Shot+2021-02-25+at+7.55.02+pm.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;8. Finally to deploy a application to this K8s cluster and have Elastic APM instrument it&#39;s activity you can either use the example in the &lt;a href=&quot;https://www.elastic.co/guide/en/observability/7.11/monitor-kubernetes.html&quot; target=&quot;_blank&quot;&gt;tutorial link&lt;/a&gt; provided above OR just follow this very simple example to get this done&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;https://github.com/papicella/elastic-customer-api-rest&quot;&gt;https://github.com/papicella/elastic-customer-api-rest&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3D9Mb-76zYB_tdNHeqcnIu3MW5q8cx2xTo9jYvxQ699RrjSg6x_CKd8F6Y1bpv4RExNjOo5Q5DZHq5PYsBCYAstY7wottY3wBGT3EpsmYCasJMgIvR665eza3_OQSp61wZrDTmV4WBpMg/s3350/Screen+Shot+2021-02-25+at+7.59.45+pm.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;939&quot; data-original-width=&quot;3350&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3D9Mb-76zYB_tdNHeqcnIu3MW5q8cx2xTo9jYvxQ699RrjSg6x_CKd8F6Y1bpv4RExNjOo5Q5DZHq5PYsBCYAstY7wottY3wBGT3EpsmYCasJMgIvR665eza3_OQSp61wZrDTmV4WBpMg/s320/Screen+Shot+2021-02-25+at+7.59.45+pm.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;More Information&lt;/h2&gt;&lt;div style=&quot;text-align: left;&quot;&gt;k3d Home Page&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;https://k3d.io/&quot; target=&quot;_blank&quot;&gt;k3d&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;Elastic Cloud Service&lt;br /&gt;&lt;a href=&quot;https://cloud.elastic.co/&quot; target=&quot;_blank&quot;&gt;Elastic Cloud&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;http://feeds.feedburner.com/TheBlasFromPas&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblasfrompas.blogspot.com/feeds/8189651000504573804/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6527688743456205256/8189651000504573804' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/8189651000504573804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/8189651000504573804'/><link rel='alternate' type='text/html' href='http://theblasfrompas.blogspot.com/2021/02/elastic-cloud-with-observability-711.html' title='Elastic Cloud with Observability 7.11 Using Rancher k3d  for K8s '/><author><name>Pas Apicella</name><uri>http://www.blogger.com/profile/09389663166398991762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://wiki.r31skylineclub.com/images/thumb/d/d4/Gts2-side.jpg/100px-Gts2-side.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2YdmNZyYiXtCQuqGLUlP9pvnipvvAbbJYxWyaWF9hJAeu2Xy6HRKoAHmBNl_JbsH7NE_CD3xsvGo5H-_burXA2uXCcWHWn0mupr6zUczTtcjUw74tNmVA6l4Qvsf_prcrMRH7QFC-x8ig/s72-c/Screen+Shot+2021-02-25+at+7.13.43+pm.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6527688743456205256.post-811205990048251051</id><published>2021-02-03T12:11:00.002+11:00</published><updated>2021-02-03T12:11:55.521+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="K8s&#xa;Elastic Cloud&#xa;Elastic APM"/><title type='text'>Elastic APM with Java Applications on Kubernetes </title><content type='html'>&lt;p&gt;This GitHub demo is a Spring Boot application which accesses relational database with Spring Data JPA through a hypermedia-based RESTful front end. You can use the repo instructions to deploy to K8s and inject automatically an Elastic Agent for APM Monitoring with Elastic Observability.&lt;/p&gt;&lt;p&gt;There is no code changes required simply use an Init Container on K8s to instrument your application on Elastic APM server&amp;nbsp;as shown by this GitHub repo below.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/papicella/elastic-customer-api-rest&quot;&gt;https://github.com/papicella/elastic-customer-api-rest&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgH2riZ8CJHor4M3eZrSigGGJcsAWm7c-rZh446uYcCDmJA3kpwCawnYeLwzugvhqwB0r_ZeYE6mmtnoCKa4Fy4DDAfWvFnK-B215z6qsKkOhMehAi2OlciZv2IKTId4hL8phbrSso7RCzk/s2048/Screen+Shot+2021-02-03+at+12.07.32+pm.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1311&quot; data-original-width=&quot;2048&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgH2riZ8CJHor4M3eZrSigGGJcsAWm7c-rZh446uYcCDmJA3kpwCawnYeLwzugvhqwB0r_ZeYE6mmtnoCKa4Fy4DDAfWvFnK-B215z6qsKkOhMehAi2OlciZv2IKTId4hL8phbrSso7RCzk/s320/Screen+Shot+2021-02-03+at+12.07.32+pm.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Try it out on your Kubernetes cluster using &lt;a href=&quot;https://www.elastic.co/cloud/&quot; target=&quot;_blank&quot;&gt;Elastic Cloud&lt;/a&gt; using our free 14 day trial&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEje4W_-f2IJf-ExT3VDf77oP3fAdnc0NMAS5301PWG4dXO8WBNGchmMOJV0QTvcKvWZHGVy8lyEBvsfxT1rFYjkA2Cucdf6NsMuJEVf2eNjlYcHk4RNT14sTWk53W25Ui-NLhyphenhyphenuR89ZT9ck/s3620/K8s-init-apm-10.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;869&quot; data-original-width=&quot;3620&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEje4W_-f2IJf-ExT3VDf77oP3fAdnc0NMAS5301PWG4dXO8WBNGchmMOJV0QTvcKvWZHGVy8lyEBvsfxT1rFYjkA2Cucdf6NsMuJEVf2eNjlYcHk4RNT14sTWk53W25Ui-NLhyphenhyphenuR89ZT9ck/s320/K8s-init-apm-10.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCgR4IfqQ4YJEQiAdwBu0kUoGh1QY9RXEhT8iakgnZ8t3-359elWYr2z9CucfHc4wo4bacG7VrTNZJ_el3xoSkZgDcCI5jQ5W6s7RcLxhkLZgMNV8kbdUC32j37W1k0__EZrQeuOpIlDDQ/s2048/K8s-init-apm-9.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1284&quot; data-original-width=&quot;2048&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCgR4IfqQ4YJEQiAdwBu0kUoGh1QY9RXEhT8iakgnZ8t3-359elWYr2z9CucfHc4wo4bacG7VrTNZJ_el3xoSkZgDcCI5jQ5W6s7RcLxhkLZgMNV8kbdUC32j37W1k0__EZrQeuOpIlDDQ/s320/K8s-init-apm-9.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbGJXyFT0lt7MXGUnuhtF-G5Yw2lBkIjP500Q9LPv00Zta8TOfhs0PcZJ7Wh6tQ9yRlYk4hokpF-nKNtn22jFiOG1o1KxVsSaf8W64XBOz8hqvHqmaYnjofTrsYestGRORJP0ZvaONtA8E/s2048/K8s-init-apm-8.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1574&quot; data-original-width=&quot;2048&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbGJXyFT0lt7MXGUnuhtF-G5Yw2lBkIjP500Q9LPv00Zta8TOfhs0PcZJ7Wh6tQ9yRlYk4hokpF-nKNtn22jFiOG1o1KxVsSaf8W64XBOz8hqvHqmaYnjofTrsYestGRORJP0ZvaONtA8E/s320/K8s-init-apm-8.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-wNY_3d1WbgxjghbFLjHWA4SPMpIphk3v5JQJvlPBLnWbltLryfa5dDlImSLKQl1CJOUV66iU89rMSUlo9jyWi9KT0N6cjJJhBoFVCw6A-Hm7my_xqnsb_8QLmtYjenZIyK2gJYpS9s_5/s2048/K8s-init-apm-7.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1158&quot; data-original-width=&quot;2048&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-wNY_3d1WbgxjghbFLjHWA4SPMpIphk3v5JQJvlPBLnWbltLryfa5dDlImSLKQl1CJOUV66iU89rMSUlo9jyWi9KT0N6cjJJhBoFVCw6A-Hm7my_xqnsb_8QLmtYjenZIyK2gJYpS9s_5/s320/K8s-init-apm-7.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEim_8Qug3T89bQfvPUzDD766dAWwDi0E3nSKWDtz-7Yh3QyIItBaJt2YVYmAko1xslXVGLyA270DY6zPbGkOy-QC0xQL6vghNqERORkpJ7_FolPwEpzJsM8sAodGY8Z0GdPL7boJg4MYauE/s3481/K8s-init-apm-6.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;904&quot; data-original-width=&quot;3481&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEim_8Qug3T89bQfvPUzDD766dAWwDi0E3nSKWDtz-7Yh3QyIItBaJt2YVYmAko1xslXVGLyA270DY6zPbGkOy-QC0xQL6vghNqERORkpJ7_FolPwEpzJsM8sAodGY8Z0GdPL7boJg4MYauE/s320/K8s-init-apm-6.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjERCvYIjU1QtfQ_VNRg3wa-0lTKgcB6ZaLsninYXQ5bePGxdjVVJLqtHfRSYVNsafvHwQrf95utpw9OZYL0iJ_3mbwasBzaZk9f7NzLuOTO6n73YE13UViTMBKfv6p8vvJOe1DDYLtEsuS/s2774/K8s-init-apm-5.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1134&quot; data-original-width=&quot;2774&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjERCvYIjU1QtfQ_VNRg3wa-0lTKgcB6ZaLsninYXQ5bePGxdjVVJLqtHfRSYVNsafvHwQrf95utpw9OZYL0iJ_3mbwasBzaZk9f7NzLuOTO6n73YE13UViTMBKfv6p8vvJOe1DDYLtEsuS/s320/K8s-init-apm-5.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsWCaz8xKJ8Ljc4psBgBP9cPE23Yj0Yu4b8fVVnoppCMkafhcHzPIUCMqD5m5_Ebwo6Efy9wtYoWnLlgJbiaLhPTcrx9WDg6uFrnAejeV2TdgHrBGxIO2VIX5bc4ELxnQ443F7negkw9rc/s2048/K8s-init-apm-4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1289&quot; data-original-width=&quot;2048&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsWCaz8xKJ8Ljc4psBgBP9cPE23Yj0Yu4b8fVVnoppCMkafhcHzPIUCMqD5m5_Ebwo6Efy9wtYoWnLlgJbiaLhPTcrx9WDg6uFrnAejeV2TdgHrBGxIO2VIX5bc4ELxnQ443F7negkw9rc/s320/K8s-init-apm-4.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipcTAPWY0yottrPVtuim-5EMpgMyS_vKeRBN9XjjsC-e6frYPOKzSu7dwrR-fWoDW1G7YEuIbaZ0dy9jp0sC_CDuAQzOu6Pbee0rq8sf8r8LZT9uYciZHL4ugykCUFthCi9la-LdcodbSS/s3378/K8s-init-apm-3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;931&quot; data-original-width=&quot;3378&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipcTAPWY0yottrPVtuim-5EMpgMyS_vKeRBN9XjjsC-e6frYPOKzSu7dwrR-fWoDW1G7YEuIbaZ0dy9jp0sC_CDuAQzOu6Pbee0rq8sf8r8LZT9uYciZHL4ugykCUFthCi9la-LdcodbSS/s320/K8s-init-apm-3.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;http://feeds.feedburner.com/TheBlasFromPas&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblasfrompas.blogspot.com/feeds/811205990048251051/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6527688743456205256/811205990048251051' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/811205990048251051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/811205990048251051'/><link rel='alternate' type='text/html' href='http://theblasfrompas.blogspot.com/2021/02/elastic-apm-with-java-applications-on.html' title='Elastic APM with Java Applications on Kubernetes '/><author><name>Pas Apicella</name><uri>http://www.blogger.com/profile/09389663166398991762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://wiki.r31skylineclub.com/images/thumb/d/d4/Gts2-side.jpg/100px-Gts2-side.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgH2riZ8CJHor4M3eZrSigGGJcsAWm7c-rZh446uYcCDmJA3kpwCawnYeLwzugvhqwB0r_ZeYE6mmtnoCKa4Fy4DDAfWvFnK-B215z6qsKkOhMehAi2OlciZv2IKTId4hL8phbrSso7RCzk/s72-c/Screen+Shot+2021-02-03+at+12.07.32+pm.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6527688743456205256.post-6618202043062913958</id><published>2020-12-29T11:41:00.003+11:00</published><updated>2021-02-05T11:11:39.330+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AFL"/><category scheme="http://www.blogger.com/atom/ns#" term="Elasticsearch"/><title type='text'>Loading Australian Football League (AFL) Data into the Elastic Stack with some cool visulaizations</title><content type='html'>&lt;p&gt;I decided to load some AFL data into the Elastic Stack and do some basic visualisations. I loaded data for all home and away plus finals games since 2017 so four seasons in total. Follow below if you want to do the same.&amp;nbsp;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Steps&lt;/h2&gt;&lt;p&gt;&lt;span style=&quot;color: #e69138;&quot;&gt;&lt;i&gt;Note: We already have Elasticsearch cluster running for this demo&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;brush: json&quot;&gt;$ curl -u &quot;elastic:welcome1&quot; localhost:9200
{
  &quot;name&quot; : &quot;node1&quot;,
  &quot;cluster_name&quot; : &quot;apples-cluster&quot;,
  &quot;cluster_uuid&quot; : &quot;hJrp2eJaRGCfBt7Zg_-EJQ&quot;,
  &quot;version&quot; : {
    &quot;number&quot; : &quot;7.10.0&quot;,
    &quot;build_flavor&quot; : &quot;default&quot;,
    &quot;build_type&quot; : &quot;tar&quot;,
    &quot;build_hash&quot; : &quot;51e9d6f22758d0374a0f3f5c6e8f3a7997850f96&quot;,
    &quot;build_date&quot; : &quot;2020-11-09T21:30:33.964949Z&quot;,
    &quot;build_snapshot&quot; : false,
    &quot;lucene_version&quot; : &quot;8.7.0&quot;,
    &quot;minimum_wire_compatibility_version&quot; : &quot;6.8.0&quot;,
    &quot;minimum_index_compatibility_version&quot; : &quot;6.0.0-beta1&quot;
  },
  &quot;tagline&quot; : &quot;You Know, for Search&quot;
}  
&lt;/pre&gt; &lt;p&gt;&lt;/p&gt;&lt;p&gt;First I need the data loaded into the Elastic Stack I did that using &lt;a href=&quot;https://api.squiggle.com.au/&quot; target=&quot;_blank&quot;&gt;Squiggle API&lt;/a&gt; which you would do as follows&lt;/p&gt;&lt;p&gt;1. I use &lt;a href=&quot;https://httpie.io/&quot; target=&quot;_blank&quot;&gt;HTTPie&lt;/a&gt; rather then curl.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;http &quot;https://api.squiggle.com.au/?q=games;complete=100&quot; &amp;gt; games-2017-2020.json&lt;/span&gt;&lt;/p&gt;&lt;p&gt;2. Now this data itself needs to be altered slightly so I can BULK load it into Elasticsearch cluster and I do that as follows. I use JQ to do this.&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ cat games-2017-2020.json | jq -c &#39;.games[] | {&quot;index&quot;: {&quot;_id&quot;: .id}}, .&#39; &amp;gt; converted-games-2017-2020.json&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Snippet I what the JSON file now looks like&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;{&quot;index&quot;:{&quot;_id&quot;:1}}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;{&quot;round&quot;:1,&quot;hgoals&quot;:14,&quot;roundname&quot;:&quot;Round 1&quot;,&quot;hteamid&quot;:3,&quot;hscore&quot;:89,&quot;winner&quot;:&quot;Richmond&quot;,&quot;ateam&quot;:&quot;Richmond&quot;,&quot;hbehinds&quot;:5,&quot;venue&quot;:&quot;M.C.G.&quot;,&quot;year&quot;:2017,&quot;complete&quot;:100,&quot;id&quot;:1,&quot;localtime&quot;:&quot;2017-03-23 19:20:00&quot;,&quot;agoals&quot;:20,&quot;date&quot;:&quot;2017-03-23 19:20:00&quot;,&quot;hteam&quot;:&quot;Carlton&quot;,&quot;updated&quot;:&quot;2017-04-15 15:59:16&quot;,&quot;tz&quot;:&quot;+11:00&quot;,&quot;ascore&quot;:132,&quot;ateamid&quot;:14,&quot;winnerteamid&quot;:14,&quot;is_grand_final&quot;:0,&quot;abehinds&quot;:12,&quot;is_final&quot;:0}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;{&quot;index&quot;:{&quot;_id&quot;:2}}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;{&quot;date&quot;:&quot;2017-03-24 19:50:00&quot;,&quot;agoals&quot;:15,&quot;ateamid&quot;:18,&quot;winnerteamid&quot;:18,&quot;hteam&quot;:&quot;Collingwood&quot;,&quot;updated&quot;:&quot;2017-04-15 15:59:16&quot;,&quot;tz&quot;:&quot;+11:00&quot;,&quot;ascore&quot;:100,&quot;is_grand_final&quot;:0,&quot;abehinds&quot;:10,&quot;is_final&quot;:0,&quot;round&quot;:1,&quot;hgoals&quot;:12,&quot;hscore&quot;:86,&quot;winner&quot;:&quot;Western Bulldogs&quot;,&quot;ateam&quot;:&quot;Western Bulldogs&quot;,&quot;roundname&quot;:&quot;Round 1&quot;,&quot;hteamid&quot;:4,&quot;hbehinds&quot;:14,&quot;venue&quot;:&quot;M.C.G.&quot;,&quot;year&quot;:2017,&quot;complete&quot;:100,&quot;id&quot;:2,&quot;localtime&quot;:&quot;2017-03-24 19:50:00&quot;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;{&quot;index&quot;:{&quot;_id&quot;:3}}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;{&quot;hscore&quot;:82,&quot;ateam&quot;:&quot;Port Adelaide&quot;,&quot;winner&quot;:&quot;Port Adelaide&quot;,&quot;roundname&quot;:&quot;Round 1&quot;,&quot;hteamid&quot;:16,&quot;round&quot;:1,&quot;hgoals&quot;:12,&quot;complete&quot;:100,&quot;id&quot;:3,&quot;localtime&quot;:&quot;2017-03-25 16:35:00&quot;,&quot;venue&quot;:&quot;S.C.G.&quot;,&quot;hbehinds&quot;:10,&quot;year&quot;:2017,&quot;ateamid&quot;:13,&quot;winnerteamid&quot;:13,&quot;updated&quot;:&quot;2017-04-15 15:59:16&quot;,&quot;hteam&quot;:&quot;Sydney&quot;,&quot;tz&quot;:&quot;+11:00&quot;,&quot;ascore&quot;:110,&quot;date&quot;:&quot;2017-03-25 16:35:00&quot;,&quot;agoals&quot;:17,&quot;is_final&quot;:0,&quot;is_grand_final&quot;:0,&quot;abehinds&quot;:8}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Load data into Elasticsearch cluster as follows&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ curl -u &quot;elastic:welcome1&quot; -H &quot;Content-Type: application/json&quot; -XPOST &quot;localhost:9200/afl_games/_bulk?pretty&amp;amp;refresh&quot;&amp;nbsp; --data-binary &quot;@converted-games-2017-2020.json&quot;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;3. Using DevTools with Kibana we can run a query as follows&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;Question:&amp;nbsp;Get each teams winning games for the season 2020 before finals - Final Ladder&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Query:&lt;/b&gt;&lt;/p&gt;&lt;pre class=&quot;brush: json&quot;&gt;GET afl_games/_search
{
  &quot;size&quot;: 0, 
  &quot;query&quot;: {
      &quot;bool&quot;: {
        &quot;must&quot;: [
          {
            &quot;match&quot;: {
              &quot;year&quot;: 2020
            }
          },
          {
            &quot;match&quot;: {
              &quot;is_final&quot;: 0
            }
          }
        ]
      }
    }, 
    &quot;aggs&quot;: {
      &quot;group_by_winner&quot;: {
        &quot;terms&quot;: {
          &quot;field&quot;: &quot;winner.keyword&quot;,
          &quot;size&quot;: 20
        }
      }
    }
} 
&lt;/pre&gt; &lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Results:&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;pre class=&quot;brush: json&quot;&gt;Results  
{
  &quot;took&quot; : 2,
  &quot;timed_out&quot; : false,
  &quot;_shards&quot; : {
    &quot;total&quot; : 1,
    &quot;successful&quot; : 1,
    &quot;skipped&quot; : 0,
    &quot;failed&quot; : 0
  },
  &quot;hits&quot; : {
    &quot;total&quot; : {
      &quot;value&quot; : 153,
      &quot;relation&quot; : &quot;eq&quot;
    },
    &quot;max_score&quot; : null,
    &quot;hits&quot; : [ ]
  },
  &quot;aggregations&quot; : {
    &quot;group_by_winner&quot; : {
      &quot;doc_count_error_upper_bound&quot; : 0,
      &quot;sum_other_doc_count&quot; : 0,
      &quot;buckets&quot; : [
        {
          &quot;key&quot; : &quot;Brisbane Lions&quot;,
          &quot;doc_count&quot; : 14
        },
        {
          &quot;key&quot; : &quot;Port Adelaide&quot;,
          &quot;doc_count&quot; : 14
        },
        {
          &quot;key&quot; : &quot;Geelong&quot;,
          &quot;doc_count&quot; : 12
        },
        {
          &quot;key&quot; : &quot;Richmond&quot;,
          &quot;doc_count&quot; : 12
        },
        {
          &quot;key&quot; : &quot;West Coast&quot;,
          &quot;doc_count&quot; : 12
        },
        {
          &quot;key&quot; : &quot;St Kilda&quot;,
          &quot;doc_count&quot; : 10
        },
        {
          &quot;key&quot; : &quot;Western Bulldogs&quot;,
          &quot;doc_count&quot; : 10
        },
        {
          &quot;key&quot; : &quot;Collingwood&quot;,
          &quot;doc_count&quot; : 9
        },
        {
          &quot;key&quot; : &quot;Melbourne&quot;,
          &quot;doc_count&quot; : 9
        },
        {
          &quot;key&quot; : &quot;Greater Western Sydney&quot;,
          &quot;doc_count&quot; : 8
        },
        {
          &quot;key&quot; : &quot;Carlton&quot;,
          &quot;doc_count&quot; : 7
        },
        {
          &quot;key&quot; : &quot;Fremantle&quot;,
          &quot;doc_count&quot; : 7
        },
        {
          &quot;key&quot; : &quot;Essendon&quot;,
          &quot;doc_count&quot; : 6
        },
        {
          &quot;key&quot; : &quot;Gold Coast&quot;,
          &quot;doc_count&quot; : 5
        },
        {
          &quot;key&quot; : &quot;Hawthorn&quot;,
          &quot;doc_count&quot; : 5
        },
        {
          &quot;key&quot; : &quot;Sydney&quot;,
          &quot;doc_count&quot; : 5
        },
        {
          &quot;key&quot; : &quot;Adelaide&quot;,
          &quot;doc_count&quot; : 3
        },
        {
          &quot;key&quot; : &quot;North Melbourne&quot;,
          &quot;doc_count&quot; : 3
        }
      ]
    }
  }
}
&lt;/pre&gt; &lt;p&gt;&lt;/p&gt;&lt;p&gt;4. Finally using &lt;a href=&quot;https://www.elastic.co/kibana/kibana-lens&quot; target=&quot;_blank&quot;&gt;Kibana Lens &lt;/a&gt;to easily visualize this data using a Kibana Dasboard&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsT1hoCj12_wdlU9baXsO_et2_KeAZIS_jqlgwU3i-xpDb6Wt2Mi-5W_9zDkdvPahbsVVHRugRAWKgvdTvBjoCUrUdgHVuYMUDEmCEEkCeG2lS91DbaUU6AVdU_9epkUxd8JSWjcPTbGym/s2048/Screen+Shot+2020-12-26+at+12.14.33+pm.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1074&quot; data-original-width=&quot;2048&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsT1hoCj12_wdlU9baXsO_et2_KeAZIS_jqlgwU3i-xpDb6Wt2Mi-5W_9zDkdvPahbsVVHRugRAWKgvdTvBjoCUrUdgHVuYMUDEmCEEkCeG2lS91DbaUU6AVdU_9epkUxd8JSWjcPTbGym/s320/Screen+Shot+2020-12-26+at+12.14.33+pm.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Of course you could do much more plus load more data from Squiggle and with the power of &lt;a href=&quot;https://www.elastic.co/kibana&quot; target=&quot;_blank&quot;&gt;Kibana&lt;/a&gt; feel free to create your own visualizations.&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;More Information&lt;/h2&gt;&lt;p&gt;Squiggle API&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://api.squiggle.com.au/&quot;&gt;https://api.squiggle.com.au/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Getting Started with the Elastic Stack&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.elastic.co/guide/en/elasticsearch/reference/current/getting-started.html&quot;&gt;https://www.elastic.co/guide/en/elasticsearch/reference/current/getting-started.html&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;http://feeds.feedburner.com/TheBlasFromPas&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblasfrompas.blogspot.com/feeds/6618202043062913958/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6527688743456205256/6618202043062913958' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/6618202043062913958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/6618202043062913958'/><link rel='alternate' type='text/html' href='http://theblasfrompas.blogspot.com/2020/12/loading-australian-football-league-afl.html' title='Loading Australian Football League (AFL) Data into the Elastic Stack with some cool visulaizations'/><author><name>Pas Apicella</name><uri>http://www.blogger.com/profile/09389663166398991762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://wiki.r31skylineclub.com/images/thumb/d/d4/Gts2-side.jpg/100px-Gts2-side.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsT1hoCj12_wdlU9baXsO_et2_KeAZIS_jqlgwU3i-xpDb6Wt2Mi-5W_9zDkdvPahbsVVHRugRAWKgvdTvBjoCUrUdgHVuYMUDEmCEEkCeG2lS91DbaUU6AVdU_9epkUxd8JSWjcPTbGym/s72-c/Screen+Shot+2020-12-26+at+12.14.33+pm.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6527688743456205256.post-3717799309890705986</id><published>2020-12-22T20:08:00.002+11:00</published><updated>2020-12-22T20:08:33.888+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ECK"/><category scheme="http://www.blogger.com/atom/ns#" term="TKG"/><category scheme="http://www.blogger.com/atom/ns#" term="TKGI"/><category scheme="http://www.blogger.com/atom/ns#" term="VMware Tanzu"/><title type='text'>VMware Solutions Hub - Elastic Cloud on Kubernetes - the official Elasticsearch Operator from the creators</title><content type='html'>&lt;p&gt;Proud to have worked on this with the VMware Tanzu team and Elastic team to add this to VMware Solution Hub page clearly highlighting what the Elastic Stack on Kubernetes really means.&lt;/p&gt;&lt;p&gt;Do you need to run your Elastic Stack on a certified Kubernetes distribution, bolstered
 by the global Kubernetes community allowing you to focus on delivering 
innovative applications powered by Elastic?&lt;/p&gt;&lt;p&gt;If so click below to get started:&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://tanzu.vmware.com/solutions-hub/data-management/elastic&quot;&gt;https://tanzu.vmware.com/solutions-hub/data-management/elastic&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;More Information&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://tanzu.vmware.com/solutions-hub/data-management/elastic&quot;&gt;https://tanzu.vmware.com/solutions-hub/data-management/elastic&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;http://feeds.feedburner.com/TheBlasFromPas&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblasfrompas.blogspot.com/feeds/3717799309890705986/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6527688743456205256/3717799309890705986' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/3717799309890705986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/3717799309890705986'/><link rel='alternate' type='text/html' href='http://theblasfrompas.blogspot.com/2020/12/vmware-solutions-hub-elastic-cloud-on.html' title='VMware Solutions Hub - Elastic Cloud on Kubernetes - the official Elasticsearch Operator from the creators'/><author><name>Pas Apicella</name><uri>http://www.blogger.com/profile/09389663166398991762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://wiki.r31skylineclub.com/images/thumb/d/d4/Gts2-side.jpg/100px-Gts2-side.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6527688743456205256.post-6945866993818125142</id><published>2020-10-28T09:18:00.003+11:00</published><updated>2020-10-28T09:18:53.685+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Kafka"/><category scheme="http://www.blogger.com/atom/ns#" term="KUbernetes"/><category scheme="http://www.blogger.com/atom/ns#" term="VMworld"/><title type='text'>How to Become a Kubernetes Admin from the Comfort of Your vSphere</title><content type='html'>&lt;p&gt;&amp;nbsp;My Talk at VMworld 2020 with Olive power can be found here.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Talk Details&lt;/b&gt;&lt;/p&gt;&lt;p&gt;In this session, we will walk through the integration of VMware vSphere and Kubernetes, and how this union of technologies can fundamentally change how virtual infrastructure and operational engineers view the management of Kubernetes platforms. We will demonstrate the capability of vSphere to host Kubernetes clusters internally, allocate capacity to those clusters, and monitor them side by side with virtual machines (VMs). We will talk about how extended vSphere functionality eases the transition of enterprises to running yet another platform (Kubernetes) by treating all managed endpoints—be they VMs, Kubernetes clusters or pods—as one platform. We want to demonstrate that platforms for running modern applications can be facilitated through the intuitive interface of vSphere and its ecosystem of automation tooling&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.vmworld.com/en/video-library/search.html#text=%22KUB2038%22&amp;amp;year=2020&quot;&gt;https://www.vmworld.com/en/video-library/search.html#text=%22KUB2038%22&amp;amp;year=2020&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;http://feeds.feedburner.com/TheBlasFromPas&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblasfrompas.blogspot.com/feeds/6945866993818125142/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6527688743456205256/6945866993818125142' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/6945866993818125142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/6945866993818125142'/><link rel='alternate' type='text/html' href='http://theblasfrompas.blogspot.com/2020/10/how-to-become-kubernetes-admin-from.html' title='How to Become a Kubernetes Admin from the Comfort of Your vSphere'/><author><name>Pas Apicella</name><uri>http://www.blogger.com/profile/09389663166398991762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://wiki.r31skylineclub.com/images/thumb/d/d4/Gts2-side.jpg/100px-Gts2-side.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6527688743456205256.post-8650895450344816597</id><published>2020-09-03T10:19:00.006+10:00</published><updated>2020-09-03T10:19:33.921+10:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Cloud Foundry"/><category scheme="http://www.blogger.com/atom/ns#" term="Cloud Native Buildpacks"/><category scheme="http://www.blogger.com/atom/ns#" term="Spring Boot"/><category scheme="http://www.blogger.com/atom/ns#" term="Tanzu Application Service for Kubernetes"/><title type='text'> java-cfenv : A library for accessing Cloud Foundry Services on the new Tanzu Application Service for Kubernetes</title><content type='html'>&lt;p&gt;
  The Spring Cloud Connectors library has been with us since the launch event of
  Cloud Foundry itself back in 2011. This library would create the required
  Spring Beans from bound VCAP_SERVICE ENV variable from a pushed Cloud Foundry
  Application such as connecting to databases for example. The java buildpack
  then replaces these bean definitions you had in your application with those
  created by the connector library through a feature called
  ‘auto-reconfiguration’
&lt;/p&gt;
&lt;p&gt;
  Auto-reconfiguration is great for getting started. However, it is not so great
  when you want more control, for example changing the size of the connection
  pool associated with a DataSource.
&lt;/p&gt;
&lt;p&gt;
  With the up coming
  &lt;a href=&quot;https://network.pivotal.io/products/tas-for-kubernetes/&quot; target=&quot;_blank&quot;&gt;Tanzu Application Service for Kubernetes&lt;/a&gt;
  the original Cloud Foundry buildpacks are now replaced with the new Tanzu
  Buildpacks which are based on the
  &lt;a href=&quot;https://buildpacks.io/&quot; target=&quot;_blank&quot;&gt;Cloud Native Buildpacks&lt;/a&gt;
  CNCF Sandbox project. As a result of this&amp;nbsp;auto-reconfiguration is no
  longer included in java cloud native buildpacks which means auto-configuration
  for the backing services is no longer available.
&lt;/p&gt;
&lt;p&gt;
  So is their another option for this? The answer is &quot;&lt;b&gt;Java CFEnv&lt;/b&gt;&quot;. This provide
  a simple API for retrieving credentials from the JSON strings contained inside
  the &lt;code&gt;&lt;b&gt;VCAP_SERVICES&lt;/b&gt;&lt;/code&gt; environment variable.
&lt;/p&gt;
&lt;p&gt;
  &lt;a href=&quot;https://github.com/pivotal-cf/java-cfenv&quot;&gt;https://github.com/pivotal-cf/java-cfenv&lt;/a&gt;
&lt;/p&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
  &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiufADUQazS8Nl8LCCze5cWBP6vCeGmQef-sSPoGO1UOMk6bgMV2G6x9TZenIm_ghAX-0-63mBkEuTdyCwRpMb34dQgle51M7VMenyXI2KJVGYxELt_Y1EyBgNsmwlxmLF4_DM5jVu2M3gZ/s1410/Screen+Shot+2020-09-03+at+10.06.25+am.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;920&quot; data-original-width=&quot;1410&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiufADUQazS8Nl8LCCze5cWBP6vCeGmQef-sSPoGO1UOMk6bgMV2G6x9TZenIm_ghAX-0-63mBkEuTdyCwRpMb34dQgle51M7VMenyXI2KJVGYxELt_Y1EyBgNsmwlxmLF4_DM5jVu2M3gZ/s640/Screen+Shot+2020-09-03+at+10.06.25+am.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;
  So if you after exactly how it worked previously all you need to do is add
  this maven dependancy to your project as shown below.&lt;/p&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;  
        &amp;lt;dependency&amp;gt;
            &amp;lt;groupId&amp;gt;io.pivotal.cfenv&amp;lt;/groupId&amp;gt;
            &amp;lt;artifactId&amp;gt;java-cfenv-boot&amp;lt;/artifactId&amp;gt;
        &amp;lt;/dependency&amp;gt;
&lt;/pre&gt; 
&lt;p&gt;Of course this new library is much more flexible then this and by using the class &lt;b&gt;CfEnv&lt;/b&gt; as the entry point to the API for accessing Cloud Foundry environment variables your free to&amp;nbsp;use the Spring Expression Language to invoke methods on the bean of type CfEnv to set properties for example plus more.&lt;/p&gt;
&lt;p&gt;For more information read the full blog post as per below&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://spring.io/blog/2019/02/15/introducing-java-cfenv-a-new-library-for-accessing-cloud-foundry-services&quot;&gt;https://spring.io/blog/2019/02/15/introducing-java-cfenv-a-new-library-for-accessing-cloud-foundry-services&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Finally this Spring Boot application is an example of using this new library with an application deployed to the new Tanzu Application Service for Kubernetes.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/papicella/spring-book-service&quot;&gt;https://github.com/papicella/spring-book-service&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVAdzDmG41DBk8sBLGQwo66B9xjtyNPICJzxZ9OErU5KYjDSmHfE8Q8XUolQ2Ukxk7mUtXhzO8VJBkkB7aH4JUK0E0VSrGj9hkamFtTBOhIdkMbIlLXiK3-Ff0oITQACnIDtnVHxHHMDsF/s1367/Screen+Shot+2020-09-03+at+10.16.51+am.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;884&quot; data-original-width=&quot;1367&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVAdzDmG41DBk8sBLGQwo66B9xjtyNPICJzxZ9OErU5KYjDSmHfE8Q8XUolQ2Ukxk7mUtXhzO8VJBkkB7aH4JUK0E0VSrGj9hkamFtTBOhIdkMbIlLXiK3-Ff0oITQACnIDtnVHxHHMDsF/s640/Screen+Shot+2020-09-03+at+10.16.51+am.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;More Information&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;
  1. Introducing java-cfenv: A new library for accessing Cloud Foundry Services
&lt;/p&gt;
&lt;p&gt;
  &lt;a href=&quot;https://spring.io/blog/2019/02/15/introducing-java-cfenv-a-new-library-for-accessing-cloud-foundry-services&quot;&gt;https://spring.io/blog/2019/02/15/introducing-java-cfenv-a-new-library-for-accessing-cloud-foundry-services&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;2. Java CFEnv GitHub Repo&lt;/p&gt;
&lt;p&gt;
  &lt;a href=&quot;https://github.com/pivotal-cf/java-cfenv#pushing-your-application-to-cloud-foundry&quot;&gt;https://github.com/pivotal-cf/java-cfenv#pushing-your-application-to-cloud-foundry&lt;/a&gt;
&lt;/p&gt;
&lt;div class=&quot;blogger-post-footer&quot;&gt;http://feeds.feedburner.com/TheBlasFromPas&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblasfrompas.blogspot.com/feeds/8650895450344816597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6527688743456205256/8650895450344816597' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/8650895450344816597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/8650895450344816597'/><link rel='alternate' type='text/html' href='http://theblasfrompas.blogspot.com/2020/09/java-cfenv-library-for-accessing-cloud.html' title=' java-cfenv : A library for accessing Cloud Foundry Services on the new Tanzu Application Service for Kubernetes'/><author><name>Pas Apicella</name><uri>http://www.blogger.com/profile/09389663166398991762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://wiki.r31skylineclub.com/images/thumb/d/d4/Gts2-side.jpg/100px-Gts2-side.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiufADUQazS8Nl8LCCze5cWBP6vCeGmQef-sSPoGO1UOMk6bgMV2G6x9TZenIm_ghAX-0-63mBkEuTdyCwRpMb34dQgle51M7VMenyXI2KJVGYxELt_Y1EyBgNsmwlxmLF4_DM5jVu2M3gZ/s72-c/Screen+Shot+2020-09-03+at+10.06.25+am.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6527688743456205256.post-1520926893385327734</id><published>2020-08-06T15:35:00.000+10:00</published><updated>2020-08-06T15:35:58.232+10:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="cf-for-k8s"/><category scheme="http://www.blogger.com/atom/ns#" term="Cloud Foundry"/><category scheme="http://www.blogger.com/atom/ns#" term="Service Broker"/><category scheme="http://www.blogger.com/atom/ns#" term="Tanzu Application Service for Kubernetes"/><category scheme="http://www.blogger.com/atom/ns#" term="TAS4K8s"/><title type='text'>Configure a MySQL Marketplace service for the new Tanzu Application Service on Kubernetes using Container Services Manager for VMware Tanzu</title><content type='html'>The following post shows how to configure a MySQL service into the new Tanzu
Application Service BETA version 0.3.0. For instructions on how to install
the&amp;nbsp;Container Services Manager for VMware Tanzu (KSM) see post below.
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
  &lt;a href=&quot;http://www.clue2solve.io/tanzu/2020/07/14/install-ksm-and-configure-the-cf-marketplace.html&quot;&gt;http://www.clue2solve.io/tanzu/2020/07/14/install-ksm-and-configure-the-cf-marketplace.html&lt;/a&gt;&lt;div&gt;
    &lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;b&gt;Steps&lt;/b&gt;&lt;/h2&gt;
    &lt;div&gt;
      It&#39;s assumed you have already installed KSM into your Kubernetes Cluster
      as shown below. If not please refer to the documentation to get this done
      first
    &lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;
      &lt;a href=&quot;https://docs.pivotal.io/ksm/0-10/installing.html&quot;&gt;https://docs.pivotal.io/ksm/0-10/installing.html&lt;/a&gt;
    &lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;pre class=&quot;brush: xml&quot;&gt;$ kubectl get all -n ksm
NAME                                  READY   STATUS    RESTARTS   AGE
pod/ksm-chartmuseum-78d5d5bfb-2ggdg   1/1     Running   0          15d
pod/ksm-ksm-broker-6db696894c-blvpp   1/1     Running   0          15d
pod/ksm-ksm-broker-6db696894c-mnshg   1/1     Running   0          15d
pod/ksm-ksm-daemon-587b6fd549-cc7sv   1/1     Running   1          15d
pod/ksm-ksm-daemon-587b6fd549-fgqx5   1/1     Running   1          15d
pod/ksm-postgresql-0                  1/1     Running   0          15d

NAME                              TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)        AGE
service/ksm-chartmuseum           ClusterIP      10.100.200.107   &amp;lt;none&amp;gt;          8080/TCP       15d
service/ksm-ksm-broker            LoadBalancer   10.100.200.229   10.195.93.188   80:30086/TCP   15d
service/ksm-ksm-daemon            LoadBalancer   10.100.200.222   10.195.93.179   80:31410/TCP   15d
service/ksm-postgresql            ClusterIP      10.100.200.213   &amp;lt;none&amp;gt;          5432/TCP       15d
service/ksm-postgresql-headless   ClusterIP      None             &amp;lt;none&amp;gt;          5432/TCP       15d

NAME                              READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/ksm-chartmuseum   1/1     1            1           15d
deployment.apps/ksm-ksm-broker    2/2     2            2           15d
deployment.apps/ksm-ksm-daemon    2/2     2            2           15d

NAME                                        DESIRED   CURRENT   READY   AGE
replicaset.apps/ksm-chartmuseum-78d5d5bfb   1         1         1       15d
replicaset.apps/ksm-ksm-broker-6db696894c   2         2         2       15d
replicaset.apps/ksm-ksm-broker-8645dfcf98   0         0         0       15d
replicaset.apps/ksm-ksm-daemon-587b6fd549   2         2         2       15d

NAME                              READY   AGE
statefulset.apps/ksm-postgresql   1/1     15d
&lt;/pre&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;
      1. let&#39;s start by getting the Broker IP address which when installed using
      LoadBalancer type can be retrieved as shown below.
    &lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;
      &lt;span style=&quot;color: #3d85c6;&quot;&gt;$ kubectl get service ksm-ksm-broker -n ksm
        -o=jsonpath=&#39;{@.status.loadBalancer.ingress[0].ip}&#39;&lt;/span&gt;
    &lt;/div&gt;
    &lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;10.195.93.188&lt;/span&gt;&lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;
      2. Upgrade your Helm release by running the following using the IP address
      from above
    &lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;$ export BROKER_IP=$(kubectl get service ksm-ksm-broker -n ksm
          -o=jsonpath=&#39;{@.status.loadBalancer.ingress[0].ip}&#39;)&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;$ helm upgrade ksm ./ksm -n ksm --reuse-values \&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; --set
          cf.brokerUrl=&quot;http://$BROKER_IP&quot; \&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; --set cf.brokerName=KSM
          \&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; --set
          cf.apiAddress=&quot;https://api.system.run.haas-210.pez.pivotal.io&quot; \&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; --set cf.username=&quot;admin&quot;
          \&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; --set
          cf.password=&quot;admin-password&quot;&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;
      3. Next we configure the ksm CLI. You can download the CLI from
      &lt;a href=&quot;https://docs.pivotal.io/ksm/0-10/installing.html#cli&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;
    &lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;&lt;b&gt;configure-ksm-cli.sh&lt;/b&gt;&lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;export KSM_IP=$(kubectl get service ksm-ksm-daemon -n ksm
          -o=jsonpath=&#39;{@.status.loadBalancer.ingress[0].ip}&#39;)&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;export KSM_TARGET=http://$KSM_IP:$(kubectl get svc ksm-ksm-daemon -n
          ksm -o=jsonpath=&#39;{@.spec.ports[0].port}&#39;)&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;export KSM_USER=admin&lt;/span&gt;&lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;export KSM_PASSWORD=$(kubectl get secret -n ksm ksm-ksm-daemon
          -o=jsonpath=&#39;{@.data.SECURITY_USER_PASSWORD}&#39; | base64 --decode)&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;4. Verify ksm CLI is configured correctly&lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;
      &lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ ksm version&lt;/span&gt;&lt;/div&gt;
      &lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;Client Version [0.10.80]&lt;/span&gt;&lt;/div&gt;
      &lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;Server Version [0.10.80]&lt;/span&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;
      5. Create a YAML file for the KSM service account and
      &lt;code&gt;ClusterRoleBinding&lt;/code&gt; using the following YAML:
    &lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;&lt;b&gt;ksm-sa.yml&lt;/b&gt;&lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;
      &lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;---&lt;/span&gt;&lt;/div&gt;
      &lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;apiVersion: v1&lt;/span&gt;&lt;/div&gt;
      &lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;kind: ServiceAccount&lt;/span&gt;&lt;/div&gt;
      &lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;metadata:&lt;/span&gt;&lt;/div&gt;
      &lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; name: ksm-admin&lt;/span&gt;&lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; namespace: kube-system&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;---&lt;/span&gt;&lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;apiVersion: rbac.authorization.k8s.io/v1beta1&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;kind: ClusterRoleBinding&lt;/span&gt;&lt;/div&gt;
      &lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;metadata:&lt;/span&gt;&lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; name: ksm-cluster-admin&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;roleRef:&lt;/span&gt;&lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; apiGroup: rbac.authorization.k8s.io&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; kind: ClusterRole&lt;/span&gt;&lt;/div&gt;
      &lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; name: cluster-admin&lt;/span&gt;&lt;/div&gt;
      &lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;subjects:&lt;/span&gt;&lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; - kind: ServiceAccount&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; name: ksm-admin&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; namespace: kube-system&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;Apply as follows&lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;
      &lt;span style=&quot;color: #3d85c6;&quot;&gt;$ kubectl apply -f&amp;nbsp;ksm-sa.yml&lt;/span&gt;
    &lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;
      6. You need a cluster credential file to register and set default
      Kubernetes clusters that is done as follows
    &lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;&lt;b&gt;cluster-creds.sh&lt;/b&gt;&lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;export kube_config=&quot;/Users/papicella/.kube/config&quot;&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;cluster=`grep current $kube_config|sed &quot;s/ //g&quot;|cut -d &quot;:&quot; -f
          2`&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;echo &quot;Using cluster $cluster&quot;&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;export server=`grep -B 2 &quot;name: $cluster&quot; $kube_config \&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; |grep server|sed &quot;s/ //g&quot;|sed &quot;s/^[^:]*://g&quot;`&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;export certificate=`grep -B 2 &quot;name: $cluster&quot; $kube_config \&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; |grep certificate|sed &quot;s/ //g&quot;|sed &quot;s/.*://&quot;`&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;export secret_name=$(kubectl get serviceaccount ksm-admin \&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp;--namespace=kube-system -o
          jsonpath=&#39;{.secrets[0].name}&#39;)&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;export secret_val=$(kubectl --namespace=kube-system get secret
          $secret_name \&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp;-o jsonpath=&#39;{.data.token}&#39;)&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;export secret_val=$(echo ${secret_val} | base64 --decode)&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;cat &amp;gt; cluster-creds.yaml &amp;lt;&amp;lt; EOF&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;token: ${secret_val}&lt;/span&gt;&lt;/div&gt;
      &lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;server: ${server}&lt;/span&gt;&lt;/div&gt;
      &lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;caData: ${certificate}&lt;/span&gt;&lt;/div&gt;
      &lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;EOF&lt;/span&gt;&lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;echo &quot;&quot;&lt;/span&gt;&lt;/div&gt;
      &lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;echo &quot;ready to roll!!!!&quot;&lt;/span&gt;&lt;/div&gt;
      &lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;echo &quot;&quot;&lt;/span&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;
      Before running this script it&#39;s best to make sure you have targeted the
      correct K8s cluster you wish to. You can run a command as follows to
      verify that
    &lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;$ kubectl config current-context&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;tas4k8s&lt;/span&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div&gt;&amp;nbsp;&lt;/div&gt;
    &lt;div&gt;7. Now we have a &quot;&lt;b&gt;cluster-creds.yaml&lt;/b&gt;&quot; file we can go ahead and
      register the Kubernetes cluster with KSM as follows&lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;$ ksm cluster register ksm-svcs ./cluster-creds.yaml&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;$ ksm cluster set-default ksm-svcs&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;Verify as follows:&lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;
      &lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ ksm cluster list&lt;/span&gt;&lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;CLUSTER NAME&lt;span style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;IP ADDRESS&amp;nbsp;
          &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
          &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
          &lt;span style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;DEFAULT&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;ksm-svcs&amp;nbsp; &amp;nbsp;
          &lt;span style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;https://tas4k8s.run.haas-210.pez.pivotal.io:8443&lt;span style=&quot;white-space: pre;&quot;&gt;
          &lt;/span&gt;true&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;
      8. Now we can go ahead and create a Marketplace offering for MySQL. To do
      that we will use the Bitnami MySQL chart as shown below
    &lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;$ git clone https://github.com/bitnami/charts.git&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;$ cd ./charts/bitnami/mysql&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
      &lt;div&gt;
        &lt;b&gt;** create bind.yaml as follows which is required so our service
          binding from Tanzu Application Service will inject the right JSON we
          are expecting or requiring at bind time **&lt;/b&gt;
      &lt;/div&gt;
      &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
      &lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ cat bind.yaml&lt;/span&gt;&lt;/div&gt;
      &lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;template: |&lt;/span&gt;&lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; local filterfunc(j) = std.length(std.findSubstr(&quot;mysql&quot;,
          j.name)) &amp;gt; 0;&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; local s1 = std.filter(filterfunc, $.services);&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; {&lt;/span&gt;&lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; hostname:
          s1[0].status.loadBalancer.ingress[0].ip,&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; name: s1[0].name,&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; jdbcUrl: &quot;jdbc:mysql://&quot; + self.hostname +
          &quot;/my_db?user=&quot; + self.username + &quot;&amp;amp;password=&quot; + self.password +
          &quot;&amp;amp;useSSL=false&quot;,&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; uri: &quot;mysql://&quot; + self.username + &quot;:&quot; + self.password +
          &quot;@&quot; + self.hostname + &quot;:&quot; + self.port + &quot;/my_db?reconnect=true&quot;,&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; password:
          $.secrets[0].data[&#39;mysql-root-password&#39;],&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; port: 3306,&lt;/span&gt;&lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; username: &quot;root&quot;&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ helm package .&lt;/span&gt;&lt;/div&gt;
      &lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;# cd ..&lt;/span&gt;&lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;$ ksm offer save ./mysql ./mysql/mysql-6.14.7.tgz&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;Verify MySQL is now part of the offer list as follows&lt;/div&gt;
    &lt;div&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;  
$ ksm offer list
MARKETPLACE NAME	INCLUDED CHARTS	VERSION	PLANS
rabbitmq        	rabbitmq       	6.18.1 	[persistent ephemeral]
mysql           	mysql          	6.14.7 	[default]
&lt;/pre&gt; 
    &lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;9. Now we need to login as an ADMIN user&lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;Verify you are logged in as admin user using the CF CLI:&lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;
      &lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ cf target&lt;/span&gt;&lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;api endpoint:&amp;nbsp;
          &amp;nbsp;https://api.system.run.haas-210.pez.pivotal.io&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;api version:&amp;nbsp; &amp;nbsp; 2.151.0&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;user:&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;admin&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;org:&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; system&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;space:&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; development&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;
      10. At this point you can see the KSM service broker registered with
      TAS4K8s as follows
    &lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;
      &lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ cf service-brokers&lt;/span&gt;&lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;Getting service brokers as admin...&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;name&amp;nbsp; &amp;nbsp;url&lt;/span&gt;&lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;KSM&amp;nbsp; &amp;nbsp; http://10.195.93.188&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;11. Enable access to the MySQL service as follows&lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;
      &lt;span style=&quot;color: #3d85c6;&quot;&gt;$ cf enable-service-access mysql&lt;/span&gt;
    &lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;Verify it&#39;s enabled:&lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;
      &lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ cf service-access&lt;/span&gt;&lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;Getting service access as admin...&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;broker: KSM&lt;/span&gt;&lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp;service&amp;nbsp; &amp;nbsp; plan&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
          &amp;nbsp;access&amp;nbsp; &amp;nbsp;orgs&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp;mysql&amp;nbsp; &amp;nbsp; &amp;nbsp; default&amp;nbsp; &amp;nbsp; &amp;nbsp;
          all&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp;rabbitmq&amp;nbsp; &amp;nbsp;ephemeral&amp;nbsp; &amp;nbsp; all&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp;rabbitmq&amp;nbsp; &amp;nbsp;persistent&amp;nbsp; &amp;nbsp;all&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;
      12. At this point it&#39;s best to log out of admin and log back in as a user
      that is not admin
    &lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;
      &lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ cf target&lt;/span&gt;&lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;api endpoint:&amp;nbsp;
          &amp;nbsp;https://api.system.run.haas-210.pez.pivotal.io&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;api version:&amp;nbsp; &amp;nbsp; 2.151.0&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;user:&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;pas&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;org:&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; apples-org&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;space:&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; development&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;13. Create a MySQL service as follows. I passing in some JSON to indicate
      that my K8s cluster support&#39;s a LoadBalancer type so use that as part of the
      creation of the service.&lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;
      &lt;span style=&quot;color: #3d85c6;&quot;&gt;$ cf create-service mysql default pas-mysql -c
        &#39;{&quot;service&quot;:{&quot;type&quot;:&quot;LoadBalancer&quot;}}&#39;&lt;/span&gt;
    &lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;
      14. Check that the service has created correctly it will take a few
      minutes
    &lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;
      &lt;div&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ cf services&lt;/span&gt;&lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;Getting services in org apples-org / space development as
          pas...&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;name&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; service&amp;nbsp; &amp;nbsp; plan&amp;nbsp;
          &amp;nbsp; &amp;nbsp; &amp;nbsp; bound apps&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; last
          operation&amp;nbsp; &amp;nbsp; &amp;nbsp;broker&amp;nbsp; &amp;nbsp;upgrade
          available&lt;/span&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;color: #3d85c6;&quot;&gt;pas-mysql&amp;nbsp; &amp;nbsp;mysql&amp;nbsp; &amp;nbsp; &amp;nbsp; default&amp;nbsp; &amp;nbsp;
          &amp;nbsp;my-springboot-app&amp;nbsp; &amp;nbsp;create succeeded&amp;nbsp;
          &amp;nbsp;KSM&amp;nbsp; &amp;nbsp; &amp;nbsp; no&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;
      15. Your service is created in it&#39;s own K8s namespace BUT that may not be
      the case at some point.&amp;nbsp;
    &lt;/div&gt;
    &lt;pre class=&quot;brush: xml&quot;&gt;$ kubectl get all -n ksm-2e526124-11a3-4d38-966c-b3ffd45471d7
NAME                            READY   STATUS    RESTARTS   AGE
pod/k-wqo5mubw-mysql-master-0   1/1     Running   0          15d
pod/k-wqo5mubw-mysql-slave-0    1/1     Running   0          15d

NAME                             TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)          AGE
service/k-wqo5mubw-mysql         LoadBalancer   10.100.200.12    10.195.93.192   3306:30563/TCP   15d
service/k-wqo5mubw-mysql-slave   LoadBalancer   10.100.200.130   10.195.93.191   3306:31982/TCP   15d

NAME                                       READY   AGE
statefulset.apps/k-wqo5mubw-mysql-master   1/1     15d
statefulset.apps/k-wqo5mubw-mysql-slave    1/1     15d
&lt;/pre&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;
      16. At this point we can now test our new MySQL service we created and use
      a Spring Boot application to test this out with.&amp;nbsp;
    &lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;
      The following GitHub repo can be used for that. Ignore the steps to create
      a service as you have already done that
    &lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;
      &lt;a href=&quot;https://github.com/papicella/spring-book-service&quot;&gt;https://github.com/papicella/spring-book-service&lt;/a&gt;
    &lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
      &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghU4C3wODqgjNe2sosnWCvK_lB1ldpdude1nItD8ii7Pi3s7Do2ofr0l1QSNgJVg_R_aL5OgWrHwlZIp1cmLjApANrNPPc9jdhY-BgeTf62gPXJnzYaIiqB0gY6yuFMb3Zww4ztLX2RPXL/s1613/Screen+Shot+2020-08-06+at+3.25.48+pm.png&quot; style=&quot;display: block; padding: 1em 0px;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;809&quot; data-original-width=&quot;1613&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghU4C3wODqgjNe2sosnWCvK_lB1ldpdude1nItD8ii7Pi3s7Do2ofr0l1QSNgJVg_R_aL5OgWrHwlZIp1cmLjApANrNPPc9jdhY-BgeTf62gPXJnzYaIiqB0gY6yuFMb3Zww4ztLX2RPXL/s640/Screen+Shot+2020-08-06+at+3.25.48+pm.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;
    &lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;Finally to define service plans see the link below&lt;/div&gt;
    &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;
      &lt;a href=&quot;https://docs.pivotal.io/ksm/0-10/prepare-offer.html#plans&quot;&gt;https://docs.pivotal.io/ksm/0-10/prepare-offer.html#plans&lt;/a&gt;&lt;/div&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;b&gt;More Information&lt;/b&gt;&lt;/h2&gt;&lt;/div&gt;
  &lt;div&gt;Container Services Manager(KSM)&lt;/div&gt;
  &lt;div&gt;
    &lt;a href=&quot;https://network.pivotal.io/products/container-services-manager/&quot;&gt;https://network.pivotal.io/products/container-services-manager/&lt;/a&gt;
  &lt;/div&gt;
  &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
  &lt;div&gt;Tanzu Application Service for Kubernetes&lt;/div&gt;
  &lt;div&gt;
    &lt;a href=&quot;https://network.pivotal.io/products/tas-for-kubernetes/&quot;&gt;https://network.pivotal.io/products/tas-for-kubernetes/&lt;/a&gt;
  &lt;/div&gt;
  &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;blogger-post-footer&quot;&gt;http://feeds.feedburner.com/TheBlasFromPas&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblasfrompas.blogspot.com/feeds/1520926893385327734/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6527688743456205256/1520926893385327734' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/1520926893385327734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/1520926893385327734'/><link rel='alternate' type='text/html' href='http://theblasfrompas.blogspot.com/2020/08/configure-mysql-marketplace-service-for.html' title='Configure a MySQL Marketplace service for the new Tanzu Application Service on Kubernetes using Container Services Manager for VMware Tanzu'/><author><name>Pas Apicella</name><uri>http://www.blogger.com/profile/09389663166398991762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://wiki.r31skylineclub.com/images/thumb/d/d4/Gts2-side.jpg/100px-Gts2-side.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghU4C3wODqgjNe2sosnWCvK_lB1ldpdude1nItD8ii7Pi3s7Do2ofr0l1QSNgJVg_R_aL5OgWrHwlZIp1cmLjApANrNPPc9jdhY-BgeTf62gPXJnzYaIiqB0gY6yuFMb3Zww4ztLX2RPXL/s72-c/Screen+Shot+2020-08-06+at+3.25.48+pm.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6527688743456205256.post-8219441671318641947</id><published>2020-08-03T13:45:00.003+10:00</published><updated>2020-08-03T13:45:35.828+10:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CNCF"/><category scheme="http://www.blogger.com/atom/ns#" term="k8s"/><category scheme="http://www.blogger.com/atom/ns#" term="Kafka"/><category scheme="http://www.blogger.com/atom/ns#" term="Strimzi"/><category scheme="http://www.blogger.com/atom/ns#" term="VMware Tanzu Kubernetes Grid Integrated Edition"/><title type='text'>Using CNCF Sandbox Project Strimzi for Kafka Clusters on VMware Tanzu Kubernetes Grid Integrated Edition (TKGI)</title><content type='html'>&lt;div&gt;
  Strimzi a
  &lt;a href=&quot;https://www.cncf.io/sandbox-projects/&quot; target=&quot;_blank&quot;&gt;CNCF sandbox project&lt;/a&gt;
  provides a way to run an Apache Kafka cluster on Kubernetes in various
  deployment configurations. In this post we will take a look at how to get this
  running on&amp;nbsp;VMware Tanzu Kubernetes Grid Integrated Edition (TKGI) and
  consume the Kafka cluster from a Springboot application.
&lt;/div&gt;
&lt;div&gt;
  &lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div&gt;
  If you have a K8s cluster that&#39;s all you need to follow along in this exampleI
  am using VMware Tanzu Kubernetes Grid Integrated Edition (TKGI) but you can
  use any K8s cluster you have such as GKE, AKS, EKS etc.
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;b&gt;Steps&lt;/b&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
  1. Installing Strimzi is pretty straight forward so we can do that as follows.
  I am using the namespace &quot;&lt;b&gt;kafka&lt;/b&gt;&quot; which needs to be created prior to
  running this command.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
  &lt;font color=&quot;#3d85c6&quot;&gt;kubectl apply -f &#39;https://strimzi.io/install/latest?namespace=kafka&#39; -n
    kafka&lt;/font&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
  2. Verify that the operator was installed correctly and we have a running POD
  as shown below
&lt;/div&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;  
$ kubectl get pods -n kafka
NAME                                                    READY   STATUS    RESTARTS   AGE
strimzi-cluster-operator-6c9d899778-4mdtg               1/1     Running   0          6d22h&lt;/pre&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
  3. Next let&#39;s ensure we have a default storage class for the cluster as shown
  below.
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
  &lt;div&gt;&lt;font color=&quot;#3d85c6&quot;&gt;$ kubectl get storageclass&lt;/font&gt;&lt;/div&gt;
  &lt;div&gt;
    &lt;font color=&quot;#3d85c6&quot;&gt;NAME&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;PROVISIONER&amp;nbsp;
      &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AGE&lt;/font&gt;
  &lt;/div&gt;
  &lt;div&gt;
    &lt;font color=&quot;#3d85c6&quot;&gt;fast (default)&amp;nbsp; &amp;nbsp;kubernetes.io/vsphere-volume&amp;nbsp;
      &amp;nbsp;47d&lt;/font&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
  4. Now at this point we are ready to create a Kafka cluster. For this example
  we will create a 3 node cluster defined in YML as follows.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;kafka-persistent-MULTI_NODE.yaml&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
  &lt;div&gt;&lt;font color=&quot;#3d85c6&quot;&gt;apiVersion: kafka.strimzi.io/v1beta1&lt;/font&gt;&lt;/div&gt;
  &lt;div&gt;&lt;font color=&quot;#3d85c6&quot;&gt;kind: Kafka&lt;/font&gt;&lt;/div&gt;
  &lt;div&gt;&lt;font color=&quot;#3d85c6&quot;&gt;metadata:&lt;/font&gt;&lt;/div&gt;
  &lt;div&gt;&lt;font color=&quot;#3d85c6&quot;&gt;&amp;nbsp; name: apples-kafka-cluster&lt;/font&gt;&lt;/div&gt;
  &lt;div&gt;&lt;font color=&quot;#3d85c6&quot;&gt;spec:&lt;/font&gt;&lt;/div&gt;
  &lt;div&gt;&lt;font color=&quot;#3d85c6&quot;&gt;&amp;nbsp; kafka:&lt;/font&gt;&lt;/div&gt;
  &lt;div&gt;&lt;font color=&quot;#3d85c6&quot;&gt;&amp;nbsp; &amp;nbsp; version: 2.5.0&lt;/font&gt;&lt;/div&gt;
  &lt;div&gt;&lt;font color=&quot;#3d85c6&quot;&gt;&amp;nbsp; &amp;nbsp; replicas: 3&lt;/font&gt;&lt;/div&gt;
  &lt;div&gt;&lt;font color=&quot;#3d85c6&quot;&gt;&amp;nbsp; &amp;nbsp; listeners:&lt;/font&gt;&lt;/div&gt;
  &lt;div&gt;&lt;font color=&quot;#3d85c6&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; external:&lt;/font&gt;&lt;/div&gt;
  &lt;div&gt;
    &lt;font color=&quot;#3d85c6&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; type: loadbalancer&lt;/font&gt;
  &lt;/div&gt;
  &lt;div&gt;&lt;font color=&quot;#3d85c6&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; tls: false&lt;/font&gt;&lt;/div&gt;
  &lt;div&gt;&lt;font color=&quot;#3d85c6&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; plain: {}&lt;/font&gt;&lt;/div&gt;
  &lt;div&gt;&lt;font color=&quot;#3d85c6&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; tls: {}&lt;/font&gt;&lt;/div&gt;
  &lt;div&gt;&lt;font color=&quot;#3d85c6&quot;&gt;&amp;nbsp; &amp;nbsp; config:&lt;/font&gt;&lt;/div&gt;
  &lt;div&gt;
    &lt;font color=&quot;#3d85c6&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; offsets.topic.replication.factor: 3&lt;/font&gt;
  &lt;/div&gt;
  &lt;div&gt;
    &lt;font color=&quot;#3d85c6&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; transaction.state.log.replication.factor: 3&lt;/font&gt;
  &lt;/div&gt;
  &lt;div&gt;
    &lt;font color=&quot;#3d85c6&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; transaction.state.log.min.isr: 2&lt;/font&gt;
  &lt;/div&gt;
  &lt;div&gt;
    &lt;font color=&quot;#3d85c6&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; log.message.format.version: &quot;2.5&quot;&lt;/font&gt;
  &lt;/div&gt;
  &lt;div&gt;&lt;font color=&quot;#3d85c6&quot;&gt;&amp;nbsp; &amp;nbsp; storage:&lt;/font&gt;&lt;/div&gt;
  &lt;div&gt;&lt;font color=&quot;#3d85c6&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; type: jbod&lt;/font&gt;&lt;/div&gt;
  &lt;div&gt;&lt;font color=&quot;#3d85c6&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; volumes:&lt;/font&gt;&lt;/div&gt;
  &lt;div&gt;&lt;font color=&quot;#3d85c6&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; - id: 0&lt;/font&gt;&lt;/div&gt;
  &lt;div&gt;
    &lt;font color=&quot;#3d85c6&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; type: persistent-claim&lt;/font&gt;
  &lt;/div&gt;
  &lt;div&gt;
    &lt;font color=&quot;#3d85c6&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; size: 100Gi&lt;/font&gt;
  &lt;/div&gt;
  &lt;div&gt;
    &lt;font color=&quot;#3d85c6&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; deleteClaim: false&lt;/font&gt;
  &lt;/div&gt;
  &lt;div&gt;&lt;font color=&quot;#3d85c6&quot;&gt;&amp;nbsp; zookeeper:&lt;/font&gt;&lt;/div&gt;
  &lt;div&gt;&lt;font color=&quot;#3d85c6&quot;&gt;&amp;nbsp; &amp;nbsp; replicas: 3&lt;/font&gt;&lt;/div&gt;
  &lt;div&gt;&lt;font color=&quot;#3d85c6&quot;&gt;&amp;nbsp; &amp;nbsp; storage:&lt;/font&gt;&lt;/div&gt;
  &lt;div&gt;
    &lt;font color=&quot;#3d85c6&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; type: persistent-claim&lt;/font&gt;
  &lt;/div&gt;
  &lt;div&gt;&lt;font color=&quot;#3d85c6&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; size: 100Gi&lt;/font&gt;&lt;/div&gt;
  &lt;div&gt;
    &lt;font color=&quot;#3d85c6&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; deleteClaim: false&lt;/font&gt;
  &lt;/div&gt;
  &lt;div&gt;&lt;font color=&quot;#3d85c6&quot;&gt;&amp;nbsp; entityOperator:&lt;/font&gt;&lt;/div&gt;
  &lt;div&gt;&lt;font color=&quot;#3d85c6&quot;&gt;&amp;nbsp; &amp;nbsp; topicOperator: {}&lt;/font&gt;&lt;/div&gt;
  &lt;div&gt;&lt;font color=&quot;#3d85c6&quot;&gt;&amp;nbsp; &amp;nbsp; userOperator: {}&lt;/font&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;Few things to note:&lt;/div&gt;
&lt;div&gt;
  &lt;ul style=&quot;text-align: left;&quot;&gt;
    &lt;li&gt;
      We have enable access to the cluster using the type LoadBalancer which
      means your K8s cluster needs to support such a Type
    &lt;/li&gt;
    &lt;li&gt;
      We need to create dynamic Persistence claim&#39;s in the cluster so ensure #3
      above is in place
    &lt;/li&gt;
    &lt;li&gt;We have disabled TLS given this is a demo&amp;nbsp;&lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
  5. Create the Kafka cluster as shown below ensuring we target the namespace
  &quot;&lt;b&gt;kafka&lt;/b&gt;&quot;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
  &lt;font color=&quot;#3d85c6&quot;&gt;$ kubectl apply -f&amp;nbsp;kafka-persistent-MULTI_NODE.yaml&amp;nbsp;-n
    kafka&lt;/font&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
  6. Now we can view the status/creation of our cluster one of two ways as shown
  below. You will need to wait a few minutes for everything to start up.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;Option 1:&lt;/b&gt;&lt;/div&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;  
$ kubectl get Kafka -n kafka
NAME                   DESIRED KAFKA REPLICAS   DESIRED ZK REPLICAS
apples-kafka-cluster   3                        3             1/1     Running   0          6d22h
&lt;/pre&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;Option 2:&lt;/b&gt;&lt;/div&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;  
$ kubectl get all -n kafka
NAME                                                        READY   STATUS    RESTARTS   AGE
pod/apples-kafka-cluster-entity-operator-58685b8fbd-r4wxc   3/3     Running   0          6d21h
pod/apples-kafka-cluster-kafka-0                            2/2     Running   0          6d21h
pod/apples-kafka-cluster-kafka-1                            2/2     Running   0          6d21h
pod/apples-kafka-cluster-kafka-2                            2/2     Running   0          6d21h
pod/apples-kafka-cluster-zookeeper-0                        1/1     Running   0          6d21h
pod/apples-kafka-cluster-zookeeper-1                        1/1     Running   0          6d21h
pod/apples-kafka-cluster-zookeeper-2                        1/1     Running   0          6d21h
pod/strimzi-cluster-operator-6c9d899778-4mdtg               1/1     Running   0          6d23h

NAME                                                    TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)                      AGE
service/apples-kafka-cluster-kafka-0                    LoadBalancer   10.100.200.90    10.195.93.200   9094:30362/TCP               6d21h
service/apples-kafka-cluster-kafka-1                    LoadBalancer   10.100.200.179   10.195.93.197   9094:32022/TCP               6d21h
service/apples-kafka-cluster-kafka-2                    LoadBalancer   10.100.200.155   10.195.93.201   9094:32277/TCP               6d21h
service/apples-kafka-cluster-kafka-bootstrap            ClusterIP      10.100.200.77    &amp;lt;none&amp;gt;          9091/TCP,9092/TCP,9093/TCP   6d21h
service/apples-kafka-cluster-kafka-brokers              ClusterIP      None             &amp;lt;none&amp;gt;          9091/TCP,9092/TCP,9093/TCP   6d21h
service/apples-kafka-cluster-kafka-external-bootstrap   LoadBalancer   10.100.200.58    10.195.93.196   9094:30735/TCP               6d21h
service/apples-kafka-cluster-zookeeper-client           ClusterIP      10.100.200.22    &amp;lt;none&amp;gt;          2181/TCP                     6d21h
service/apples-kafka-cluster-zookeeper-nodes            ClusterIP      None             &amp;lt;none&amp;gt;          2181/TCP,2888/TCP,3888/TCP   6d21h

NAME                                                   READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/apples-kafka-cluster-entity-operator   1/1     1            1           6d21h
deployment.apps/strimzi-cluster-operator               1/1     1            1           6d23h

NAME                                                              DESIRED   CURRENT   READY   AGE
replicaset.apps/apples-kafka-cluster-entity-operator-58685b8fbd   1         1         1       6d21h
replicaset.apps/strimzi-cluster-operator-6c9d899778               1         1         1       6d23h

NAME                                              READY   AGE
statefulset.apps/apples-kafka-cluster-kafka       3/3     6d21h
statefulset.apps/apples-kafka-cluster-zookeeper   3/3     6d21h                     3             1/1     Running   0          6d22h
&lt;/pre&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
  7. Our entry point into the cluster is a service of type LoadBalancer which we
  asked for as per our Kafka cluster YML config. To find the IP address we can
  run a command as follow using the cluster name from above.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
  &lt;div&gt;
    &lt;font color=&quot;#3d85c6&quot;&gt;$ kubectl get service -n kafka
      apples-kafka-cluster-kafka-external-bootstrap
      -o=jsonpath=&#39;{.status.loadBalancer.ingress[0].ip}{&quot;\n&quot;}&#39;&lt;/font&gt;
  &lt;/div&gt;
  &lt;div&gt;&lt;font color=&quot;#3d85c6&quot;&gt;10.195.93.196&lt;/font&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
  &lt;font color=&quot;#e69138&quot;&gt;Note: Make a not of this IP address as we will need it shortly&lt;/font&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
  8. Let&#39;s create a Kafka Topic using YML as follows. In this YML we actually
  ensure we are using the namespace &quot;&lt;b&gt;kafka&lt;/b&gt;&quot;.&amp;nbsp;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;create-kafka-topic.yaml&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
  &lt;div&gt;&lt;font color=&quot;#3d85c6&quot;&gt;apiVersion: kafka.strimzi.io/v1beta1&lt;/font&gt;&lt;/div&gt;
  &lt;div&gt;&lt;font color=&quot;#3d85c6&quot;&gt;kind: KafkaTopic&lt;/font&gt;&lt;/div&gt;
  &lt;div&gt;&lt;font color=&quot;#3d85c6&quot;&gt;metadata:&lt;/font&gt;&lt;/div&gt;
  &lt;div&gt;&lt;font color=&quot;#3d85c6&quot;&gt;&amp;nbsp; name: apples-topic&lt;/font&gt;&lt;/div&gt;
  &lt;div&gt;&lt;font color=&quot;#3d85c6&quot;&gt;&amp;nbsp; namespace: kafka&lt;/font&gt;&lt;/div&gt;
  &lt;div&gt;&lt;font color=&quot;#3d85c6&quot;&gt;&amp;nbsp; labels:&lt;/font&gt;&lt;/div&gt;
  &lt;div&gt;
    &lt;font color=&quot;#3d85c6&quot;&gt;&amp;nbsp; &amp;nbsp; strimzi.io/cluster: apples-kafka-cluster&lt;/font&gt;
  &lt;/div&gt;
  &lt;div&gt;&lt;font color=&quot;#3d85c6&quot;&gt;spec:&lt;/font&gt;&lt;/div&gt;
  &lt;div&gt;&lt;font color=&quot;#3d85c6&quot;&gt;&amp;nbsp; partitions: 1&lt;/font&gt;&lt;/div&gt;
  &lt;div&gt;&lt;font color=&quot;#3d85c6&quot;&gt;&amp;nbsp; replicas: 1&lt;/font&gt;&lt;/div&gt;
  &lt;div&gt;&lt;font color=&quot;#3d85c6&quot;&gt;&amp;nbsp; config:&lt;/font&gt;&lt;/div&gt;
  &lt;div&gt;&lt;font color=&quot;#3d85c6&quot;&gt;&amp;nbsp; &amp;nbsp; retention.ms: 7200000&lt;/font&gt;&lt;/div&gt;
  &lt;div&gt;
    &lt;font color=&quot;#3d85c6&quot;&gt;&amp;nbsp; &amp;nbsp; segment.bytes: 1073741824&lt;/font&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;9. Create a Kafka topic as shown below.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
  &lt;font color=&quot;#3d85c6&quot;&gt;$ kubectl apply -f create-kafka-topic.yaml&lt;/font&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;10. We can view the Kafka topics as shown below.&lt;/div&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;  
$ kubectl get KafkaTopic -n kafka
NAME                                                          PARTITIONS   REPLICATION FACTOR
apples-topic                                                  1            1
&lt;/pre&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
  11. Now at this point we ready to send some messages to our topic
  &quot;apples-topic&quot; as well as consume messages so to do that we are going to use a
  Springboot Application in fact two of them which exist on GitHub.
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
  &lt;a href=&quot;https://github.com/papicella/demo-kafka-producer&quot; target=&quot;_blank&quot;&gt;Producer Springboot&lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;
  &lt;a href=&quot;https://github.com/papicella/demo-kafka-consumer&quot; target=&quot;_blank&quot;&gt;Consumer Springboot&lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;Download or clone those onto your file system.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
  12.With both downloaded you will need to set the
  &lt;b&gt;spring.kafka.bootstrap-servers&lt;/b&gt; with the IP address we retrieved from #7
  above. That needs to be done in both GitHub downloaded/cloned repo&#39;s above.
  The file we need to edit for both repo&#39;s is as follows.&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;File: &lt;b&gt;src/main/resources/application.yml&lt;/b&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;Example:&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
  &lt;div&gt;&lt;font color=&quot;#3d85c6&quot;&gt;spring:&lt;/font&gt;&lt;/div&gt;
  &lt;div&gt;&lt;font color=&quot;#3d85c6&quot;&gt;&amp;nbsp; kafka:&lt;/font&gt;&lt;/div&gt;
  &lt;div&gt;
    &lt;font color=&quot;#3d85c6&quot;&gt;&amp;nbsp; &amp;nbsp; bootstrap-servers: IP-ADDRESS:9094&lt;/font&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color=&quot;#e69138&quot;&gt;
  Note: Make sure you do this for both downloaded repo
  &lt;b&gt;application.yml&lt;/b&gt; files
&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
  13. Now let&#39;s run the producer and consumer Springboot application using a
  command as follows in seperate terminal windows. One will use PORT 8080 while
  the other uses port 8081.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;$ ./mvnw spring-boot:run&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;Consumer:&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
  &lt;font color=&quot;#3d85c6&quot;&gt;papicella@papicella:~/pivotal/DemoProjects/spring-starter/pivotal/KAFKA/demo-kafka-producer$
    ./mvnw spring-boot:run&lt;/font&gt;
&lt;/div&gt;
&lt;div&gt;
  &lt;font color=&quot;#3d85c6&quot;&gt;&lt;br /&gt;&lt;/font&gt;
&lt;/div&gt;
&lt;div&gt;&lt;font color=&quot;#3d85c6&quot;&gt;...&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;
  &lt;div&gt;
    &lt;font color=&quot;#3d85c6&quot;&gt;2020-08-03 11:41:46.742&amp;nbsp; INFO 34025 --- [&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
      &amp;nbsp; &amp;nbsp;main] o.s.b.w.embedded.tomcat.TomcatWebServer&amp;nbsp; : Tomcat
      started on port(s): 8080 (http) with context path &#39;&#39;&lt;/font&gt;
  &lt;/div&gt;
  &lt;div&gt;
    &lt;font color=&quot;#3d85c6&quot;&gt;2020-08-03 11:41:46.754&amp;nbsp; INFO 34025 --- [&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
      &amp;nbsp; &amp;nbsp;main] a.a.t.k.DemoKafkaProducerApplication&amp;nbsp; &amp;nbsp;
      &amp;nbsp;: Started DemoKafkaProducerApplication in 1.775 seconds (JVM running
      for 2.102)&lt;/font&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  &lt;font color=&quot;#3d85c6&quot;&gt;&lt;br /&gt;&lt;/font&gt;
&lt;/div&gt;
&lt;div&gt;Producer:&lt;/div&gt;
&lt;div&gt;
  &lt;font color=&quot;#3d85c6&quot;&gt;&lt;br /&gt;&lt;/font&gt;
&lt;/div&gt;
&lt;div&gt;
  &lt;div&gt;
    &lt;font color=&quot;#3d85c6&quot;&gt;papicella@papicella:~/pivotal/DemoProjects/spring-starter/pivotal/KAFKA/demo-kafka-consumer$
      ./mvnw spring-boot:run&lt;/font&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
  &lt;font color=&quot;#3d85c6&quot;&gt;&lt;br /&gt;&lt;/font&gt;
&lt;/div&gt;
&lt;div&gt;&lt;font color=&quot;#3d85c6&quot;&gt;...&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;
  &lt;div&gt;
    &lt;font color=&quot;#3d85c6&quot;&gt;2020-08-03 11:43:53.423&amp;nbsp; INFO 34056 --- [&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
      &amp;nbsp; &amp;nbsp;main] o.s.b.w.embedded.tomcat.TomcatWebServer&amp;nbsp; : Tomcat
      started on port(s): 8081 (http) with context path &#39;&#39;&lt;/font&gt;
  &lt;/div&gt;
  &lt;div&gt;
    &lt;font color=&quot;#3d85c6&quot;&gt;2020-08-03 11:43:53.440&amp;nbsp; INFO 34056 --- [&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
      &amp;nbsp; &amp;nbsp;main] a.a.t.k.DemoKafkaConsumerApplication&amp;nbsp; &amp;nbsp;
      &amp;nbsp;: Started DemoKafkaConsumerApplication in 1.666 seconds (JVM running
      for 1.936)&lt;/font&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
  14. Start by opening up the the Producer UI by navigating to
  &lt;a href=&quot;http://localhost:8080/&quot;&gt;http://localhost:8080/&lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
  &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhyphenhyphenmnl_6OiB_9_Vgkf0ziyNKneRvQJVDGpnrdI_XPjYxXy9nOpbV27TSqUCC8Q1OD4dg2uO8-pw1CL01nP9Zf8s_v_3YOSZCJmA0-dD8e5WW2zCRUbalweGJvE0Bh_CyGotSIWz_YrHgJ_/s1377/Screen+Shot+2020-08-03+at+11.47.20+am.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;337&quot; data-original-width=&quot;1377&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhyphenhyphenmnl_6OiB_9_Vgkf0ziyNKneRvQJVDGpnrdI_XPjYxXy9nOpbV27TSqUCC8Q1OD4dg2uO8-pw1CL01nP9Zf8s_v_3YOSZCJmA0-dD8e5WW2zCRUbalweGJvE0Bh_CyGotSIWz_YrHgJ_/s640/Screen+Shot+2020-08-03+at+11.47.20+am.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
  15. Now let&#39;s not add any messages yet and also open up the Consumer UI by
  navigating to &lt;a href=&quot;http://localhost:8081/&quot;&gt;http://localhost:8081/&lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
  &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmlOQU1kv9lU80iJKLVU-eQfZ1yBcuIqSdPGpPLvgG93mILREdnKB65F8-me9s4VWA5Pv6iVIwnUvWfuXho_MifU86Us_ezUKn5dEWKCsG27Mwvq2UIMgiTdxawPUVkbOBjJaqRNF3GgCS/s1377/Screen+Shot+2020-08-03+at+11.49.01+am.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;353&quot; data-original-width=&quot;1377&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmlOQU1kv9lU80iJKLVU-eQfZ1yBcuIqSdPGpPLvgG93mILREdnKB65F8-me9s4VWA5Pv6iVIwnUvWfuXho_MifU86Us_ezUKn5dEWKCsG27Mwvq2UIMgiTdxawPUVkbOBjJaqRNF3GgCS/s640/Screen+Shot+2020-08-03+at+11.49.01+am.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
  &lt;font color=&quot;#e69138&quot;&gt;Note: This application will automatically refresh the page every 2 seconds
    to show which messages have been sent to the Kafka Topic&lt;/font&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
  16. Return to the Producer UI&amp;nbsp;&lt;a href=&quot;http://localhost:8080/&quot;&gt;http://localhost:8080/&lt;/a&gt;&amp;nbsp;and add two messages using whatever text you like as shown below.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
  &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-AvXSLJKmEmEQFO98HepF7C7c_GIFkV435w9QjRCw0ly7cBpoDAX4IhdvycpKHCBHf3LjHv1MVmrM3QR1sst9JKv7qTUr6HdmekA50WP8ha0PBKqM_gSLxRC6-haFhviKVBhnlnb1i4iH/s1373/Screen+Shot+2020-08-03+at+11.53.07+am.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;394&quot; data-original-width=&quot;1373&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-AvXSLJKmEmEQFO98HepF7C7c_GIFkV435w9QjRCw0ly7cBpoDAX4IhdvycpKHCBHf3LjHv1MVmrM3QR1sst9JKv7qTUr6HdmekA50WP8ha0PBKqM_gSLxRC6-haFhviKVBhnlnb1i4iH/s640/Screen+Shot+2020-08-03+at+11.53.07+am.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
  17. Return to the Consumer UI&amp;nbsp;&lt;a href=&quot;http://localhost:8081/&quot;&gt;http://localhost:8081/&lt;/a&gt;&amp;nbsp;to verify the two messages sent to the Kafka topic has been consumed
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
  &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJSbe8j0ELWS72D08LF5w2mQlQtYfMKzVHW5OwCWTHutjMnLDK8PntAlpE_7haFR85LaYqPS2tXzJqSbq15ZJ8X_UJ8JSHRY3DPi4AsrdkyXcznkc0z-s9hP5cG5aeSoMzT38ST_Nn6G8q/s1373/Screen+Shot+2020-08-03+at+11.53.22+am.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;497&quot; data-original-width=&quot;1373&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJSbe8j0ELWS72D08LF5w2mQlQtYfMKzVHW5OwCWTHutjMnLDK8PntAlpE_7haFR85LaYqPS2tXzJqSbq15ZJ8X_UJ8JSHRY3DPi4AsrdkyXcznkc0z-s9hP5cG5aeSoMzT38ST_Nn6G8q/s640/Screen+Shot+2020-08-03+at+11.53.22+am.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
  18. Both these Springboot applications are using &quot;&lt;a href=&quot;https://spring.io/projects/spring-kafka&quot; target=&quot;_blank&quot;&gt;Spring for Apache Kafka&lt;/a&gt;&quot;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
  &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMADw3NmkoUXbxN6YMrX3Y0XkOqSjQ4clv1tw-jLYQ_RbuVfuXQsm5wpgV16iavBA0oZa26jzc5XXhuoC8O0oyu6MDVTH5ok2a7w38224mGl_iSURXGcOtRNSKIaRwVKVrhBgHOhRCGcEp/s1171/Screen+Shot+2020-08-03+at+11.57.22+am.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;702&quot; data-original-width=&quot;1171&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMADw3NmkoUXbxN6YMrX3Y0XkOqSjQ4clv1tw-jLYQ_RbuVfuXQsm5wpgV16iavBA0oZa26jzc5XXhuoC8O0oyu6MDVTH5ok2a7w38224mGl_iSURXGcOtRNSKIaRwVKVrhBgHOhRCGcEp/s640/Screen+Shot+2020-08-03+at+11.57.22+am.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
  Both Springboot application use a &lt;b&gt;application.yml&lt;/b&gt; to bootstrap access to the
  Kafka cluster
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
  The Producer Springboot application is using a KafkaTemplate to send messages
  to our Kafka Topic as shown below.&lt;/div&gt;
&lt;pre class=&quot;brush: java&quot;&gt;  
@Controller
@Slf4j
public class TopicMessageController {

    private KafkaTemplate&amp;lt;String, String&amp;gt; kafkaTemplate;

    @Autowired
    public TopicMessageController(KafkaTemplate&amp;lt;String, String&amp;gt; kafkaTemplate) {
        this.kafkaTemplate = kafkaTemplate;
    }

    final private String topicName = &quot;apples-topic&quot;;

    @GetMapping(&quot;/&quot;)
    public String indexPage (Model model){
        model.addAttribute(&quot;topicMessageAddSuccess&quot;, &quot;N&quot;);
        return &quot;home&quot;;
    }

    @PostMapping(&quot;/addentry&quot;)
    public String addNewTopicMessage (@RequestParam(value=&quot;message&quot;) String message, Model model){

        kafkaTemplate.send(topicName, message);

        log.info(&quot;Sent single message: &quot; + message);
        model.addAttribute(&quot;message&quot;, message);
        model.addAttribute(&quot;topicMessageAddSuccess&quot;, &quot;Y&quot;);

        return &quot;home&quot;;
    }
}                                                
&lt;/pre&gt; 
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
  The Consumer Springboot application is configured with a&amp;nbsp;KafkaListener as
  shown below&lt;/div&gt;
&lt;pre class=&quot;brush: java&quot;&gt;  
@Controller
@Slf4j
public class TopicConsumerController {

    private static ArrayList&amp;lt;String&amp;gt; topicMessages = new ArrayList&amp;lt;String&amp;gt;();

    @GetMapping(&quot;/&quot;)
    public String indexPage (Model model){
        model.addAttribute(&quot;topicMessages&quot;, topicMessages);
        model.addAttribute(&quot;topicMessagesCount&quot;, topicMessages.size());

        return &quot;home&quot;;
    }

    @KafkaListener(topics = &quot;apples-topic&quot;)
    public void listen(String message) {
        log.info(&quot;Received Message: &quot; + message);
        topicMessages.add(message);
    }
}                                              
&lt;/pre&gt; 
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;In this post we did not setup any client authentication against the cluster for the producer or consumer given this was just a demo.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
  &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFCDnKuMWHbb6jsVUIMytUwm192N4Vo1L50YE4Am6B4wofZB2RApVCxcLKElxEZn_EBkrgap83f5YGKRj7ERJVs8fOSy_NDH6viFVOOemsrcJYKYNUrR57ol-u0MG1uehpqx9xg6tbqann/s176/Screen+Shot+2020-08-03+at+10.09.22+am.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;176&quot; data-original-width=&quot;159&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFCDnKuMWHbb6jsVUIMytUwm192N4Vo1L50YE4Am6B4wofZB2RApVCxcLKElxEZn_EBkrgap83f5YGKRj7ERJVs8fOSy_NDH6viFVOOemsrcJYKYNUrR57ol-u0MG1uehpqx9xg6tbqann/s0/Screen+Shot+2020-08-03+at+10.09.22+am.png&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
  &lt;br /&gt;
  &lt;div&gt;&lt;b&gt;More Information&lt;/b&gt;&lt;/div&gt;
  &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Spring for Apache Kafka&lt;/div&gt;
  &lt;div&gt;&lt;a href=&quot;https://spring.io/projects/spring-kafka&quot;&gt;https://spring.io/projects/spring-kafka&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;CNCF Sanbox projects&lt;/div&gt;
  &lt;div&gt;
    &lt;a href=&quot;https://www.cncf.io/sandbox-projects/&quot;&gt;https://www.cncf.io/sandbox-projects/&lt;/a&gt;
  &lt;/div&gt;
  &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
  &lt;div&gt;Strimzi&lt;/div&gt;
  &lt;div&gt;&lt;a href=&quot;https://strimzi.io/&quot;&gt;https://strimzi.io/&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;blogger-post-footer&quot;&gt;http://feeds.feedburner.com/TheBlasFromPas&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblasfrompas.blogspot.com/feeds/8219441671318641947/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6527688743456205256/8219441671318641947' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/8219441671318641947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/8219441671318641947'/><link rel='alternate' type='text/html' href='http://theblasfrompas.blogspot.com/2020/08/using-cncf-sandbox-project-strimzi-for.html' title='Using CNCF Sandbox Project Strimzi for Kafka Clusters on VMware Tanzu Kubernetes Grid Integrated Edition (TKGI)'/><author><name>Pas Apicella</name><uri>http://www.blogger.com/profile/09389663166398991762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://wiki.r31skylineclub.com/images/thumb/d/d4/Gts2-side.jpg/100px-Gts2-side.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhyphenhyphenmnl_6OiB_9_Vgkf0ziyNKneRvQJVDGpnrdI_XPjYxXy9nOpbV27TSqUCC8Q1OD4dg2uO8-pw1CL01nP9Zf8s_v_3YOSZCJmA0-dD8e5WW2zCRUbalweGJvE0Bh_CyGotSIWz_YrHgJ_/s72-c/Screen+Shot+2020-08-03+at+11.47.20+am.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6527688743456205256.post-5450193552348403526</id><published>2020-07-17T12:57:00.004+10:00</published><updated>2020-07-17T12:57:48.181+10:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="KUbernetes"/><category scheme="http://www.blogger.com/atom/ns#" term="Lens"/><title type='text'>Stumbled upon this today : Lens | The Kubernetes IDE </title><content type='html'>Lens is the only IDE you’ll ever need to take control of your Kubernetes
 clusters. It is a standalone application for MacOS, Windows and Linux 
operating systems. It is open source and free.&lt;br /&gt;
&lt;br /&gt;
I installed it today and was impressed. Below is some screen shots of new Tanzu Application Service running on my Kubernetes cluster using Lens IDE. Simply point it to your Kube Config for the cluster you wish to examine.&lt;br /&gt;
&lt;br /&gt;
On Mac SX it&#39;s installed as follows&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ brew cask install lens&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuDe2pzE5BMpe-5hGnmvD6LlctiPoaBUZvXqaWoNp8F-CcZdHUlg7WmKldVP-fo0302252WBFX-cBSTb7n6IqB8uhhigbwbh8x8dEhc7X2BosKkAqTDv0bECKuh9XNfoAQtm3FyoSEWZCv/s1600/Screen+Shot+2020-07-17+at+12.54.22+pm.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;965&quot; data-original-width=&quot;1600&quot; height=&quot;193&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuDe2pzE5BMpe-5hGnmvD6LlctiPoaBUZvXqaWoNp8F-CcZdHUlg7WmKldVP-fo0302252WBFX-cBSTb7n6IqB8uhhigbwbh8x8dEhc7X2BosKkAqTDv0bECKuh9XNfoAQtm3FyoSEWZCv/s320/Screen+Shot+2020-07-17+at+12.54.22+pm.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPZMgkF3B55X9umKckLOoCFDcJk5bbu8tbHSvlINSTRjoyInWVGrEuzUSWDXVk7UVoCO9tJzKVvAhcUC90YtJaWvjFV5w6TMiTplYXL8ahxjMwDUUHg37GaDmO96MGqC6gxGvD_tJD0bb9/s1600/Screen+Shot+2020-07-17+at+12.54.44+pm.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;968&quot; data-original-width=&quot;1600&quot; height=&quot;193&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPZMgkF3B55X9umKckLOoCFDcJk5bbu8tbHSvlINSTRjoyInWVGrEuzUSWDXVk7UVoCO9tJzKVvAhcUC90YtJaWvjFV5w6TMiTplYXL8ahxjMwDUUHg37GaDmO96MGqC6gxGvD_tJD0bb9/s320/Screen+Shot+2020-07-17+at+12.54.44+pm.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEbGEXSdRH00Fl0P_d0-Lnq3phuLCKZlpkaq7hl3z_KQ6KnncHrAcn2XV_LCPRhJiZeXGv0CyR5sLDeEgAopf-GyLdOE3ILKAO-HenXAaL4gIWR-G6n4JmLFH64oMPrefztiLACSe1J0iP/s1600/Screen+Shot+2020-07-17+at+12.55.51+pm.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;970&quot; data-original-width=&quot;1600&quot; height=&quot;193&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEbGEXSdRH00Fl0P_d0-Lnq3phuLCKZlpkaq7hl3z_KQ6KnncHrAcn2XV_LCPRhJiZeXGv0CyR5sLDeEgAopf-GyLdOE3ILKAO-HenXAaL4gIWR-G6n4JmLFH64oMPrefztiLACSe1J0iP/s320/Screen+Shot+2020-07-17+at+12.55.51+pm.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdWz9hz2PkgRKj5nD182LGL8OA_9CtvcwR3oi8hgnJ21XsIyB8kQeEJk4IwnaS7SZA0t_AkaL0btOV1urgsUw9bLpTm_yTRru0YFiF-dYculMhl7epEBGTiPkXokobmLnQaDXPkYlUEgBy/s1600/Screen+Shot+2020-07-17+at+12.54.32+pm.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;966&quot; data-original-width=&quot;1600&quot; height=&quot;193&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdWz9hz2PkgRKj5nD182LGL8OA_9CtvcwR3oi8hgnJ21XsIyB8kQeEJk4IwnaS7SZA0t_AkaL0btOV1urgsUw9bLpTm_yTRru0YFiF-dYculMhl7epEBGTiPkXokobmLnQaDXPkYlUEgBy/s320/Screen+Shot+2020-07-17+at+12.54.32+pm.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;More Information&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://github.com/lensapp/lens&quot;&gt;https://github.com/lensapp/lens&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;http://feeds.feedburner.com/TheBlasFromPas&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblasfrompas.blogspot.com/feeds/5450193552348403526/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6527688743456205256/5450193552348403526' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/5450193552348403526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/5450193552348403526'/><link rel='alternate' type='text/html' href='http://theblasfrompas.blogspot.com/2020/07/stumbled-upon-this-today-lens.html' title='Stumbled upon this today : Lens | The Kubernetes IDE '/><author><name>Pas Apicella</name><uri>http://www.blogger.com/profile/09389663166398991762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://wiki.r31skylineclub.com/images/thumb/d/d4/Gts2-side.jpg/100px-Gts2-side.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuDe2pzE5BMpe-5hGnmvD6LlctiPoaBUZvXqaWoNp8F-CcZdHUlg7WmKldVP-fo0302252WBFX-cBSTb7n6IqB8uhhigbwbh8x8dEhc7X2BosKkAqTDv0bECKuh9XNfoAQtm3FyoSEWZCv/s72-c/Screen+Shot+2020-07-17+at+12.54.22+pm.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6527688743456205256.post-6025974964113544691</id><published>2020-07-14T13:50:00.001+10:00</published><updated>2020-07-14T14:28:47.095+10:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ECK"/><category scheme="http://www.blogger.com/atom/ns#" term="Elastic Cloud on Kubernetes"/><category scheme="http://www.blogger.com/atom/ns#" term="Spring Data Elasticsearch"/><category scheme="http://www.blogger.com/atom/ns#" term="TKGI"/><category scheme="http://www.blogger.com/atom/ns#" term="VMware Tanzu Kubernetes Grid Integrated Edition"/><title type='text'>Spring Data Elasticsearch using Elastic Cloud on Kubernetes (ECK) on VMware Tanzu Kubernetes Grid Integrated Edition (TKGI)</title><content type='html'>VMware Tanzu Kubernetes Grid Integrated Edition (formerly known as 
VMware Enterprise PKS) is a Kubernetes-based container solution with 
advanced networking, a private container registry, and life cycle 
management.&lt;br /&gt;
&lt;br /&gt;
In this post I show how to get &lt;a href=&quot;https://www.elastic.co/guide/en/cloud-on-k8s/current/index.html&quot; target=&quot;_blank&quot;&gt;Elastic Cloud on Kubernetes&lt;/a&gt; (ECK) up and running on VMware Tanzu Kubernetes Grid Integrated Edition and how to access it using a Spring Boot Application using Spring Data Elasticsearch.&lt;br /&gt;
&lt;br /&gt;
With &lt;a href=&quot;https://www.elastic.co/guide/en/cloud-on-k8s/current/index.html&quot; target=&quot;_blank&quot;&gt;ECK&lt;/a&gt;, users now have a seamless way of deploying, managing, and operating the Elastic Stack on Kubernetes.&lt;br /&gt;
&lt;br /&gt;
If you have a K8s cluster that&#39;s all you need to follow along.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Steps&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
1. Let&#39;s install ECK on our cluster we do that as follows&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #e69138;&quot;&gt;Note: There is a 1.1 version as the latest BUT I installing a slightly older one here&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;$&amp;nbsp;kubectl apply -f https://download.elastic.co/downloads/eck/1.0.1/all-in-one.yaml&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
2. Make sure the operator is up and running as shown below&lt;br /&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;  
$ kubectl get all -n elastic-system
NAME                     READY   STATUS    RESTARTS   AGE
pod/elastic-operator-0   1/1     Running   0          26d

NAME                             TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
service/elastic-webhook-server   ClusterIP   10.100.200.55   &amp;lt;none&amp;gt;        443/TCP   26d

NAME                                READY   AGE
statefulset.apps/elastic-operator   1/1     26d
&lt;/pre&gt;
&lt;br /&gt;
3. We can also see a CRD for Elasticsearch as shown below.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;elasticsearches.elasticsearch.k8s.elastic.co&lt;/span&gt;&lt;br /&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;  
$ kubectl get crd
NAME                                           CREATED AT
apmservers.apm.k8s.elastic.co                  2020-06-17T00:37:32Z
clusterlogsinks.pksapi.io                      2020-06-16T23:04:43Z
clustermetricsinks.pksapi.io                   2020-06-16T23:04:44Z
elasticsearches.elasticsearch.k8s.elastic.co   2020-06-17T00:37:33Z
kibanas.kibana.k8s.elastic.co                  2020-06-17T00:37:34Z
loadbalancers.vmware.com                       2020-06-16T22:51:52Z
logsinks.pksapi.io                             2020-06-16T23:04:43Z
metricsinks.pksapi.io                          2020-06-16T23:04:44Z
nsxerrors.nsx.vmware.com                       2020-06-16T22:51:52Z
nsxlbmonitors.vmware.com                       2020-06-16T22:51:52Z
nsxlocks.nsx.vmware.com                        2020-06-16T22:51:51Z
&lt;/pre&gt;
&lt;br /&gt;
4. We are now ready to create our first Elasticsearch cluster. To do that create a file YML file as shown below&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;create-elastic-cluster-from-operator.yaml&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;apiVersion: elasticsearch.k8s.elastic.co/v1&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;kind: Elasticsearch&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;metadata:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; name: quickstart&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;spec:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; version: 7.7.0&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; http:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; service:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; spec:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; type: LoadBalancer # default is ClusterIP&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; tls:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; selfSignedCertificate:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; disabled: true&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; nodeSets:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; - name: default&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; count: 2&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; volumeClaimTemplates:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; - metadata:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; name: elasticsearch-data&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; spec:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; accessModes:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - ReadWriteOnce&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; resources:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; requests:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; storage: 1Gi&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; config:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; node.master: true&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; node.data: true&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; node.ingest: true&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; node.store.allow_mmap: false&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
From the YML a few things to note:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;We are creating two pods for our Elasticsearch cluster&lt;/li&gt;
&lt;li&gt;We are using a K8s LoadBalancer to expose access to the cluster through HTTP&lt;/li&gt;
&lt;li&gt;We are using version 7.7.0 but this is not the latest Elasticsearch version&lt;/li&gt;
&lt;li&gt;We have disabled the use of TLS given this is just a demo&lt;/li&gt;
&lt;/ul&gt;
5. Apply that as shown below.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ kubectl apply -f&amp;nbsp;create-elastic-cluster-from-operator.yaml&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
6. After about a minute we should have our Elasticsearch cluster running. The following commands show that&lt;br /&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;  
$ kubectl get elasticsearch
NAME         HEALTH   NODES   VERSION   PHASE   AGE
quickstart   green    2       7.7.0     Ready   47h

$ kubectl get all -n default
NAME                                   READY   STATUS    RESTARTS   AGE
pod/quickstart-es-default-0            1/1     Running   0          47h
pod/quickstart-es-default-1            1/1     Running   0          47h

NAME                            TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)          AGE
service/kubernetes              ClusterIP      10.100.200.1    &amp;lt;none&amp;gt;          443/TCP          27d
service/quickstart-es-default   ClusterIP      None            &amp;lt;none&amp;gt;          &amp;lt;none&amp;gt;           47h
service/quickstart-es-http      LoadBalancer   10.100.200.92   10.195.93.137   9200:30590/TCP   47h

NAME                                     READY   AGE
statefulset.apps/quickstart-es-default   2/2     47h
&lt;/pre&gt;
&lt;br /&gt;
7. Let&#39;s deploy a Kibana instance. To do that create a YML as shown below&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;create-kibana.yaml&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;apiVersion: kibana.k8s.elastic.co/v1&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;kind: Kibana&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;metadata:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; name: kibana-sample&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;spec:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; version: 7.7.0&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; count: 1&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; elasticsearchRef:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; name: quickstart&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; namespace: default&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; http:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; service:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; spec:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; type: LoadBalancer # default is ClusterIP&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
8. Apply that as shown below.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ kubectl apply -f&amp;nbsp;&lt;/span&gt;create-kibana.yaml&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
9. To verify everything is up and running we can run a command as follows&lt;br /&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;  
$ kubectl get all
NAME                                   READY   STATUS    RESTARTS   AGE
pod/kibana-sample-kb-f8fcb88d5-jdzh5   1/1     Running   0          2d
pod/quickstart-es-default-0            1/1     Running   0          2d
pod/quickstart-es-default-1            1/1     Running   0          2d

NAME                            TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)          AGE
service/kibana-sample-kb-http   LoadBalancer   10.100.200.46   10.195.93.174   5601:32459/TCP   2d
service/kubernetes              ClusterIP      10.100.200.1    &amp;lt;none&amp;gt;          443/TCP          27d
service/quickstart-es-default   ClusterIP      None            &amp;lt;none&amp;gt;          &amp;lt;none&amp;gt;           2d
service/quickstart-es-http      LoadBalancer   10.100.200.92   10.195.93.137   9200:30590/TCP   2d

NAME                               READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/kibana-sample-kb   1/1     1            1           2d

NAME                                         DESIRED   CURRENT   READY   AGE
replicaset.apps/kibana-sample-kb-f8fcb88d5   1         1         1       2d

NAME                                     READY   AGE
statefulset.apps/quickstart-es-default   2/2     2d
&lt;/pre&gt;
&lt;br /&gt;
10. So to access out cluster we will need to obtain the following which we can do using a script as follows. This was tested on Mac OSX&lt;br /&gt;
&lt;br /&gt;
What do we need?&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Elasticsearch password&lt;/li&gt;
&lt;li&gt;IP address of the LoadBalancer service we created&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;access.sh&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;export PASSWORD=`kubectl get secret quickstart-es-elastic-user -o go-template=&#39;{{.data.elastic | base64decode}}&#39;`&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;export IP=`kubectl get svc quickstart-es-http -o jsonpath=&#39;{.status.loadBalancer.ingress[0].ip}&#39;`&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;echo &quot;&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;echo $IP&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;echo &quot;&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;curl -u &quot;elastic:$PASSWORD&quot; &quot;http://$IP:9200&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;echo &quot;&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;curl -u &quot;elastic:$PASSWORD&quot; &quot;http://$IP:9200/_cat/health?v&quot;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;10.195.93.137&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &quot;name&quot; : &quot;quickstart-es-default-1&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &quot;cluster_name&quot; : &quot;quickstart&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &quot;cluster_uuid&quot; : &quot;Bbpb7Pu7SmaQaCmEY2Er8g&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &quot;version&quot; : {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &quot;number&quot; : &quot;7.7.0&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &quot;build_flavor&quot; : &quot;default&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &quot;build_type&quot; : &quot;docker&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &quot;build_hash&quot; : &quot;81a1e9eda8e6183f5237786246f6dced26a10eaf&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &quot;build_date&quot; : &quot;2020-05-12T02:01:37.602180Z&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &quot;build_snapshot&quot; : false,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &quot;lucene_version&quot; : &quot;8.5.1&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &quot;minimum_wire_compatibility_version&quot; : &quot;6.8.0&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &quot;minimum_index_compatibility_version&quot; : &quot;6.0.0-beta1&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &quot;tagline&quot; : &quot;You Know, for Search&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;.....&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
11. Ideally I would load some data into the Elasticsearch cluster BUT let&#39;s do that as part of a sample application using &quot;&lt;a href=&quot;https://spring.io/projects/spring-data-elasticsearch&quot; target=&quot;_blank&quot;&gt;Spring Data Elasticsearch&lt;/a&gt;&quot;. Clone the demo project as shown below.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ git clone https://github.com/papicella/boot-elastic-demo.git&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;Cloning into &#39;boot-elastic-demo&#39;...&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;remote: Enumerating objects: 36, done.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;remote: Counting objects: 100% (36/36), done.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;remote: Compressing objects: 100% (26/26), done.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;remote: Total 36 (delta 1), reused 36 (delta 1), pack-reused 0&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;Unpacking objects: 100% (36/36), done.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
12. Edit &quot;&lt;b&gt;./src/main/resources/application.yml&lt;/b&gt;&quot; with your details for the Elasticsearch cluster above.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;spring:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; elasticsearch:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; rest:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; username: elastic&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; password: {PASSWORD}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; uris: http://{IP}:9200&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
13. Package as follows&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ ./mvnw -DskipTests package&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
14. Run as follows&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;$&amp;nbsp;./mvnw spring-boot:run&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;....&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;2020-07-14 11:10:11.947&amp;nbsp; INFO 76260 --- [&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;main] o.s.b.w.embedded.tomcat.TomcatWebServer&amp;nbsp; : Tomcat started on port(s): 8080 (http) with context path &#39;&#39;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;2020-07-14 11:10:11.954&amp;nbsp; INFO 76260 --- [&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;main] c.e.e.demo.BootElasticDemoApplication&amp;nbsp; &amp;nbsp; : Started BootElasticDemoApplication in 2.495 seconds (JVM running for 2.778)&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;....&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
15. Access application using &quot;&lt;b&gt;http://localhost:8080/&lt;/b&gt;&quot;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKEEQks0K7xmhc4mZkexW1mNcIGMv9O79dhbP7v1A49brHeeypZY-TKDJys5CiG1wTKJZeWPc7f05djlsQn2Rp8CajXgsB3egkJb2pMNlNHT54TVR3lV1ycQbO5IXQMMjZM_GYR8zWm_3R/s1600/Screen+Shot+2020-07-14+at+11.13.04+am.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;967&quot; data-original-width=&quot;1600&quot; height=&quot;193&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKEEQks0K7xmhc4mZkexW1mNcIGMv9O79dhbP7v1A49brHeeypZY-TKDJys5CiG1wTKJZeWPc7f05djlsQn2Rp8CajXgsB3egkJb2pMNlNHT54TVR3lV1ycQbO5IXQMMjZM_GYR8zWm_3R/s320/Screen+Shot+2020-07-14+at+11.13.04+am.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIQKFkMBqxCqfAx33VMNQivnDcHEW_x8y7jnq4c2f1ryuzcXI-DSsDQ9KvComZZNIb25ynVwfnLgKJIcGBVKcR4he5_Z2SwZE7GTnCE-RwYVBpqrkj-eHHtAc0xw_-kWBPATx6avC8SNIx/s1600/Screen+Shot+2020-07-14+at+11.13.23+am.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;521&quot; data-original-width=&quot;1600&quot; height=&quot;104&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIQKFkMBqxCqfAx33VMNQivnDcHEW_x8y7jnq4c2f1ryuzcXI-DSsDQ9KvComZZNIb25ynVwfnLgKJIcGBVKcR4he5_Z2SwZE7GTnCE-RwYVBpqrkj-eHHtAc0xw_-kWBPATx6avC8SNIx/s320/Screen+Shot+2020-07-14+at+11.13.23+am.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
16. If we look at our code we will see the data was loaded into the Elasticsearch cluster using a java class called &quot;&lt;b&gt;LoadData.java&lt;/b&gt;&quot;. Ideally data should already exist in the cluster but for demo purposes we load some data as part of the Spring Boot Application and clear the data prior to each application run given it&#39;s just a demo.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;2020-07-14 11:12:33.109&amp;nbsp; INFO 76277 --- [&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;main] com.example.elastic.demo.LoadData&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : Pre loading Car{id=&#39;OjThSnMBLjyTRl7lZsDL&#39;, make=&#39;holden&#39;, model=&#39;commodore&#39;, bodystyles=[BodyStyle{type=&#39;2-door&#39;}, BodyStyle{type=&#39;4-door&#39;}, BodyStyle{type=&#39;5-door&#39;}]}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;2020-07-14 11:12:33.584&amp;nbsp; INFO 76277 --- [&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;main] com.example.elastic.demo.LoadData&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : Pre loading Car{id=&#39;OzThSnMBLjyTRl7laMCo&#39;, make=&#39;holden&#39;, model=&#39;astra&#39;, bodystyles=[BodyStyle{type=&#39;2-door&#39;}, BodyStyle{type=&#39;4-door&#39;}]}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;2020-07-14 11:12:34.189&amp;nbsp; INFO 76277 --- [&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;main] com.example.elastic.demo.LoadData&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : Pre loading Car{id=&#39;PDThSnMBLjyTRl7lasCC&#39;, make=&#39;nissan&#39;, model=&#39;skyline&#39;, bodystyles=[BodyStyle{type=&#39;4-door&#39;}]}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;2020-07-14 11:12:34.744&amp;nbsp; INFO 76277 --- [&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;main] com.example.elastic.demo.LoadData&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : Pre loading Car{id=&#39;PTThSnMBLjyTRl7lbMDe&#39;, make=&#39;nissan&#39;, model=&#39;pathfinder&#39;, bodystyles=[BodyStyle{type=&#39;5-door&#39;}]}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;2020-07-14 11:12:35.227&amp;nbsp; INFO 76277 --- [&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;main] com.example.elastic.demo.LoadData&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : Pre loading Car{id=&#39;PjThSnMBLjyTRl7lb8AL&#39;, make=&#39;ford&#39;, model=&#39;falcon&#39;, bodystyles=[BodyStyle{type=&#39;4-door&#39;}, BodyStyle{type=&#39;5-door&#39;}]}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;2020-07-14 11:12:36.737&amp;nbsp; INFO 76277 --- [&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;main] com.example.elastic.demo.LoadData&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : Pre loading Car{id=&#39;QDThSnMBLjyTRl7lcMDu&#39;, make=&#39;ford&#39;, model=&#39;territory&#39;, bodystyles=[BodyStyle{type=&#39;5-door&#39;}]}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;2020-07-14 11:12:37.266&amp;nbsp; INFO 76277 --- [&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;main] com.example.elastic.demo.LoadData&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : Pre loading Car{id=&#39;QTThSnMBLjyTRl7ldsDU&#39;, make=&#39;toyota&#39;, model=&#39;camry&#39;, bodystyles=[BodyStyle{type=&#39;4-door&#39;}, BodyStyle{type=&#39;5-door&#39;}]}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;2020-07-14 11:12:37.777&amp;nbsp; INFO 76277 --- [&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;main] com.example.elastic.demo.LoadData&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : Pre loading Car{id=&#39;QjThSnMBLjyTRl7leMDk&#39;, make=&#39;toyota&#39;, model=&#39;corolla&#39;, bodystyles=[BodyStyle{type=&#39;2-door&#39;}, BodyStyle{type=&#39;5-door&#39;}]}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;2020-07-14 11:12:38.285&amp;nbsp; INFO 76277 --- [&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;main] com.example.elastic.demo.LoadData&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : Pre loading Car{id=&#39;QzThSnMBLjyTRl7lesDj&#39;, make=&#39;kia&#39;, model=&#39;sorento&#39;, bodystyles=[BodyStyle{type=&#39;5-door&#39;}]}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;2020-07-14 11:12:38.800&amp;nbsp; INFO 76277 --- [&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;main] com.example.elastic.demo.LoadData&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : Pre loading Car{id=&#39;RDThSnMBLjyTRl7lfMDg&#39;, make=&#39;kia&#39;, model=&#39;sportage&#39;, bodystyles=[BodyStyle{type=&#39;4-door&#39;}]}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;LoadData.java&lt;/b&gt;&lt;br /&gt;
&lt;pre class=&quot;brush: java&quot;&gt;  
package com.example.elastic.demo;

import com.example.elastic.demo.indices.BodyStyle;
import com.example.elastic.demo.indices.Car;
import com.example.elastic.demo.repo.CarRepository;
import org.springframework.boot.CommandLineRunner;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import lombok.extern.slf4j.Slf4j;

import static java.util.Arrays.asList;

@Configuration
@Slf4j
public class LoadData {
    @Bean
    public CommandLineRunner initElasticsearchData(CarRepository carRepository) {
        return args -&amp;gt; {
            carRepository.deleteAll();
            log.info(&quot;Pre loading &quot; + carRepository.save(new Car(&quot;holden&quot;, &quot;commodore&quot;, asList(new BodyStyle(&quot;2-door&quot;), new BodyStyle(&quot;4-door&quot;), new BodyStyle(&quot;5-door&quot;)))));
            log.info(&quot;Pre loading &quot; + carRepository.save(new Car(&quot;holden&quot;, &quot;astra&quot;, asList(new BodyStyle(&quot;2-door&quot;), new BodyStyle(&quot;4-door&quot;)))));
            log.info(&quot;Pre loading &quot; + carRepository.save(new Car(&quot;nissan&quot;, &quot;skyline&quot;, asList(new BodyStyle(&quot;4-door&quot;)))));
            log.info(&quot;Pre loading &quot; + carRepository.save(new Car(&quot;nissan&quot;, &quot;pathfinder&quot;, asList(new BodyStyle(&quot;5-door&quot;)))));
            log.info(&quot;Pre loading &quot; + carRepository.save(new Car(&quot;ford&quot;, &quot;falcon&quot;, asList(new BodyStyle(&quot;4-door&quot;), new BodyStyle(&quot;5-door&quot;)))));
            log.info(&quot;Pre loading &quot; + carRepository.save(new Car(&quot;ford&quot;, &quot;territory&quot;, asList(new BodyStyle(&quot;5-door&quot;)))));
            log.info(&quot;Pre loading &quot; + carRepository.save(new Car(&quot;toyota&quot;, &quot;camry&quot;, asList(new BodyStyle(&quot;4-door&quot;), new BodyStyle(&quot;5-door&quot;)))));
            log.info(&quot;Pre loading &quot; + carRepository.save(new Car(&quot;toyota&quot;, &quot;corolla&quot;, asList(new BodyStyle(&quot;2-door&quot;), new BodyStyle(&quot;5-door&quot;)))));
            log.info(&quot;Pre loading &quot; + carRepository.save(new Car(&quot;kia&quot;, &quot;sorento&quot;, asList(new BodyStyle(&quot;5-door&quot;)))));
            log.info(&quot;Pre loading &quot; + carRepository.save(new Car(&quot;kia&quot;, &quot;sportage&quot;, asList(new BodyStyle(&quot;4-door&quot;)))));
        };
    }
}
&lt;/pre&gt;
&lt;br /&gt;
17. Our CarRepository interface is defined as follows&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;CarRepository.java&lt;/b&gt;&lt;br /&gt;
&lt;pre class=&quot;brush: java&quot;&gt;  
package com.example.elastic.demo.repo;

import com.example.elastic.demo.indices.Car;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface CarRepository extends ElasticsearchRepository &amp;lt;Car, String&amp;gt; {

    Page&amp;lt;Car&amp;gt; findByMakeContaining(String make, Pageable page);

}
&lt;/pre&gt;
&lt;br /&gt;
18. So let&#39;s also via this data using &quot;&lt;b&gt;curl&lt;/b&gt;&quot; and Kibana as shown below.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;curl -X GET -u &quot;elastic:{PASSWORD}&quot; &quot;http://{IP}:9200/vehicle/_search?pretty&quot; -H &#39;Content-Type: application/json&#39; -d&#39;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &quot;query&quot;: { &quot;match_all&quot;: {} },&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &quot;sort&quot;: [&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; { &quot;_id&quot;: &quot;asc&quot; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; ]&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&#39;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &quot;took&quot; : 2,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &quot;timed_out&quot; : false,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &quot;_shards&quot; : {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &quot;total&quot; : 1,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &quot;successful&quot; : 1,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &quot;skipped&quot; : 0,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &quot;failed&quot; : 0&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &quot;hits&quot; : {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &quot;total&quot; : {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;value&quot; : 10,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;relation&quot; : &quot;eq&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &quot;max_score&quot; : null,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &quot;hits&quot; : [&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_index&quot; : &quot;vehicle&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_type&quot; : &quot;_doc&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_id&quot; : &quot;OjThSnMBLjyTRl7lZsDL&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_score&quot; : null,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_source&quot; : {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_class&quot; : &quot;com.example.elastic.demo.indices.Car&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;make&quot; : &quot;holden&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;model&quot; : &quot;commodore&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;bodystyles&quot; : [&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;type&quot; : &quot;2-door&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;type&quot; : &quot;4-door&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;type&quot; : &quot;5-door&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ]&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;sort&quot; : [&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;OjThSnMBLjyTRl7lZsDL&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ]&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_index&quot; : &quot;vehicle&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_type&quot; : &quot;_doc&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_id&quot; : &quot;OzThSnMBLjyTRl7laMCo&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_score&quot; : null,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_source&quot; : {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_class&quot; : &quot;com.example.elastic.demo.indices.Car&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;make&quot; : &quot;holden&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;model&quot; : &quot;astra&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;bodystyles&quot; : [&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;type&quot; : &quot;2-door&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;type&quot; : &quot;4-door&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ]&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;sort&quot; : [&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;OzThSnMBLjyTRl7laMCo&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ]&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_index&quot; : &quot;vehicle&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_type&quot; : &quot;_doc&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_id&quot; : &quot;PDThSnMBLjyTRl7lasCC&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_score&quot; : null,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_source&quot; : {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_class&quot; : &quot;com.example.elastic.demo.indices.Car&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;make&quot; : &quot;nissan&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;model&quot; : &quot;skyline&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;bodystyles&quot; : [&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;type&quot; : &quot;4-door&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ]&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;sort&quot; : [&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;PDThSnMBLjyTRl7lasCC&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ]&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_index&quot; : &quot;vehicle&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_type&quot; : &quot;_doc&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_id&quot; : &quot;PTThSnMBLjyTRl7lbMDe&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_score&quot; : null,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_source&quot; : {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_class&quot; : &quot;com.example.elastic.demo.indices.Car&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;make&quot; : &quot;nissan&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;model&quot; : &quot;pathfinder&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;bodystyles&quot; : [&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;type&quot; : &quot;5-door&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ]&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;sort&quot; : [&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;PTThSnMBLjyTRl7lbMDe&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ]&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_index&quot; : &quot;vehicle&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_type&quot; : &quot;_doc&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_id&quot; : &quot;PjThSnMBLjyTRl7lb8AL&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_score&quot; : null,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_source&quot; : {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_class&quot; : &quot;com.example.elastic.demo.indices.Car&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;make&quot; : &quot;ford&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;model&quot; : &quot;falcon&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;bodystyles&quot; : [&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;type&quot; : &quot;4-door&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;type&quot; : &quot;5-door&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ]&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;sort&quot; : [&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;PjThSnMBLjyTRl7lb8AL&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ]&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_index&quot; : &quot;vehicle&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_type&quot; : &quot;_doc&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_id&quot; : &quot;QDThSnMBLjyTRl7lcMDu&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_score&quot; : null,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_source&quot; : {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_class&quot; : &quot;com.example.elastic.demo.indices.Car&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;make&quot; : &quot;ford&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;model&quot; : &quot;territory&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;bodystyles&quot; : [&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;type&quot; : &quot;5-door&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ]&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;sort&quot; : [&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;QDThSnMBLjyTRl7lcMDu&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ]&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_index&quot; : &quot;vehicle&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_type&quot; : &quot;_doc&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_id&quot; : &quot;QTThSnMBLjyTRl7ldsDU&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_score&quot; : null,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_source&quot; : {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_class&quot; : &quot;com.example.elastic.demo.indices.Car&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;make&quot; : &quot;toyota&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;model&quot; : &quot;camry&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;bodystyles&quot; : [&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;type&quot; : &quot;4-door&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;type&quot; : &quot;5-door&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ]&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;sort&quot; : [&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;QTThSnMBLjyTRl7ldsDU&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ]&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_index&quot; : &quot;vehicle&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_type&quot; : &quot;_doc&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_id&quot; : &quot;QjThSnMBLjyTRl7leMDk&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_score&quot; : null,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_source&quot; : {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_class&quot; : &quot;com.example.elastic.demo.indices.Car&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;make&quot; : &quot;toyota&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;model&quot; : &quot;corolla&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;bodystyles&quot; : [&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;type&quot; : &quot;2-door&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;type&quot; : &quot;5-door&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ]&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;sort&quot; : [&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;QjThSnMBLjyTRl7leMDk&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ]&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_index&quot; : &quot;vehicle&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_type&quot; : &quot;_doc&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_id&quot; : &quot;QzThSnMBLjyTRl7lesDj&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_score&quot; : null,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_source&quot; : {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_class&quot; : &quot;com.example.elastic.demo.indices.Car&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;make&quot; : &quot;kia&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;model&quot; : &quot;sorento&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;bodystyles&quot; : [&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;type&quot; : &quot;5-door&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ]&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;sort&quot; : [&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;QzThSnMBLjyTRl7lesDj&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ]&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_index&quot; : &quot;vehicle&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_type&quot; : &quot;_doc&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_id&quot; : &quot;RDThSnMBLjyTRl7lfMDg&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_score&quot; : null,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_source&quot; : {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;_class&quot; : &quot;com.example.elastic.demo.indices.Car&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;make&quot; : &quot;kia&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;model&quot; : &quot;sportage&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;bodystyles&quot; : [&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;type&quot; : &quot;4-door&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ]&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;sort&quot; : [&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;RDThSnMBLjyTRl7lfMDg&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ]&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; ]&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Kibana&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Obtain Kibana HTTP IP as shown below and login using username &quot;&lt;b&gt;elastic&lt;/b&gt;&quot; and password we obtained previously.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ kubectl get svc kibana-sample-kb-http -o jsonpath=&#39;{.status.loadBalancer.ingress[0].ip}&#39;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;10.195.93.174&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAAT6TjTV9S9oT9J8SOXldyRTfoK4EP-6ggcjLEMiI4O4kU7dNX7FAbRdBwSPXQPopyOtD2HxcPs8hgqR94h9XSzcFuFN0kxTiI5WXBhpaEaOUmvyZYNS4eLVrTLR04tDS5huw3YOiolcO/s1600/Screen+Shot+2020-07-14+at+11.35.09+am.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;979&quot; data-original-width=&quot;1600&quot; height=&quot;195&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAAT6TjTV9S9oT9J8SOXldyRTfoK4EP-6ggcjLEMiI4O4kU7dNX7FAbRdBwSPXQPopyOtD2HxcPs8hgqR94h9XSzcFuFN0kxTiI5WXBhpaEaOUmvyZYNS4eLVrTLR04tDS5huw3YOiolcO/s320/Screen+Shot+2020-07-14+at+11.35.09+am.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Finally maybe you want to deploy the application to Kubernetes. To do that take a look at &lt;a href=&quot;https://buildpacks.io/&quot; target=&quot;_blank&quot;&gt;Cloud Native Buildpacks&lt;/a&gt;&amp;nbsp;CNCF project and/or &lt;a href=&quot;https://docs.pivotal.io/build-service/0-2-0/index.html&quot; target=&quot;_blank&quot;&gt;Tanzu Build Service&lt;/a&gt; to turn your code into a Container Image stored in a registry.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhq9Oa9WCe0M5MJ8KXaOcptWn2pWhdGAAs7YWDEYngUWy2lWH9Q8w2f33zdkVAeko7hRSoUKxkWTo008YgPnQ-pmtMzO1MG8rei5LDvWcPml5eqL8d-DJa578lJpS4nOVtvR4mAtBOf-BDP/s1600/Screen+Shot+2020-07-14+at+1.45.00+pm.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;470&quot; data-original-width=&quot;1426&quot; height=&quot;105&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhq9Oa9WCe0M5MJ8KXaOcptWn2pWhdGAAs7YWDEYngUWy2lWH9Q8w2f33zdkVAeko7hRSoUKxkWTo008YgPnQ-pmtMzO1MG8rei5LDvWcPml5eqL8d-DJa578lJpS4nOVtvR4mAtBOf-BDP/s320/Screen+Shot+2020-07-14+at+1.45.00+pm.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;More Information&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Spring Data Elasticsearch&lt;br /&gt;
&lt;a href=&quot;https://spring.io/projects/spring-data-elasticsearch&quot;&gt;https://spring.io/projects/spring-data-elasticsearch&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
VMware Tanzu Kubernetes Grid Integrated Edition Documentation&lt;br /&gt;
&lt;a href=&quot;https://docs.vmware.com/en/VMware-Tanzu-Kubernetes-Grid-Integrated-Edition/index.html&quot;&gt;https://docs.vmware.com/en/VMware-Tanzu-Kubernetes-Grid-Integrated-Edition/index.html&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;http://feeds.feedburner.com/TheBlasFromPas&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblasfrompas.blogspot.com/feeds/6025974964113544691/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6527688743456205256/6025974964113544691' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/6025974964113544691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/6025974964113544691'/><link rel='alternate' type='text/html' href='http://theblasfrompas.blogspot.com/2020/07/spring-boot-data-elasticsearch-using.html' title='Spring Data Elasticsearch using Elastic Cloud on Kubernetes (ECK) on VMware Tanzu Kubernetes Grid Integrated Edition (TKGI)'/><author><name>Pas Apicella</name><uri>http://www.blogger.com/profile/09389663166398991762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://wiki.r31skylineclub.com/images/thumb/d/d4/Gts2-side.jpg/100px-Gts2-side.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKEEQks0K7xmhc4mZkexW1mNcIGMv9O79dhbP7v1A49brHeeypZY-TKDJys5CiG1wTKJZeWPc7f05djlsQn2Rp8CajXgsB3egkJb2pMNlNHT54TVR3lV1ycQbO5IXQMMjZM_GYR8zWm_3R/s72-c/Screen+Shot+2020-07-14+at+11.13.04+am.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6527688743456205256.post-1124226826544667000</id><published>2020-07-10T14:22:00.002+10:00</published><updated>2020-07-10T16:56:35.049+10:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="API"/><category scheme="http://www.blogger.com/atom/ns#" term="FSI"/><category scheme="http://www.blogger.com/atom/ns#" term="MFA"/><category scheme="http://www.blogger.com/atom/ns#" term="Spring Boot"/><category scheme="http://www.blogger.com/atom/ns#" term="Tanzu Application Service"/><title type='text'>Multi-Factor Authentication (MFA) using OKTA with Spring Boot and Tanzu Application Service</title><content type='html'>Recently I was asked to build a quick demo showing how to use MFA with OKTA and Spring Boot application running on &lt;a href=&quot;https://tanzu.vmware.com/application-service&quot; target=&quot;_blank&quot;&gt;Tanzu Application Service&lt;/a&gt;. Here is the demo application plus how to setup and run this yourself.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Steps&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
1. Clone the existing repo as shown below&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ git clone https://github.com/papicella/mfa-boot-fsi&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;Cloning into &#39;mfa-boot-fsi&#39;...&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;remote: Enumerating objects: 47, done.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;remote: Counting objects: 100% (47/47), done.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;remote: Compressing objects: 100% (31/31), done.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;remote: Total 47 (delta 2), reused 47 (delta 2), pack-reused 0&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;Unpacking objects: 100% (47/47), done.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBivZWgcyC6vhbMaJo6hdV3bXvbwPbsD0SoyIYXjYRr84RFelt6q025OHWy3XSaHgbcToVXclJvLuYs42XjmioCEtHBVb64jsgbl-xPNZHcmUgMrHDVJUNrtcKZm-pAbhlHhzPtuP50LAT/s1600/Screen+Shot+2020-07-10+at+2.19.39+pm.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;652&quot; data-original-width=&quot;1600&quot; height=&quot;130&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBivZWgcyC6vhbMaJo6hdV3bXvbwPbsD0SoyIYXjYRr84RFelt6q025OHWy3XSaHgbcToVXclJvLuYs42XjmioCEtHBVb64jsgbl-xPNZHcmUgMrHDVJUNrtcKZm-pAbhlHhzPtuP50LAT/s320/Screen+Shot+2020-07-10+at+2.19.39+pm.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Create a free account of&amp;nbsp;&lt;a href=&quot;https://developer.okta.com/&quot;&gt;https://developer.okta.com/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Once created login to the dev account. Your account URL will look like something as follows&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;https://dev-{ID}-admin.okta.com&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimFYLXR9XoPMIrRmyR8PD_jCXbe4x4ksJQc2Cg4DwGsx-SdOl5vI2YJXpL5-vuOeEPWX5U9Q-Vb-YAVsANeOuL4LRwldNahkRiOZ5UYp8nvDDE0QiZ9FDgxpR_rWgdn-gQnEfzV_JNDJJf/s1600/Screen+Shot+2020-07-10+at+1.06.27+pm.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;463&quot; data-original-width=&quot;1046&quot; height=&quot;141&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimFYLXR9XoPMIrRmyR8PD_jCXbe4x4ksJQc2Cg4DwGsx-SdOl5vI2YJXpL5-vuOeEPWX5U9Q-Vb-YAVsANeOuL4LRwldNahkRiOZ5UYp8nvDDE0QiZ9FDgxpR_rWgdn-gQnEfzV_JNDJJf/s320/Screen+Shot+2020-07-10+at+1.06.27+pm.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
3. You will need your default authorization server settings. From the top menu in the &lt;b&gt;developer.okta.com&lt;/b&gt; dashboard, go to &lt;strong&gt;API&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Authorization Servers&lt;/strong&gt; and click on the &lt;strong&gt;default&lt;/strong&gt; server&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhel0E8BpUzoOsBT6nsJ4jsArBShhiAhGzY-KbhVq-1KxHsrBTnTaN7Sb-Dc9BYy4wzHUL0sARMHwT4EXXuba1buzcNsJQnZ3CQfnq2Vop5EEIpGtCbiQzLGrDpAlcFbEqMf2dtthwcrNjY/s1600/Screen+Shot+2020-07-10+at+1.20.36+pm.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;741&quot; data-original-width=&quot;1072&quot; height=&quot;221&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhel0E8BpUzoOsBT6nsJ4jsArBShhiAhGzY-KbhVq-1KxHsrBTnTaN7Sb-Dc9BYy4wzHUL0sARMHwT4EXXuba1buzcNsJQnZ3CQfnq2Vop5EEIpGtCbiQzLGrDpAlcFbEqMf2dtthwcrNjY/s320/Screen+Shot+2020-07-10+at+1.20.36+pm.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
You will need this data shortly. Image above is an example those details won&#39;t work for your own setup.&lt;br /&gt;
&lt;br /&gt;
4. From the top menu, go to &lt;strong&gt;Applications&lt;/strong&gt; and click the &lt;strong&gt;Add Application&lt;/strong&gt; button. Click on the &lt;strong&gt;Web&lt;/strong&gt; button and click &lt;strong&gt;Next.&amp;nbsp;&lt;/strong&gt;Name your app whatever you like. I named mine &quot;&lt;b&gt;pas-okta-springapp&quot;&lt;/b&gt;. Otherwise the default settings are fine. Click &lt;strong&gt;Done&lt;/strong&gt;.&lt;br /&gt;


&lt;br /&gt;
From this screen shot you can see that the default&#39;s refer to localhost which for DEV purposes is fine.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpF6yOsdzqItoCO5AbQGqOuS9ofQOYBo5Zh6Q3jZv0wWTuxTpK3KxlGNlabgyUMNMNv2QqV2IPRNBFd8g8nI08LNdtjLcyladYeSolnFXCV4tOOp_ODQiR-o2cV-Nyvt_4oPLGQ7eIiUt9/s1600/Screen+Shot+2020-07-10+at+1.26.30+pm.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1027&quot; data-original-width=&quot;1039&quot; height=&quot;316&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpF6yOsdzqItoCO5AbQGqOuS9ofQOYBo5Zh6Q3jZv0wWTuxTpK3KxlGNlabgyUMNMNv2QqV2IPRNBFd8g8nI08LNdtjLcyladYeSolnFXCV4tOOp_ODQiR-o2cV-Nyvt_4oPLGQ7eIiUt9/s320/Screen+Shot+2020-07-10+at+1.26.30+pm.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
You will need the &lt;strong&gt;Client ID&lt;/strong&gt; and &lt;strong&gt;Client secret&lt;/strong&gt; from the final screen so make a note of these&lt;br /&gt;
&lt;br /&gt;
5. Edit the &quot;&lt;b&gt;./mfa-boot-fsi/src/main/resources/application-DEV.yml&lt;/b&gt;&quot; to include the details as per #3 and #4 above.&lt;br /&gt;
&lt;br /&gt;
You will need to edit&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;issuer&lt;/li&gt;
&lt;li&gt;client-id&lt;/li&gt;
&lt;li&gt;client-secret&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;application-DEV.yaml&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;spring:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; security:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; oauth2:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; client:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; provider:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; okta:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; user-name-attribute: email&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;okta:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; oauth2:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; issuer: https://dev-213269.okta.com/oauth2/default&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; redirect-uri: /authorization-code/callback&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; scopes:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; - profile&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; - email&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; - openid&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; client-id: ....&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; client-secret: ....&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
6. In order to pick up this application-DEV.yaml we have to set the spring profile correctly. That can be done using a JVM property as follows.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;-Dspring.profiles.active=DEV&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
In my example I use IntelliJ IDEA so I set it on the run configurations dialog as follows&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7utuy6Xbha_oVcJFQ9T3xzJKMtJGd4KGQ1lbRk6CcpJV4Sji2dfnm59l22ymQPyrHrm_PuHgfr6lCATbYgOh5-8gCrfJ2EnGZjoBo8Ko4so0ij9mbhU2KDzBz7OYtEVLIXohXaR1lDl1d/s1600/Screen+Shot+2020-07-10+at+1.29.03+pm.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;678&quot; data-original-width=&quot;1065&quot; height=&quot;203&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7utuy6Xbha_oVcJFQ9T3xzJKMtJGd4KGQ1lbRk6CcpJV4Sji2dfnm59l22ymQPyrHrm_PuHgfr6lCATbYgOh5-8gCrfJ2EnGZjoBo8Ko4so0ij9mbhU2KDzBz7OYtEVLIXohXaR1lDl1d/s320/Screen+Shot+2020-07-10+at+1.29.03+pm.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
7. Finally let&#39;s setup MFA which we do as follows by switching to classic UI as shown below&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguihesJOTBjCyNYbATBL3ykfuqfGXlpAHj528O48vvUZRjZ8WjSOE1Ld5fCqZ52Aacel5Qp-c8cmPVozYE51sdM3U6I8R6b2WMn5XRoRsI33DvGsBcf6i9AD6ZoZF6OzwXOzxFeaxm8GD-/s1600/Screen+Shot+2020-07-10+at+1.43.24+pm.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;217&quot; data-original-width=&quot;1030&quot; height=&quot;67&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguihesJOTBjCyNYbATBL3ykfuqfGXlpAHj528O48vvUZRjZ8WjSOE1Ld5fCqZ52Aacel5Qp-c8cmPVozYE51sdM3U6I8R6b2WMn5XRoRsI33DvGsBcf6i9AD6ZoZF6OzwXOzxFeaxm8GD-/s320/Screen+Shot+2020-07-10+at+1.43.24+pm.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
8. Click on &lt;b&gt;Security&lt;/b&gt; -&amp;gt; &lt;b&gt;Multifactor &lt;/b&gt;and setup another Multifactor policy. In the screen shot below I select &quot;Email Policy&quot; and make sure it is &quot;Required&quot; along with the default policy&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-Omd0-yw6yhQcvLon9dSjPUEOMsgD-K5ntaBzu66RGGuPQMzmXuWc6iFRpAYdtyyaQ8nZ5AIoqpkYcUK1UUrVjIJ5OaLpAABNwUoiS3ZknXLsKDp_t389MAC2i1xVx3K-LiKwV0LLQzRb/s1600/Screen+Shot+2020-07-10+at+1.46.38+pm.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;778&quot; data-original-width=&quot;1143&quot; height=&quot;217&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-Omd0-yw6yhQcvLon9dSjPUEOMsgD-K5ntaBzu66RGGuPQMzmXuWc6iFRpAYdtyyaQ8nZ5AIoqpkYcUK1UUrVjIJ5OaLpAABNwUoiS3ZknXLsKDp_t389MAC2i1xVx3K-LiKwV0LLQzRb/s320/Screen+Shot+2020-07-10+at+1.46.38+pm.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
9. Now run the application making sure you set the spring active profile to DEV.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;...&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;2020-07-10 13:34:57.528&amp;nbsp; INFO 55990 --- [&amp;nbsp; restartedMain] pas.apa.apj.mfa.demo.DemoApplication&amp;nbsp; &amp;nbsp; &amp;nbsp;: The following profiles are active: DEV&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;...&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
10. Navigate to &lt;b&gt;http://localhost:8080/&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRhKYBxqRnJLr-mkeYDBYZyfEaLK0_TSof8f8Kwrqe3Ihc7XWFM6AMSouK1c5d5wYNfFRqPn87CouGAS28N48uXh1BQjiKAoNJFipA2kk_Ou64QvvT_yME5Np7Y_iBTUBKpiQ65tzmyCki/s1600/Screen+Shot+2020-07-10+at+1.39.53+pm.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;411&quot; data-original-width=&quot;1594&quot; height=&quot;82&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRhKYBxqRnJLr-mkeYDBYZyfEaLK0_TSof8f8Kwrqe3Ihc7XWFM6AMSouK1c5d5wYNfFRqPn87CouGAS28N48uXh1BQjiKAoNJFipA2kk_Ou64QvvT_yME5Np7Y_iBTUBKpiQ65tzmyCki/s320/Screen+Shot+2020-07-10+at+1.39.53+pm.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
11. Click on the &quot;&lt;b&gt;Login&lt;/b&gt;&quot; button&lt;br /&gt;
&lt;br /&gt;
Verify you are taken to the default OKTA login page&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBc6CxQlrqdUwxyy8BPaQpdTj-e9q15wR-pUS510fJ4F4eFLdAOBzLMXR9ejOZKbh5K8eaHnlhvMT6FJ1WwYZiLf3UYsc5HXMF2FTnNBPt6wtbrQaBLkzoVFQMZM2rlrMIiF4oMuUAzbOY/s1600/Screen+Shot+2020-07-10+at+1.40.09+pm.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;778&quot; data-original-width=&quot;836&quot; height=&quot;297&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBc6CxQlrqdUwxyy8BPaQpdTj-e9q15wR-pUS510fJ4F4eFLdAOBzLMXR9ejOZKbh5K8eaHnlhvMT6FJ1WwYZiLf3UYsc5HXMF2FTnNBPt6wtbrQaBLkzoVFQMZM2rlrMIiF4oMuUAzbOY/s320/Screen+Shot+2020-07-10+at+1.40.09+pm.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
12. Once logged in the second factor should then ask for a verification code to be sent to your email. Press the &quot;&lt;b&gt;Send me the code&lt;/b&gt;&quot; button&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhI8aW8yb5HN5AT6h406o7Mr1_pYC2zR23mwlnp-bnt2dyOy1X2BuFPwLIwCE_WTJEDxogCiKZNJU5C1rvw8_v4KIKN6Mtrils-d1WM4M2H2ciaQrua59-Q3nbTus3-v2JGDEuaNUzhH-lY/s1600/Screen+Shot+2020-07-10+at+1.49.11+pm.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;450&quot; data-original-width=&quot;514&quot; height=&quot;280&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhI8aW8yb5HN5AT6h406o7Mr1_pYC2zR23mwlnp-bnt2dyOy1X2BuFPwLIwCE_WTJEDxogCiKZNJU5C1rvw8_v4KIKN6Mtrils-d1WM4M2H2ciaQrua59-Q3nbTus3-v2JGDEuaNUzhH-lY/s320/Screen+Shot+2020-07-10+at+1.49.11+pm.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD82gp0LG7WGfBYaQvrhpjeJ5nDpFCugsJFwwsPj1C9A_7Ln5XRDkpo17ei6njSYXF_RoABmpYKE-FTfdDBGwyncU23ujx23PQlPg8izxBeiOnbtcp4Z4S9lgFBvR8guoNzBZXrpL5Jz6H/s1600/Screen+Shot+2020-07-10+at+1.49.22+pm.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;624&quot; data-original-width=&quot;625&quot; height=&quot;319&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD82gp0LG7WGfBYaQvrhpjeJ5nDpFCugsJFwwsPj1C9A_7Ln5XRDkpo17ei6njSYXF_RoABmpYKE-FTfdDBGwyncU23ujx23PQlPg8izxBeiOnbtcp4Z4S9lgFBvR8guoNzBZXrpL5Jz6H/s320/Screen+Shot+2020-07-10+at+1.49.22+pm.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
13. Once you enter the code sent to your email you will be granted access to the application endpoints&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiED-Ey5-0AD4mvY-k4wDjxRk6je7jzTpmKtwrXidhvfQ-uE6ckHw7duUPe-kS_09lgZO-gDOZjJKyZt8bg1uGU3VvmGX-KvHLYWL3XsQmE7Cu_Uj8bmzH5uiuULc1g6Vab4UGffnYGlzM4/s1600/Screen+Shot+2020-07-10+at+1.49.44+pm.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;529&quot; data-original-width=&quot;1600&quot; height=&quot;105&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiED-Ey5-0AD4mvY-k4wDjxRk6je7jzTpmKtwrXidhvfQ-uE6ckHw7duUPe-kS_09lgZO-gDOZjJKyZt8bg1uGU3VvmGX-KvHLYWL3XsQmE7Cu_Uj8bmzH5uiuULc1g6Vab4UGffnYGlzM4/s320/Screen+Shot+2020-07-10+at+1.49.44+pm.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3hVXNjQzJF2iFywx3T2ac3JmS1VgzCEsuAYSKdYHAWdmy7FRiWXsvwPvtVjnmAZV8MhjrlKT8btRvLQ5YHKU9eo-NKei8BHYOxJ-WyvZMcbSds9vSNSf_3F0_s03qMrN2VFNvb49Wx22f/s1600/Screen+Shot+2020-07-10+at+2.00.07+pm.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;634&quot; data-original-width=&quot;701&quot; height=&quot;289&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3hVXNjQzJF2iFywx3T2ac3JmS1VgzCEsuAYSKdYHAWdmy7FRiWXsvwPvtVjnmAZV8MhjrlKT8btRvLQ5YHKU9eo-NKei8BHYOxJ-WyvZMcbSds9vSNSf_3F0_s03qMrN2VFNvb49Wx22f/s320/Screen+Shot+2020-07-10+at+2.00.07+pm.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7HaslpIYB9ZNj0-q7hzLJWYPJRnh9NNSuqOedKlid4dink3D_8iHuH_AjEstvxyXKWKFdIBYayDxU8OhFStQ8Z9M2WvIq37NG_fORoIaTb6zve1HDX4k-Nixt-vs3VMm23mWc3WJgvwGl/s1600/Screen+Shot+2020-07-10+at+1.59.57+pm.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;655&quot; data-original-width=&quot;1598&quot; height=&quot;131&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7HaslpIYB9ZNj0-q7hzLJWYPJRnh9NNSuqOedKlid4dink3D_8iHuH_AjEstvxyXKWKFdIBYayDxU8OhFStQ8Z9M2WvIq37NG_fORoIaTb6zve1HDX4k-Nixt-vs3VMm23mWc3WJgvwGl/s320/Screen+Shot+2020-07-10+at+1.59.57+pm.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
14. Finally to deploy the application to Tanzu Application Service perform these steps below&lt;br /&gt;
&lt;br /&gt;
- Create a manifest.yaml as follows&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;---&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;applications:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;- name: pas-okta-boot-app&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; memory: 1024M&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; buildpack: https://github.com/cloudfoundry/java-buildpack.git#v4.16&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; instances: 2&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; path: ./target/demo-0.0.1-SNAPSHOT.jar&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; env:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&amp;nbsp; &amp;nbsp; JBP_CONFIG_OPEN_JDK_JRE: &#39;{ jre: { version: 11.+}}&#39;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
- Package the application as follows&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ ./mvnw -DskipTests package&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
- In the DEV OTKA console create a second application which will be for the deployed application on Tanzu Application Service which refers to it&#39;s FQDN rather then localhost as shown below&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqt4Rtdp8Th_UsevxGGf6OS2s-FQP9ktP7FSbTyVNbsWoKYf50IVuWpuLGj0PoqwYUaBMFtv8gX09MLN3cqL2ciSbFPTXwHo0Bpv5Fa-AarHPL3_qiwJfWkFA0_XQQ1j2H2JjcrloBavvg/s1600/Screen+Shot+2020-07-10+at+2.07.09+pm.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1042&quot; data-original-width=&quot;1063&quot; height=&quot;313&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqt4Rtdp8Th_UsevxGGf6OS2s-FQP9ktP7FSbTyVNbsWoKYf50IVuWpuLGj0PoqwYUaBMFtv8gX09MLN3cqL2ciSbFPTXwHo0Bpv5Fa-AarHPL3_qiwJfWkFA0_XQQ1j2H2JjcrloBavvg/s320/Screen+Shot+2020-07-10+at+2.07.09+pm.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
- Edit &quot;&lt;b&gt;application.yml&quot; &lt;/b&gt;to ensure you set the following correctly for the new &quot;&lt;b&gt;Application&lt;/b&gt;&quot; we created above.&lt;br /&gt;
&lt;br /&gt;
You will need to edit&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;issuer&lt;/li&gt;
&lt;li&gt;client-id&lt;/li&gt;
&lt;li&gt;client-secret&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
- Push the application using &quot;&lt;b&gt;cf push -f manifest.yaml&lt;/b&gt;&quot;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;$ cf apps&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;Getting apps in org papicella-org / space apple as papicella@pivotal.io...&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;OK&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;name&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; requested state&amp;nbsp; &amp;nbsp;instances&amp;nbsp; &amp;nbsp;memory&amp;nbsp; &amp;nbsp;disk&amp;nbsp; &amp;nbsp;urls&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;pas-okta-boot-app&amp;nbsp; &amp;nbsp;started&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1/1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1G&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1G&amp;nbsp; &amp;nbsp; &amp;nbsp;pas-okta-boot-app.cfapps.io&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #e69138;&quot;&gt;That&#39;s It!!!!&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;http://feeds.feedburner.com/TheBlasFromPas&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theblasfrompas.blogspot.com/feeds/1124226826544667000/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6527688743456205256/1124226826544667000' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/1124226826544667000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6527688743456205256/posts/default/1124226826544667000'/><link rel='alternate' type='text/html' href='http://theblasfrompas.blogspot.com/2020/07/multi-factor-authentication-mfa-using.html' title='Multi-Factor Authentication (MFA) using OKTA with Spring Boot and Tanzu Application Service'/><author><name>Pas Apicella</name><uri>http://www.blogger.com/profile/09389663166398991762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='15' src='http://wiki.r31skylineclub.com/images/thumb/d/d4/Gts2-side.jpg/100px-Gts2-side.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBivZWgcyC6vhbMaJo6hdV3bXvbwPbsD0SoyIYXjYRr84RFelt6q025OHWy3XSaHgbcToVXclJvLuYs42XjmioCEtHBVb64jsgbl-xPNZHcmUgMrHDVJUNrtcKZm-pAbhlHhzPtuP50LAT/s72-c/Screen+Shot+2020-07-10+at+2.19.39+pm.png" height="72" width="72"/><thr:total>0</thr:total></entry></feed>