Containerization is a lightweight alternative to full machine virtualization that involves encapsulating an application in a container with its own operating environment.
In an earlier article (hope, you’ve read it), we took a look at the CircleCI deployment system, which integrates perfectly with GitHub. Why then would we want to look any further? Well, GitHub has its own CI/CD platform called GitHub Actions, which is worth exploring. With GitHub Actions, you don’t need to rely on some external, albeit cool, service.
In this article we’re going to try using GitHub Actions to deploy the server part of InterSystems Package Manager, ZPM-registry, on Google Kubernetes Engine (GKE).
One of my colleagues at InterSystems encountered an unexpected issue when running InterSystems IRIS on a Macintosh in a container using Docker for Mac. I’d like to share what we found, so you might avoid running into similar issues.
Most of us are more or less familiar with Docker. Those who use it like it for the way it lets us easily deploy almost any application, play with it, break something and then restore the application with a simple restart of the Docker container.
Those who use Dockerfile to work with InterSystems IRIS often need to execute several lines of ObjectScript. For me, this was a game of "escaping this and that" every time just to shoot a few commands on ObjectScript to IRIS. Ideally, I'd prefer to code ObjectScript without any quotes and escaping.
Recently I found a nice "hack" on how this could be improved to exactly this state. I got this from @Dmitry Maslennikov's repo and this lets you use Objectscript in a way as you would type it in IRIS terminal.
Recently I was fielding some questions that someone had about some bugs that crop up on Docker for Mac, and it reminded me of what Shakespeare wrote in his famous tragedy about large-scale software orchestration, Kubelet: the Prince of Benchmark.
This article is a continuation of Deploying InterSystems IRIS solution on GKE Using GitHub Actions, in which, with the help of GitHub Actions pipeline, our zpm-registry was deployed in a Google Kubernetes cluster created by Terraform. In order not to repeat, we’ll take as a starting point that:
This is a continuation of my story about the development of my project isc-tar started in the first part.
Just having tests is not enough, it does not mean that you will run tests after all changes. Running tests should be automated, and when you cover all your functionality with tests, everything should work well after any change in any place. And Continuous Integration (CI) helps to keep the code and deployment procedure with as fewer bugs as possible and automates the routine procedures, like publishing releases.
I use GitHub to store the source code. And some time ago GitHub started to work on its own CI/CD platform and named it GitHub Actions. It is not widely available, yet. You have to be signed as a beta tester for this feature, as I did. GitHub Actions uses quite a different way how to deal with a build workflow. What is important that Github Actions allows to use Docker, and it’s quite easy to customize available actions. And interesting that GitHub Actions is really much bigger than any classic CI like we have in Travis, Circle or Gitlab CI and so on. You can find more in the official documentation.
Note: with support for Overlay storage driver for InterSystems IRIS containers this article is no longer relevant. The article is left here for archive purposes.
I have just created a new Global Master Topic, "IRIS Cheatsheets". IRIS has introduced a lot of new functionality, especially in scripting languages, FHIR R4 support, enhanced Interoperability Tools, and IRIS Analytics. Having spent 35 years working on Windows-based PC's and Laptops, I have surprisingly little knowledge of Linux, Docker and Git. Furthermore, I have written almost every application and Interface in ObjectScript with splatterings of SQL, .Net, and Java Gateways and the most basic knowledge of WinSCP, Putty, SSH. All that changed when I received my first Raspberry Pi.
If you're deploying to more than one environment/region/cloud/customer, you will inevitably encounter the issue of configuration management.
While all (or just several) of your deployments can share the same source code, some parts, such as configuration (settings, passwords) differ from deployment to deployment and must be managed somehow.
In this article, I will try to offer several tips on that topic. This article talks mainly about container deployments.
As you likely are aware, the new version of InterSystems IRIS for Health (I4H) it's already available in Docker Hub. It's the Community version and is free and fully functional. There have been comments about it in other articles and posts,... so today I won't add anything about features. Here I want to explore "the mistery about the disappearance, or better, absence of our persistent data when we run a container with the durable option" (I didn't find a terrifying font to emphasize the thriller... post editor is not terrific for styling ) .
InterSystems has also released IRIS as containerized deployments. This post is to demonstrate how InterSystems IRIS and applications those rely on IRIS a backend can be packaged into an image and be run in other machines in containers and how simple it is to do that.
A container runs image/s which have all the necessary executables, binary code, libraries, and configuration files. And the images can be moved from one machine to another, and an images repository like Docker Hub can simplify that process.
I have used an application from Open Exchange for this demo.
I want to address the nasty problems about reading a flat text in ASCII, UTF* explicitly excluding HTML, EBCDIC, and other encoding. According to Wikipedia there are at least 8 variations of control characters.
CR+LF is typical for Windows
LF is typical for the Linux/UNIX world
CR is Mac's favorite
As you can deduct from the names the inspiration comes from mechanical typewriters.
I work as an Integration Engineer for United States Department of Veterans Affairs (VA). I work on a Health Connect production which processes many RecordMap files. I do not fully understand RecordMaps and I wanted to develop an application for the Interoperability contest where I could learn more about working with RecordMaps. I browsed InterSystems documentation for inspiration on how to start. I was happy to find CSV Record Wizard.
For containers in ECS files are not editable if the file size is larger than ephemeral storage free space. For example if I have 4Gb free I can't edit 8Gb file. But if I start container with 50 Gb of ephemeral storage (24Gb free) I can edit my 8Gb file just fine.
InterSystems Developer Community analytics. Project made with InterSystems IRIS BI (DeepSee), Power BI and Logi Report Designer to visualize and analyze members, articles, questions, answers, views and other pieces of content and activity on InterSystems Developer Community.
You can see your own activity, articles and questions. Track how your contribution changes developer community.
Kubernetes is an open-source container orchestration framework developed by Google. In essence, it controls container speed and helps you manage applications consisting of multiple containers. Additionally, it allows you to operate them in different environments, e.g., physical machines, virtual machines, Cloud environments, or even hybrid deployment environments.
In case you're planning on deploying IRIS For Health, or any of our containerized products, via the IKO on OpenShift, I wanted to share some of the hurdles we had to overcome.
As with any IKO based installation, we first need to deploy the IKO itself. However we were getting this error:
Allow limited durability for demo and development IRIS-Docker-micro-Durability During development of a container based demo I found the need to access a fresh docker an instance of IRIS image (e.g intersystems/iris-community:2020.2.0.199.0) over and over. To bypass loading my code repeatedly I developed this workaround.
For those that, at some point, need to test what means that of ECP for horizontal escalability (computing power and/or users and processes concurrency), but they're lazy o have no much time to build the environment, configure the server nodes, etc..., I've just published in Open Exchange the app/sample OPNEx-ECP Deployment .
A few weeks ago I posted an announcement about a JavaScript-based interface for our mg_web WebServer interfacing addon module. mg_web isn't just restricted to use by JavaScript developers though. Many readers will be ObjectScript developers who are more used to using CSP as their web gateway. Some may even have much older legacy WebLink-based applications (and be wondering how to support them given that IRIS does not support WebLink).
I have been struggling with a docker run command that kept crashing, the error message was too generic to point me to the right direction.
Since the container is shut down after the failure, I was unable to login to it in order to figure out the problem.
I had to run the container in a way that I'll be able to log into it before it crashed, so I found the adding -u false prevents the docker run command to run the iris session IRIS and the container stayed up and running. then I was able to log into it using:
If you plan on using the nginx server to front end you IRIS instance (as opposed to the standard apache web gateway install) you will need to add a few configuration options into the CSP.conf file in order for all urls to work. It took me a little bit to figure this out but this seems to be the configuration that works.
The Istio Service Mesh is commonly used to monitor communication between services in applications. The "battle-tested" sidecar mode is its most common implementation. It will add a sidecar container to each pod you have in your namespace that has Istio sidecar injection enabled.
Sometimes customers need a small IRIS instance to do something in the cloud and shut it down, or they need hundreds of containers (i.e. one per end user or one per interface) with small workloads. This exercise came about to see how small an IRIS instance could be. For this exercise we focused on what is the smallest amount of memory we can configure for an IRIS instance.Do you know all the parameters that affect the memory allocated by IRIS ?