You might want to add /usr/irissys/csp/bin/CSP.ini to the list of files to copy. Without it chances are CSP Gateway would not be authorized to communicate to IRIS. is my #1 choice for pretty much all of the topics you mentioned. Materials there are good enough for any basic and intermediate level of certification.

For advanced/professional level courses I sometimes go for extra content. Examples here: for Pro and Speciality - level courses on AWS for k8s

Udemy would have some good materials too, but you need to be careful here... This platform would accept anyone who is willing to produce training videos, so the quality might vary. Look at the reviews and recommendations.

For a simple case (add a couple of classes to the USER namespace) - what would be space savings here?

I can't picture how "flaky networking" can introduce such a problem here. Longhorn (or any other k8s distributed storage) provides a Persistent Volume level of abstraction for your Deployments and Stateful Sets and takes care of appropriate failover and isolation.

If you try to intentionally start multiple IRIS instances against the same volume, the situation would be similar to trying to start two IRIS instances on the same physical machine, mounting the same /mgr directory. Your usual IRIS-level protection (lck files) would kick in and only one IRIS instance would be able to successfully mount your mgr directory.

Michael, a similar solution (HA without mirroring) can be achieved natively with IRIS/Cache' on VMWare vSphere. Here is the article by @Murray Oldfield on this:  Essentially VMWare vSphere would take care of the compute and storage high availability across multiple hosts, playing the same role as k8s and Longhorn in this article. VMWare also advancing its own Kubernetes offering - you might want to take a look at project Tanzu.

Thanks @Luca Ravazzolo !

The snapshot feature is indeed pretty new. I even had to change the version from to while working on the article.


s sc=##class(%ZEN.Auxiliary.jsonSQLProvider).%WriteJSONFromSQL("json","SELECT Name FROM Sample.Person")