Integrate Coveo with Container World
akhilsharmaspotlight

Integrate Coveo with Container World


This post is in continuation to the spotlight post Coveo for Search. In that post we discussed how Coveo can be an amazing product if you plan to use Coveo for all your search and indexing needs. Now in this post, I’m going to give a 1000 overview of how to use Coveo within your container world. When I talk about containers, I’m including Docker and Kubernetes, both! But I can confidently say, you can use this for other containerization platforms as well if you need to. It’s easy to integrate if you understand the concept!

Introduction

I have been working with Horizontal for close to 3 years now and we play a lot with Sitecore. Hence, I’m going to give an example integration 1000 feet walk-through of integrating Coveo for Sitecore with Sitecore Containers. Now you must be wondering that telling integration example is good but what’s the deal with 1000 feet walk-through? Why not a detailed walk-through?
The answer to this question is that I work at Horizontal as a Senior DevOps Engineer. Horizontal is a System Integrator Partner with Coveo. Hence, I get access to a lot of technical insights and developments from both Coveo and Sitecore. An interesting fact here is that Coveo has NOT officially released container integration for Coveo for Sitecore. So, you would get an idea why I can’t give a complete walk-through. But hang on, you can expect the official release and support within this month, yes November 2021! And then I’ll post a complete detailed walk-through as well.

Now lets discuss integration from 1000 feet!

Sitecore official made an entry into container realm last year on 04th August 2020! That actually rolled a lot of eyes and Horizontal got a lot of queries for container integration. Being a Platinum partner for Sitecore, we were ready for the challenge and we started working on the implementation. The implementation went just perfectly and we were able to rollout the container carpets to a lot of clients. Then came a few clients who wanted something good for their search functionality. Something with the power of AI and Machine Learning! We already had integrated Coveo for such needs in PaaS and IaaS platforms, so we did had some idea of integration and took on the challenge of integration Coveo with Sitecore containers.

We worked closely with Coveo team for almost 1.5 months on the implementation. And the end results were just amazing! We were able to successfully implement Coveo for Sitecore containers.

How we did it

Step 1: Download the official Coveo for Sitecore package from Coveo

Step 2: Extract the scwdp package and separate the content for CM and Databases.

  • Create a new folder, e.g. C:\ModuleAssets
  • Create the following folder structure:
    1. C:\ModuleAssets\module\cm\content
    2. C:\ModuleAssets\module\db
  • Unzip your scwdp.zip
  • Copy all dacpac files (in the root of the zip folder) into C:\ModuleAssets\module\db. Make sure to rename them with Sitecore.<databaseName>.dacpac format (e.g. Sitecore.master.dacpac, Sitecore.core.dacpac)
  • Copy the contents of (Unzipped scwdp folder)\Content\Website to C:\ModuleAssets\module\cm\content

Step 3: Now install the content on CM. This installation is just like the way we install any other Sitecore module (SXA, JSS, etc)

  • COPY –from=coveo \module\cm\content .\
  • COPY –from=coveo \module\tools \module\tools
  • RUN C:\module\tools\Initialize-Content.ps1 -TargetPath .\; ` Remove-Item -Path C:\module -Recurse -Force;

Step 4: Now install the content on database container images like mssql & mssql-init. It’s also just like the same as done with traditional modules.

  • COPY –from=coveo \module\db \coveo_data
  • RUN C:\DeployDatabases.ps1 -ResourcesDirectory C:\coveo_data; ` Remove-Item -Path C:\coveo_data -Recurse -Force;

Step 5: Push the created custom image to an your Docker registry.

Step 6: Run your containers

Step 7: Activate Coveo on containers! This can be done from the Sitecore dashboard or using the API. You can get more insight here

This was all regarding integration of Coveo with Sitecore containers from 1000 overview. There’s more and a lot of automation to it form here. I could have provided the dockerfiles and other automated stuff but I’ll let Coveo come out with the official solution first.