LoginSignup
1
2

More than 3 years have passed since last update.

OpenShift Operatorを使ってIBM MQをデプロイする

Posted at

IBM MQ 9.2は、OpenShiftのOperatorに対応しており、簡単にクラスターにデプロイできるようになっている。

基本的には以下の公式の手順に従えばよい。

https://www.ibm.com/support/knowledgecenter/ja/SSFKSJ_9.2.0/com.ibm.mq.ctr.doc/ctr_install_uninstall.html

カタログソースの追加

デフォルトのOperator HubにはIBM MQは表示されないことと思う。まずはカタログソースを追加する。

以下のyamlファイルを作成する。

operator-source-cs.yaml
apiVersion: operators.coreos.com/v1alpha1
kind: CatalogSource
metadata:
  name: opencloud-operators
  namespace: openshift-marketplace
spec:
  displayName: IBMCS Operators
  publisher: IBM
  sourceType: grpc
  image: docker.io/ibmcom/ibm-common-service-catalog:latest
  updateStrategy:
    registryPoll:
      interval: 45m
operator-source-ibm.yaml
apiVersion: operators.coreos.com/v1alpha1
kind: CatalogSource
metadata:
  name: ibm-operator-catalog
  namespace: openshift-marketplace
spec:
  displayName: ibm-operator-catalog 
  publisher: IBM Content
  sourceType: grpc
  image: docker.io/ibmcom/ibm-operator-catalog
  updateStrategy:
    registryPoll:
      interval: 45m

上記の2ファイルをクラスターに適用する。

$ oc apply -f operator-source-cs.yaml
catalogsource.operators.coreos.com/opencloud-operators created
$ oc apply -f operator-source-ibm.yaml
catalogsource.operators.coreos.com/ibm-operator-catalog created

$ oc get catalogsource -n openshift-marketplace
NAME                   DISPLAY                TYPE   PUBLISHER     AGE
certified-operators    Certified Operators    grpc   Red Hat       186d
community-operators    Community Operators    grpc   Red Hat       186d
ibm-operator-catalog   ibm-operator-catalog   grpc   IBM Content   28s
opencloud-operators    IBMCS Operators        grpc   IBM           59s
redhat-marketplace     Red Hat Marketplace    grpc   Red Hat       46d
redhat-operators       Red Hat Operators      grpc   Red Hat       186d

Operator Groupの作成

Operatorのインストールは、デフォルトだとすべてのネームスペース(プロジェクト)に対して行われるが、今回は特定のネームスペースに限定する。特定のネームスペースに限定する場合は、そのネームスペースにOperator Groupを作成する必要があるようだ。

mq-operator-group.yaml
apiVersion: operators.coreos.com/v1
kind: OperatorGroup
metadata:
  name: ibm-mq-operator
  namespace: kame-test 
spec:
  targetNamespaces:
  - kame-test
$ oc apply -f mq-operator-group.yaml
operatorgroup.operators.coreos.com/ibm-mq-operator created

Subscription Objectの作成

以下のyamlファイルを作成して適用する。チャネルのバージョンは現時点で最新の1.4とした。

mq-sub.yaml
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
  name: ibm-mq
  namespace: kame-test 
spec:
  channel: v1.4
  name: ibm-mq 
  source: ibm-operator-catalog 
  sourceNamespace: openshift-marketplace
$ oc apply -f mq-sub.yaml
subscription.operators.coreos.com/ibm-mq created

QMGRのデプロイ

まずはSWライセンス認証のためのシークレットを作成する。キーは以下のリンクから取得する(要IBM ID)。

https://myibm.ibm.com/products-services/containerlibrary

$ oc create secret docker-registry ibm-entitlement-key -n kame-test \
--docker-server=cp.icr.io \
--docker-username=cp \
--docker-password=XXXXXXXXXXX \
--docker-email=XXXXXXXX
secret/ibm-entitlement-key created

QMGRデプロイ用のyamlを作成し、デプロイする。今回はとりあえず動くものをデプロイする目的で、永続ストレージは利用しない。実運用で利用する場合はyamlにボリューム情報を記載するのがよいと思われる。

test-qmgr01.yaml
apiVersion: mq.ibm.com/v1beta1
kind: QueueManager
metadata:
  name: test-qmgr01
  namespace: kame-test
spec:
  version: 9.2.1.0-r1
  license:
    accept: true
    license: L-APIG-BMJJBM
  web:
    enabled: true
  queueManager:
    name: "QUICKSTART"
    storage:
      queueManager:
        type: ephemeral
  template:
    pod:
      containers:
       - name: qmgr
         env:
         - name: MQSNOAUT
           value: "yes"
$ oc apply -f test-qmgr01.yaml
queuemanager.mq.ibm.com/test-qmgr01 created

デプロイが成功すると、ステータスがRunningになる。
デフォルトだと1つのPodで1コア/1GBのメモリーを必要としているため、クラスターのリソース起因でPendingになっていないか確認するとよい。

$ oc get queuemanager -n kame-test
NAME          PHASE
test-qmgr01   Running

実体としては、StatefulSetとしてデプロイされていることが分かる。また、Routerが自動的に作成されている(Webコンソール用も含めて)。

$ oc get all -n kame-test
NAME                                               READY   STATUS    RESTARTS   AGE
pod/ibm-common-service-operator-769d788d44-wdjkc   1/1     Running   0          21m
pod/ibm-mq-7848fd4d66-b65t2                        1/1     Running   0          21m
pod/test-qmgr01-ibm-mq-0                           1/1     Running   0          4m53s

NAME                                 TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)             AGE
service/ibm-mq-webhook               ClusterIP   172.21.187.212   <none>        443/TCP             21m
service/test-qmgr01-ibm-mq           ClusterIP   172.21.104.164   <none>        9443/TCP,1414/TCP   10m
service/test-qmgr01-ibm-mq-metrics   ClusterIP   172.21.222.188   <none>        9157/TCP            10m

NAME                                          READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/ibm-common-service-operator   1/1     1            1           21m
deployment.apps/ibm-mq                        1/1     1            1           21m

NAME                                                     DESIRED   CURRENT   READY   AGE
replicaset.apps/ibm-common-service-operator-769d788d44   1         1         1       21m
replicaset.apps/ibm-mq-7848fd4d66                        1         1         1       21m

NAME                                  READY   AGE
statefulset.apps/test-qmgr01-ibm-mq   1/1     10m

NAME                                                 HOST/PORT                                                                                                               PATH   SERVICES              PORT      TERMINATION   WILDCARD
route.route.openshift.io/test-qmgr01-ibm-mq-qm       test-qmgr01-ibm-mq-qm-kame-test.XXXXXXXXXXXXXXXXXXXXX.jp-tok.containers.appdomain.cloud           test-qmgr01-ibm-mq    1414      passthrough   None
route.route.openshift.io/test-qmgr01-ibm-mq-web      test-qmgr01-ibm-mq-web-kame-test.XXXXXXXXXXXXXXXXXXXXX.jp-tok.containers.appdomain.cloud          test-qmgr01-ibm-mq    9443      passthrough   None

NAME                                  PHASE
queuemanager.mq.ibm.com/test-qmgr01   Running

Podにログインすると、runmqscが実行可能になっています。

$ oc -n kame-test rsh test-qmgr01-ibm-mq-0 
sh-4.4$ 
sh-4.4$ runmqsc
5724-H72 (C) Copyright IBM Corp. 1994, 2020.
Starting MQSC for queue manager QUICKSTART.

dis q(*)
     1 : dis q(*)
AMQ8409I: Display Queue details.
   QUEUE(AMQ.600C0F612593CC02)             TYPE(QLOCAL)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.ADMIN.ACCOUNTING.QUEUE)    TYPE(QLOCAL)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.ADMIN.ACTIVITY.QUEUE)      TYPE(QLOCAL)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.ADMIN.CHANNEL.EVENT)       TYPE(QLOCAL)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.ADMIN.COMMAND.EVENT)       TYPE(QLOCAL)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.ADMIN.COMMAND.QUEUE)       TYPE(QLOCAL)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.ADMIN.CONFIG.EVENT)        TYPE(QLOCAL)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.ADMIN.LOGGER.EVENT)        TYPE(QLOCAL)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.ADMIN.PERFM.EVENT)         TYPE(QLOCAL)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.ADMIN.PUBSUB.EVENT)        TYPE(QLOCAL)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.ADMIN.QMGR.EVENT)          TYPE(QLOCAL)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.ADMIN.STATISTICS.QUEUE)    TYPE(QLOCAL)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.ADMIN.TRACE.ACTIVITY.QUEUE)
   TYPE(QLOCAL)                         
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.ADMIN.TRACE.ROUTE.QUEUE)   TYPE(QLOCAL)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.AMQP.COMMAND.QUEUE)        TYPE(QLOCAL)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.BROKER.ADMIN.STREAM)       TYPE(QLOCAL)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.BROKER.CONTROL.QUEUE)      TYPE(QLOCAL)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.BROKER.DEFAULT.STREAM)     TYPE(QLOCAL)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.BROKER.INTER.BROKER.COMMUNICATIONS)
   TYPE(QLOCAL)                         
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.CHANNEL.INITQ)             TYPE(QLOCAL)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.CHANNEL.SYNCQ)             TYPE(QLOCAL)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.CHLAUTH.DATA.QUEUE)        TYPE(QLOCAL)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.CICS.INITIATION.QUEUE)     TYPE(QLOCAL)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.CLUSTER.COMMAND.QUEUE)     TYPE(QLOCAL)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.CLUSTER.HISTORY.QUEUE)     TYPE(QLOCAL)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.CLUSTER.REPOSITORY.QUEUE)
   TYPE(QLOCAL)                         
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.CLUSTER.TRANSMIT.MODEL.QUEUE)
   TYPE(QMODEL)                         
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.CLUSTER.TRANSMIT.QUEUE)    TYPE(QLOCAL)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.DDELAY.LOCAL.QUEUE)        TYPE(QLOCAL)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.DEAD.LETTER.QUEUE)         TYPE(QLOCAL)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.DEFAULT.ALIAS.QUEUE)       TYPE(QALIAS)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.DEFAULT.INITIATION.QUEUE)
   TYPE(QLOCAL)                         
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.DEFAULT.LOCAL.QUEUE)       TYPE(QLOCAL)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.DEFAULT.MODEL.QUEUE)       TYPE(QMODEL)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.DEFAULT.REMOTE.QUEUE)      TYPE(QREMOTE)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.DOTNET.XARECOVERY.QUEUE)   TYPE(QLOCAL)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.DURABLE.MODEL.QUEUE)       TYPE(QMODEL)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.DURABLE.SUBSCRIBER.QUEUE)
   TYPE(QLOCAL)                         
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.HIERARCHY.STATE)           TYPE(QLOCAL)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.INTER.QMGR.CONTROL)        TYPE(QLOCAL)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.INTER.QMGR.FANREQ)         TYPE(QLOCAL)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.INTER.QMGR.PUBS)           TYPE(QLOCAL)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.INTERNAL.REPLY.QUEUE)      TYPE(QLOCAL)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.INTERNAL.REQUEST.QUEUE)    TYPE(QLOCAL)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.JMS.TEMPQ.MODEL)           TYPE(QMODEL)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.MQEXPLORER.REPLY.MODEL)    TYPE(QMODEL)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.MQSC.REPLY.QUEUE)          TYPE(QMODEL)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.NDURABLE.MODEL.QUEUE)      TYPE(QMODEL)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.PENDING.DATA.QUEUE)        TYPE(QLOCAL)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.PROTECTION.ERROR.QUEUE)    TYPE(QLOCAL)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.PROTECTION.POLICY.QUEUE)   TYPE(QLOCAL)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.REST.REPLY.QUEUE)          TYPE(QLOCAL)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.RETAINED.PUB.QUEUE)        TYPE(QLOCAL)
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.SELECTION.EVALUATION.QUEUE)
   TYPE(QLOCAL)                         
AMQ8409I: Display Queue details.
   QUEUE(SYSTEM.SELECTION.VALIDATION.QUEUE)
   TYPE(QLOCAL)                         

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2