Bob Kuszewski · May 26, 2023 go to post

Excellent article!  

A note for people using Kubernetes or Containers in the cloud:   This same advice applies for Kubernetes-based and containers-based deployments.  When you create a Kubernetes cluster you assign VM resources (NodeGroups, for example) and you'll want to use the advice in this article to create the right nodes and storageclass for your deployment.

Bob Kuszewski · May 18, 2023 go to post

If you choose to create your own container for C/E, you're responsible for the container and for how it interacts with the host operating system. For example, InterSystems can't give you assistance with creating your Dockerfile or debugging any problems you might have with the container-storage interface.

We will, of course, continue to support your usage of C/E. For example, questions about monitoring your queues or creating business operations.

If you have detailed questions, please reach out to me.

Bob Kuszewski · May 1, 2023 go to post

Telling you something you already know:  You've got some bad state in your container image or in the persistent storage. 
I think we'd need to see more to be able to help:
* What's the command you're using to run the container?  All the environment variables and mount points is super-important here
* What's the container you're running?  If its your own, maybe the Dockerfile would help

Bob Kuszewski · May 1, 2023 go to post

Here's an example I had put together in a different context.  It sets up a single IRIS instance with a WebGateway and IAM.  It also sets up TLS on the IAM instance.

apiVersion: intersystems.com/v1alpha1
kind: IrisCluster
metadata:
  name: fhir-iam
spec:
  imagePullSecrets:
    - name: icr-secret
  storageClassName: gp2
  licenseKeySecret:
    name: fhir-iris-key-secret
  configSource:
    name: fhir-iris-cpf
  tls:
    iam:
      secret:
        secretName: fhir-iam-tls
  topology:
    iam:
      image: containers.intersystems.com/intersystems/iam:3.0.2.0-4
    webgateway:  
      image: containers.intersystems.com/intersystems/webgateway:2022.1.0.209.0
      type: apache
      replicas: 1
      applicationPaths:
        - /csp/sys
        - /myfhirserver
        - /csp/healthshare
      alternativeServers: LoadBalancing
    data:
      image: containers.intersystems.com/intersystems/irishealth:2022.1.0.209.0
  serviceTemplate:
    spec:
      type: ClusterIP
Bob Kuszewski · Mar 15, 2023 go to post

From a container running in docker, you can always reference host.docker.internal which resolves to the hostname of your host.  If you need an external IP address of the host, then you'll need to do something to pass in the ipaddress to the container

Bob Kuszewski · Feb 13, 2023 go to post

Congrats everyone.  There were so many worthy projects this time around that voting was really tricky.

Bob Kuszewski · Feb 7, 2023 go to post

It's a good question.  I had thought raising an irisbuiltins.SQLError would do the trick, but it still returns the wrapped exception you see.  I'll put in for an enhancement.

Bob Kuszewski · Jan 25, 2023 go to post

This is a temporary problem. We've having problems internally with our ARM container build servers and didn't want to hold up the preview release while we fix it.  We expect these problems to be resolved before 2022.3's GA.

Bob Kuszewski · Oct 19, 2022 go to post

Hi!  Good to hear from you again.

IKO doesn't add any annotations (yet!).  But the ability to specify annotations is on our backlog

Bob Kuszewski · Oct 14, 2022 go to post

There is not.  Cache has not been ported to ARM64.  IRIS has ARM ODBC drivers if that's an option for your application.

Bob Kuszewski · Oct 13, 2022 go to post

IKO adds labels to everything it creates.  You can use these labels to create further annotations as you see fit.  For example the following adds the annotation myAnnotation: myAnnotatedValue to all of the pods in the irisCluster named sample:
kubectl annotate -l intersystems.com/name=sample pods  myAnnotation=myAnnotatedValue

Bob Kuszewski · Oct 5, 2022 go to post

Parameters aren't available in embedded python.  An easy workaround is to create a Property that reflects the parameter or to create an objectscript method to return the parameter.

I'm curious about the use case.

Bob Kuszewski · Sep 8, 2022 go to post

Glad to hear the interest in Python.

When you use embedded python, IRIS loads Python into memory in the process (via CPython).  The specific version of Python depends on your OS.  That's documented here:  https://docs.intersystems.com/irisforhealthlatest/csp/docbook/DocBook.U…
Loading Python into the IRIS process does just what you think it does - not a separate process and references in Python to ObjectScript objects are in-memory.  So there's no performance difference between using Embedded Python from IRIS or starting with a Python program and `import iris`.

Bob Kuszewski · Aug 2, 2022 go to post

The start.sh script just calls docker-compose up.  You should be able to do podman-compose up to start SAM.  The first time it runs, it needs to download the containers (you can see what they are in the docker-compose.yaml file) if you don't already have them in your local podman cache.

During normal runtime, SAM doesn't require access to the internet.  That said, I haven't personally tested SAM without internet access.

Good luck!  Let us know how it goes.

Bob Kuszewski · Jul 26, 2022 go to post

Yes, we are aware of the requests and are working on them.  This article is largely a summary of container-related conversation we had at Global Summit and there are various tasks happening in the company.  I'm sure we'll have more to announce as the various changes are ready.  Thanks.

Bob Kuszewski · Jul 15, 2022 go to post

It sounds like you're looking for persistent storage, which means you want to use the Durable %SYS feature.  Here's the info to get you started:  https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cl….

To answer your specific questions:

1. Yes, IRIS works with any StorageClass that your Kubernetes cluster has installed, including any storage class you might have created for EBS or EFS. If you haven't yet tried it, the InterSystems Kubernetes Operator can simplify deployments in Kubernetes.  Even if you don't use IKO in production, it's a good way to see how everything should be configured.  https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cl…

2. IRIS 2022.1 also includes first-class support for AWS SQS.  You can use it in your Productions or use ObjectScript to send messages to it.  https://docs.intersystems.com/irislatest/csp/documatic/%25CSP.Documatic…

Bob Kuszewski · Jun 6, 2022 go to post

containers.intersystems.com/intersystems/irishealth-ml:2022.1.0.209.0 is available on ICR, if that's what you're asking.  We didn't list every single container in the announcement because, well, there are a lot of them

Bob Kuszewski · Jun 6, 2022 go to post

Community images are published to DockerHub, as is the longstanding practice. Docker is currently semi-retiring their old "store" portion of DockerHub leaving a confusing interface to find our containers.  We expect that Docker will clear this up in the next few months.

In the meanwhile, you can easily find InterSystems community containers via the InterSystems Organization on DockerHub:

https://hub.docker.com/u/intersystems
 

Bob Kuszewski · Jun 6, 2022 go to post

As is our long standing practice, preview releases are taken down once a GA release is available.  We currently have the following versions available on IRC:  2019.1.3.722.0, 2020.1.3.521.0, 2021.1.2.338.0, 2021.2.0.651.0, 2022.1.0.209.0

Bob Kuszewski · Jun 3, 2022 go to post

Unfortunately, we do not have a workaround for Docker's breaking change included in 2022.1.  The instructions in my Docker post should still be followed.

Bob Kuszewski · May 16, 2022 go to post

The OpenTelemetry collector should be able to collect metrics from the IRIS metrics API as well as the structured logs from the logdmn.  I don't have a working example configuration file to show you yet but I expect to have one by June 20th.  

As for a completely shameless plug here for my session on Observability in IRIS at Global Summit, I'm planning to cover the pillars of modern observability stacks, how IRIS fits into them.  At the moment, I'm still deciding which commercial stack to demo (DataDog, perhaps?).  I'll also be covering SAM, recent & future updates,  and how it fits into the bigger observability picture

Bob Kuszewski · Apr 20, 2022 go to post

In Embedded Python, exceptions flow back-and-forth between ObjectScript and Python as you'd expect. 

If your Python code raises an exception, but does not handle it, then the exception is passed to the ObjectScript side.  And vice-versa.  In your example, I'm not sure why you're handling the exception in python and then returning an exception object to the caller.  Why not just not catch the exception and let it get passed along to the ObjectScript side?