每日分享最新,最流行的軟件開(kāi)發(fā)知識(shí)與最新行業(yè)趨勢(shì),希望大家能夠一鍵三連,多多支持,跪求關(guān)注,點(diǎn)贊,留言。
共享用于將 IBM App Connect Enterprise 應(yīng)用程序部署到 Red Hat OpenShift 的示例 Tekton 管道。
這篇文章是關(guān)于我在 GitHub 上共享的存儲(chǔ)庫(kù)dalelane/app-connect-tekton-pipeline。它包含一個(gè)示例,說(shuō)明如何使用Tekton創(chuàng)建 CI/CD 管道,用于構(gòu)建App Connect Enterprise應(yīng)用程序并將其部署到Red Hat OpenShift。
該管道使用IBM App Connect Operator輕松構(gòu)建、部署和管理容器中的應(yīng)用程序。該管道在 OpenShift 上運(yùn)行,使其能夠輕松集成到自動(dòng)化的持續(xù)交付工作流中,而無(wú)需從開(kāi)發(fā)人員的工作站在本地構(gòu)建任何東西。
有關(guān) Operator 的背景信息,以及此管道將創(chuàng)建的不同類(lèi)型的 Kubernetes 資源(例如IntegrationServer和Configuration),請(qǐng)參閱以下博客文章:
- 什么是 Operator,我們?yōu)槭裁匆獮?IBM App Connect 創(chuàng)建一個(gè) Operator?
- 探索 IBM App Connect Operator 的 IntegrationServer 資源
管道
該管道構(gòu)建并部署您的 App Connect Enterprise 應(yīng)用程序。每次您的應(yīng)用程序發(fā)生更改并且您希望將新版本部署到 OpenShift 時(shí),您都需要運(yùn)行它。
在容器中運(yùn)行 App Connect Enterprise 時(shí),您可以靈活選擇將多少應(yīng)用程序構(gòu)建到容器映像中,以及在容器啟動(dòng)時(shí)提供多少應(yīng)用程序。
有關(guān)某些選項(xiàng)的背景閱讀以及關(guān)于它們的一些注意事項(xiàng),請(qǐng)參閱博客文章:Comparing styles of container-based deployment for IBM App Connect Enterprise。當(dāng)容器啟動(dòng)時(shí),此管道在運(yùn)行時(shí)提供應(yīng)用程序的幾乎所有部分。唯一嵌入到映像中的組件是應(yīng)用程序 BAR 文件。
將 BAR 文件烘焙到自定義 App Connect 圖像中可以避免運(yùn)行專用內(nèi)容服務(wù)器來(lái)托管 BAR 文件的需要,但是,如果您愿意這樣做,請(qǐng)參閱關(guān)于向集成服務(wù)器提供 BAR 文件的機(jī)制的文檔,以了解有關(guān)如何提供 BAR 文件的更多詳細(xì)信息去做這個(gè)。(存儲(chǔ)庫(kù)中的管道使用該文檔中描述為“自定義圖像”的方法。)
運(yùn)行管道
- 管道規(guī)格:
- pipeline.yaml
- 示例管道運(yùn)行:
- simple-pipelinerun.yaml
- complex-pipelinerun.yaml
- 幫助腳本:
- 1-deploy-simple-integration-server.sh
- 1-deploy-complex-integration-server.sh
管道的作用
構(gòu)建您的 IBM App Connect Enterprise 應(yīng)用程序并將其部署到 OpenShift 集群。
運(yùn)行管道的結(jié)果
您的應(yīng)用程序的新版本以零停機(jī)時(shí)間部署 – 一旦準(zhǔn)備就緒,將替換任何現(xiàn)有版本的應(yīng)用程序。
背景
如上所述,您的大部分應(yīng)用程序配置將在運(yùn)行時(shí)由 Operator 使用Configuration資源提供給您的應(yīng)用程序容器。
如上面的屏幕截圖所示,此示例管道目前支持許多但不是全部類(lèi)型的配置資源:
- 環(huán)回?cái)?shù)據(jù)源類(lèi)型
- 政策項(xiàng)目類(lèi)型
- setdbparms.txt 類(lèi)型
- server.conf.yaml 類(lèi)型
- 信任庫(kù)類(lèi)型
有關(guān)其他配置類(lèi)型的更多信息,請(qǐng)參閱有關(guān)集成服務(wù)器配置類(lèi)型的文檔。添加對(duì)任何這些附加類(lèi)型的支持將涉及向存儲(chǔ)庫(kù)中提供的任務(wù)添加附加任務(wù)- 對(duì)現(xiàn)有任務(wù)進(jìn)行注釋以幫助完成此操作。
這些配置資源中的每一個(gè)都是單獨(dú)可選的。提供了兩個(gè)示例 App Connect 應(yīng)用程序來(lái)展示管道如何支持不同的應(yīng)用程序類(lèi)型。
簡(jiǎn)單的獨(dú)立應(yīng)用程序
管道可用于部署沒(méi)有配置依賴性的獨(dú)立應(yīng)用程序。
- 示例應(yīng)用程序
- 簡(jiǎn)單演示
- 管道運(yùn)行配置
- simple-pipelinerun.yaml
- 演示腳本:
- 1-deploy-simple-integration-server.sh
這是一個(gè)沒(méi)有外部配置的簡(jiǎn)單 App Connect 應(yīng)用程序。
部署它時(shí),管道會(huì)跳過(guò)所有配置任務(wù):
觀察管道運(yùn)行看起來(lái)像這樣(除了它需要更長(zhǎng)的時(shí)間)。
復(fù)雜應(yīng)用
管道可用于部署具有多個(gè)配置依賴項(xiàng)并支持 Java 項(xiàng)目的復(fù)雜應(yīng)用程序。
- 示例應(yīng)用程序
- 示例王牌應(yīng)用程序
- 管道運(yùn)行配置
- complex-pipelinerun.yaml
- 演示腳本:
- 1-deploy-complex-integration-server.sh
這是一個(gè) App Connect 應(yīng)用程序示例,需要配置以連接到:
- 一個(gè) PostgreSQL 數(shù)據(jù)庫(kù)
- 外部 HTTP API
- 一個(gè) Apache Kafka 集群
部署時(shí),管道會(huì)運(yùn)行此應(yīng)用程序所需的所有配置任務(wù):
看著管道運(yùn)行(也加速了?。┧雌饋?lái)像這樣。
為避免需要將憑據(jù)與您的應(yīng)用程序代碼一起存儲(chǔ)在 Git 中,管道會(huì)從 Kubernetes 機(jī)密中檢索憑據(jù)。在為您的應(yīng)用程序配置管道時(shí)(請(qǐng)參閱下面的部分),您需要指定它應(yīng)該用來(lái)執(zhí)行此操作的秘密。
示例應(yīng)用程序
我已經(jīng)在demo-pre-reqs/README.md中記錄了我如何設(shè)置示例應(yīng)用程序來(lái)演示管道,但是,這兩個(gè)示例應(yīng)用程序都不是特別有用,而是純粹用于測(cè)試和演示管道。
如果您愿意,可以將它們導(dǎo)入App Connect Toolkit進(jìn)行編輯:
這將使您可以打開(kāi)項(xiàng)目并在本地處理它們。如果您對(duì)他們的工作感到好奇,我將在下面附上一些簡(jiǎn)短的說(shuō)明:
簡(jiǎn)單的應(yīng)用程序
它提供了一個(gè)返回 Hello World 消息的 HTTP 端點(diǎn)。
運(yùn)行這個(gè):
殼1個(gè)curl http:// $(oc get route -nace-demo hello-world-http -o jsonpath='{.spec.host}’) /hello “
返回這個(gè):
JSON1個(gè){ “你好”:“世界” }
復(fù)雜應(yīng)用
它提供了一個(gè)有意設(shè)計(jì)的事件驅(qū)動(dòng)流程:
- “卡夫卡消費(fèi)者待辦事項(xiàng)更新”
- 從 Kafka 主題接收 JSON 消息
- “從更新消息中獲取 ID”
- 解析 JSON 消息并從中提取 ID 號(hào)
- 使用 ID 號(hào)為外部 API 創(chuàng)建 HTTP URL
- “檢索當(dāng)前的待辦事項(xiàng)詳細(xì)信息”
- 對(duì)外部 API 進(jìn)行 HTTP GET 調(diào)用
- “base64編碼描述”
- 使用自定義 Java 類(lèi)轉(zhuǎn)換來(lái)自外部 API 的響應(yīng)
- “插入數(shù)據(jù)庫(kù)”
- 將轉(zhuǎn)換后的響應(yīng)負(fù)載插入 PostgreSQL 數(shù)據(jù)庫(kù)
該應(yīng)用程序的目的是演示需要各種配置資源的 ACE 應(yīng)用程序。
但這意味著運(yùn)行這個(gè):
echo ‘{“id”: 1, “message”: “快速測(cè)試”}’ | kafka-console-producer.sh–bootstrap 服務(wù)器 $BOOTSTRAP–topic TODO.UPDATES–producer-property “security.protocol=SASL_SSL”–producer-property “sasl.mechanism=SCRAM-SHA-512”–producer-property “sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule 需要用戶名=”appconnect-kafka-user” 密碼=”$PASSWORD”;”–producer-property “ssl.truststore.location=ca.p12”–producer-property “ssl.truststore.type=PKCS12”–producer-property “ssl.truststore.password=$CA_PASSWORD”
得到你這個(gè):
商店=#從待辦事項(xiàng)中選擇*; 編號(hào) | 用戶 ID | 標(biāo)題 | 編碼標(biāo)題 | 完成了—-+——–+——————–+———— ———————-+———— 1 | 1 | 選擇或 RU5DT0RFRDogZGVsZWN0dXMgYXV0IGF1dGVt | F(1 行)
為您的 App Connect Enterprise 應(yīng)用程序配置管道
要為您自己的應(yīng)用程序運(yùn)行管道,您需要先創(chuàng)建一個(gè)PipelineRun.
上面描述的示例管道運(yùn)行為此提供了一個(gè)很好的起點(diǎn),您可以根據(jù)自己的需要對(duì)其進(jìn)行修改。您需要指定 App Connect Enterprise 應(yīng)用程序代碼和配置資源的位置。如果需要進(jìn)一步指導(dǎo),所有可用參數(shù)都記錄在管道規(guī)范中。
替代方法
在容器中運(yùn)行 App Connect Enterprise 非常適合各種 CI/CD 方法。這篇文章中描述的管道對(duì)我最近從事的項(xiàng)目很有用,但您可以找到各種其他管道方法來(lái)管理您的 ACE 應(yīng)用程序。有關(guān)另一個(gè)不錯(cuò)的選擇,請(qǐng)參閱github.com/ot4i/ace-demo-pipeline。