我已经创建了一个包含了 Kafka Connector 各种模块的 Docker 镜像
我试着创建了一个包含Kafka Connector各种模块的Docker镜像。
总结
本地环境
-
- macOS Monterey 12.3
- Azure CLI 2.34.1
前提条件
-
- 需要确认以下两个条件:
-
- 1. 已经准备好了Azure环境(租户/订阅)。
- 2. 在本地环境中已安装了”azure cli”。
事前的准备工作
-
- Azure VMの作成(Ubuntu)
この記事 を実行し、Dockerイメージ作成のためのUbuntu仮想マシンを起動していること
ACR の作成
この記事 を参考にして、Dockerイメージのプッシュ先としてのACR環境を準備していること
Ubuntu 系统配置
項目値リソースグループrg_ituru_vm02仮想マシン名vm-ituru-ubuntu
登录到虚拟机(Ubuntu)
## 仮想マシンの確認
$ az vm list -g rg_ituru_vm02 -d --output table
Name ResourceGroup PowerState PublicIps Fqdns Location Zones
--------------- --------------- ------------ ------------- ------- ---------- -------
vm-ituru-ubuntu rg_ituru_vm02 VM running 20.222.161.31 japaneast
## 秘密鍵の取得とパーミッションの変更
$ terraform output -raw tls_private_key > vm_ubuntu.pem
$ chmod 600 vm_ubuntu.pem
## SSH接続
$ ssh -i vm_ubuntu.pem nmcadmin@20.222.161.31
nmcadmin@ubuntu1804:~$
安装 Azure CLI。
## Azure CLI のインストール
nmcadmin@ubuntu1804:~$ curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
Hit:1 http://azure.archive.ubuntu.com/ubuntu bionic InRelease
Get:2 http://azure.archive.ubuntu.com/ubuntu bionic-updates InRelease [88.7 kB]
Get:3 http://azure.archive.ubuntu.com/ubuntu bionic-backports InRelease [74.6 kB]
Get:4 http://azure.archive.ubuntu.com/ubuntu bionic-security InRelease [88.7 kB]
Hit:5 https://download.docker.com/linux/ubuntu bionic InRelease
Fetched 252 kB in 0s (737 kB/s)
Reading package lists... Done
Reading package lists... Done
Building dependency tree
Reading state information... Done
:
省略
:
Get:1 https://packages.microsoft.com/repos/azure-cli bionic/main amd64 azure-cli all 2.35.0-1~bionic [73.9 MB]
Fetched 73.9 MB in 2s (29.8 MB/s)
Selecting previously unselected package azure-cli.
(Reading database ... 77314 files and directories currently installed.)
Preparing to unpack .../azure-cli_2.35.0-1~bionic_all.deb ...
Unpacking azure-cli (2.35.0-1~bionic) ...
Setting up azure-cli (2.35.0-1~bionic) ...
## Azure CLI 確認
nmcadmin@ubuntu1804:~$ az version
{
"azure-cli": "2.35.0",
"azure-cli-core": "2.35.0",
"azure-cli-telemetry": "1.0.6",
"extensions": {}
}
在虚拟机上安装 Java。
nmcadmin@ubuntu1804:~$ sudo apt install default-jre
nmcadmin@ubuntu1804:~$ sudo apt install openjdk-11-jre-headless
nmcadmin@ubuntu1804:~$ sudo apt install openjdk-8-jre-headless
安装confluent-hub到虚拟机上。
nmcadmin@ubuntu1804:~$ sudo apt update && apt upgrade
nmcadmin@ubuntu1804:~$ wget http://client.hub.confluent.io/confluent-hub-client-latest.tar.gz
nmcadmin@ubuntu1804:~$ tar zxvf confluent-hub-client-latest.tar.gz
※※※ 再ログイン ※※※
nmcadmin@ubuntu1804:~$ confluent-hub
usage: confluent-hub <command> [ <args> ]
Commands are:
help Display help information
install install a component from either Confluent Hub or from a local file
See 'confluent-hub help <command>' for more information on a specific command.
安装Docker Engine到虚拟机上。
请参考Linux服务器环境的Docker安装备忘录…
nmcadmin@ubuntu1804:~$ sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
nmcadmin@ubuntu1804:~$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
nmcadmin@ubuntu1804:~$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
nmcadmin@ubuntu1804:~$ sudo apt-get update
nmcadmin@ubuntu1804:~$ sudo apt-get install docker-ce
nmcadmin@ubuntu1804:~$ sudo gpasswd -a nmcadmin docker
在中文中,可以按以下方式重新表达这句话:
Docker的功能确认。
※※※ 再ログイン ※※※
## Dockerバージョンの確認
nmcadmin@ubuntu1804:~$ docker --version
Docker version 20.10.14, build a224086
## Dockerコンテナの起動
nmcadmin@ubuntu1804:~$ docker run --rm hello-world
## Dockeイメージの確認
nmcadmin@ubuntu1804:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest feb5d9fea6a5 6 months ago 13.3kB
构建 Docker 镜像
创建 Dockerfile(确认内容)
你可以通过查找 Kafka® 连接器和其他必要的模块信息来创建 Dockerfile。
这次我尝试了将9个模块集成到”confluentinc/cp-server-connect-base:6.1.0″容器镜像中。
## Dockerfile の内容
nmcadmin@ubuntu1804:~$ cat Dockerfile
FROM confluentinc/cp-server-connect-base:6.1.0
RUN confluent-hub install --no-prompt confluentinc/kafka-connect-rabbitmq:latest
RUN confluent-hub install --no-prompt confluentinc/kafka-connect-influxdb:latest
RUN confluent-hub install --no-prompt debezium/debezium-connector-mysql:latest
RUN confluent-hub install --no-prompt confluentinc/kafka-connect-azure-blob-storage:latest
RUN confluent-hub install --no-prompt confluentinc/kafka-connect-azure-blob-storage-source:latest
RUN confluent-hub install --no-prompt microsoft/kafka-connect-iothub:latest
RUN confluent-hub install --no-prompt confluentinc/kafka-connect-azure-data-lake-gen2-storage:latest
RUN confluent-hub install --no-prompt confluentinc/kafka-connect-azure-sql-dw:latest
RUN confluent-hub install --no-prompt confluentinc/kafka-connect-jdbc:latest
RUN confluent-hub install --no-prompt microsoftcorporation/kafka-connect-cosmos:latest
# confluentinc/kafka-connect-rabbitmq: RabbitMQ(Source)
# confluentinc/kafka-connect-influxdb: InfluxDB(Source & Sink)
# debezium/debezium-connector-mysql: MySQL(Source)
# confluentinc/kafka-connect-azure-blob-storage BLOB(Sink)
# confluentinc/kafka-connect-azure-blob-storage-source BLOB(Source)
# microsoft/kafka-connect-iothub IoTHub(Source & Sink)
# confluentinc/kafka-connect-azure-data-lake-gen2-storage Gen2(Sink)
# confluentinc/kafka-connect-azure-sql-dw Azure Synapse Analytics(Sink)
# confluentinc/kafka-connect-jdbc JDBC(Source & Sink)
# microsoftcorporation/kafka-connect-cosmos Azure Cosmos DB (Source & Sink)
构建Docker镜像
## Buildの実行
nmcadmin@ubuntu1804:~$ docker build -t cp-connect-demo-cp610:1.1.1 .
Sending build context to Docker daemon 16.72MB
Step 1/11 : FROM confluentinc/cp-server-connect-base:6.1.0
6.1.0: Pulling from confluentinc/cp-server-connect-base
:
省略
:
Completed
Removing intermediate container 4529a7e5def6
---> 100153c40bd6
Successfully built 100153c40bd6
Successfully tagged cp-connect-demo-cp610:1.1.1
## Docker Images の確認
nmcadmin@ubuntu1804:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
cp-connect-demo-cp610 1.1.1 100153c40bd6 2 minutes ago 2.05GB
confluentinc/cp-server-connect-base 6.1.0 061bd88f3432 7 months ago 1.83GB
hello-world latest feb5d9fea6a5 7 months ago 13.3kB
将内容推送到 Azure 容器注册表 (ACR)。
項目値Dockerイメージ名:タグcp-connect-demo-cp610:1.1.1ACRのリソースグループrg_ituru_acrACRログインサーバー名acr0ituru.azurecr.ioACRロサーバー名acr0ituru
登录 Azure
## 下記コマンド実行後に表示されるメッセージ内のURLをローカルPCのブラウザからアクセスし、コードを入力すればOK!
nmcadmin@ubuntu1804:~$ az login --tenant <tenant-id>
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code HOGE2HOGE to authenticate.
## 利用するサブスクリプションの定義
nmcadmin@ubuntu1804:~$ az account set --subscription '<Subscription Name>'
推动ACR的形象
## ACRログインサーバーアドレスの取得
nmcadmin@ubuntu1804:~$ az acr list --resource-group rg_ituru_acr --query "[].{acrLoginServer:loginServer}" --output tsv
acr0ituru.azurecr.io
## ACRへのログイン
nmcadmin@ubuntu1804:~$ az acr login --name acr0ituru
Login Succeeded
## イメージをACRにプッシュ
nmcadmin@ubuntu1804:~$ docker tag cp-connect-demo-cp610:1.1.1 acr0ituru.azurecr.io/cp-connect-demo-cp610:1.1.1
nmcadmin@ubuntu1804:~$ docker push acr0ituru.azurecr.io/cp-connect-demo-cp610:1.1.1
The push refers to repository [acr0ituru.azurecr.io/cp-connect-demo-cp610]
:
省略
:
1.1.1: digest: sha256:973baf459d6e295550c6ba7717fccf4af5bdd177b2fbabd68d8440c8b03570bd size: 5366
## イメージ詳細の確認
nmcadmin@ubuntu1804:~$ az acr repository show --name acr0ituru --repository cp-connect-demo-cp610
{
"changeableAttributes": {
"deleteEnabled": true,
"listEnabled": true,
"readEnabled": true,
"teleportEnabled": false,
"writeEnabled": true
},
"createdTime": "2022-04-09T16:42:26.6041355Z",
"imageName": "cp-connect-demo-cp610",
"lastUpdateTime": "2022-05-11T01:52:57.5399684Z",
"manifestCount": 2,
"registry": "acr0ituru.azurecr.io",
"tagCount": 2
}
## イメージタグの確認
nmcadmin@ubuntu1804:~$ az acr repository show-tags -n acr0ituru --repository cp-connect-demo-cp610 --output table
Result
--------
1.1.0
1.1.1
## イメージ一覧の表示
nmcadmin@ubuntu1804:~$ az acr repository list --name acr0ituru --output table
Result
----------------------
cp-connect-demo-cp610
总结
通过这种方式,我们可以将各种模块集成到Kafka/Confluent的连接器中,并将其推送到ACR。我们希望将Confluent Platform作为容器应用程序,并将其纳入Kubernetes(AKS等)的CI/CD流程中。
请查阅此文
非常感谢您提供的参考文章,我在安装Linux服务器环境的Docker时参照了该篇笔记。