我已经创建了一个包含了 Kafka Connector 各种模块的 Docker 镜像

我试着创建了一个包含Kafka Connector各种模块的Docker镜像。

总结

image.png
image.png

本地环境

    • macOS Monterey 12.3

 

    Azure CLI 2.34.1

前提条件

    1. 需要确认以下两个条件:

 

    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时参照了该篇笔记。

广告
将在 10 秒后关闭
bannerAds