在Confluent CLI的最新主要版本更新中,我们已经将基于云的ccloud CLI的所有功能打包到了现有的confluent CLI客户端中!这对我们来说是至关重要的一步,因为我们正朝着同时为云端用户提供单一平台的方向发展。这是Confluent迈出的关键一步,因为我们正朝着提供一个同时服务于云端和内部用户的单一平台迈进。最新的Confluent平台版本,即Confluent Platform 7.1,与这个主要的版本更新,即Confluent CLI v2一起发货。

从ccloud v1.x 更新到confluent v2.x 的云用户将获得多器官支持和有用的命令语法变化。内部用户将获得类似的可用性改进,并解锁云CLI的所有功能,使其比以往更容易将基础设施迁移到云上。最重要的是,需要经常在云和内部部署之间切换的混合用户现在可以使用一个CLI来完成任何Confluent任务。完整的变化清单可以在文档中找到。
在这篇博文中,我们将对新的CLI所包含的关键功能进行快速分解,并演示一个混合用户的工作流程示例,该用户需要在Confluent Platform和Confluent Cloud之间链接两个集群,并在它们之间镜像一个主题。
要获得新的CLI,请下载统一的CLI客户端作为Confluent Platform 7.1的一部分。另外,如果您已经是Confluent Cloud的用户,只需通过ccloud update --major ,或按照文档中的安装说明执行主要版本更新。
有什么新功能?
新的统一CLI的用户会发现它的界面没有明显的变化,最明显的例外是,对于云用户来说,名字从ccloud 改为confluent :

对所有用户来说,登录方式和以前完全一样:confluent ,默认是对Confluent Cloud进行认证,但如果提供了带有--url 标志的元数据服务(MDS)URL,用户就可以登录到Confluent Platform。
| Confluent云 | Confluent平台 |
confluent login | confluent login --url https://example.com:8090 |
登录后,用户只能访问与他们有关的命令。例如,一个Confluent云用户会看到:
admin Perform administrative tasks for the current organization.
api-key Manage the API keys.
audit-log Manage audit log configuration.
cloud-signup Sign up for Confluent Cloud.
completion Print shell completion code.
connect Manage Kafka Connect.
context Manage CLI configuration contexts.
environment Manage and select Confluent Cloud environments.
help Help about any command
iam Manage RBAC and IAM permissions.
kafka Manage Apache Kafka.
ksql Manage ksqlDB.
local Manage a local Confluent Platform development environment.
login Log in to Confluent Cloud or Confluent Platform.
logout Log out of Confluent Cloud.
price See Confluent Cloud pricing information.
prompt Add Confluent CLI context to your terminal prompt.
schema-registry Manage Schema Registry.
shell Start an interactive shell.
update Update the Confluent CLI.
version Show version of the Confluent CLI.
Confluent平台的用户将看到一个稍有不同的命令列表:
audit-log Manage audit log configuration.
cloud-signup Sign up for Confluent Cloud.
cluster Retrieve metadata about Confluent Platform clusters.
completion Print shell completion code.
connect Manage Kafka Connect.
context Manage CLI configuration contexts.
help Help about any command
iam Manage RBAC, ACL and IAM permissions.
kafka Manage Apache Kafka.
ksql Manage ksqlDB.
local Manage a local Confluent Platform development environment.
login Log in to Confluent Cloud or Confluent Platform.
logout Log out of Confluent Platform.
prompt Add Confluent CLI context to your terminal prompt.
schema-registry Manage Schema Registry.
secret Manage secrets for Confluent Platform.
shell Start an interactive shell.
update Update the Confluent CLI.
version Show version of the Confluent CLI.
上下文切换
上下文代表用户的登录状态,无论是Confluent Cloud还是Confluent Platform,以及其他在命令执行期间持续存在的相关设置:

能够快速切换上下文对我们的混合用户来说非常重要,在新的更新中,confluent context 已经被提升为顶级命令。运行confluent context list 来查看可用的上下文列表:
$ confluent context list
如果一个上下文的名字输入起来太繁琐,它可以被重新命名:
$ confluent context update --name cloud
然后,切换到一个新的上下文就很简单了:
$ confluent context use cloud
提示:如果你经常在上下文之间切换,你可以使用 confluent prompt<c/code> to show the current context directly in the terminal! You can set this up by following the instructions in `confluent prompt -h`.
(confluent|cloud) $ confluent ...
混合演示
情景。你是Confluent平台的用户,拥有一个内部集群。您有兴趣将您的数据迁移到Confluent云。你将把内部集群链接到一个云集群,通过集群链接镜像一个主题,并通过集群链接的生产和消费来测试该设置是否有效:

先决条件:
- 一个Confluent Cloud账户。在
confluent cloud-signup注册。 - 一个正在运行的Confluent平台部署,并设置了MDS和LDAP。
- Confluent CLI, v2.6.1或更高版本。通过
confluent version进行验证,如有必要,通过confluent update进行更新。
警告
本教程需要在Confluent云中运行一个专用集群,这将产生费用。使用促销代码CL60BLOG ,可免费使用60美元。
-
登录Confluent Cloud,给登录的上下文取一个容易记忆的名字。在这里,我们将上下文命名为 "云":
$ confluent login --save Enter your Confluent Cloud credentials: Username: name@example.com Password: ******** $ confluent context update --name cloud +------------+---------------------------+ | Name | cloud | | Platform | confluent.cloud | | Credential | username-name@example.com | +------------+---------------------------+ -
接下来,创建一个带有公共互联网端点的专用Confluent Cloud集群,并保存其详细信息以备后用:
$ confluent kafka cluster create my-cluster --type dedicated --cloud aws --region us-west-2 --cku 1 It may take up to 1 hour for the Kafka cluster to be ready. The organization admin will receive an email once the dedicated cluster is provisioned. +--------------+----------------------------------------------------------+ | Id | lkc-123456 | | Name | my-cluster | | Type | DEDICATED | | Ingress | 50 | | Egress | 150 | | Storage | Infinite | | Provider | aws | | Availability | single-zone | | Region | us-west-2 | | Status | PROVISIONING | | Endpoint | SASL_SSL://pkc-12345.us-west-2.aws.stag.cpdev.cloud:9092 | | ApiEndpoint | | | RestEndpoint | https://pkc-12345.us-west-2.aws.stag.cpdev.cloud:443 | | ClusterSize | 1 | +--------------+----------------------------------------------------------+ $ export CC_CLUSTER_ID=lkc-123456 $ export CC_URL=pkc-12345.us-west-2.aws-confluent.cloud $ confluent kafka cluster use $CC_CLUSTER_ID Set Kafka cluster "lkc-123456" as the active cluster for environment "env-12345". -
然后,为Confluent Cloud集群创建一个API密钥和一个秘密:
$ confluent api-key create --resource $CC_CLUSTER_ID It may take a couple of minutes for the API key to be ready. Save the API key and secret. The secret is not retrievable later. +---------+----------------------------------------------------------+ | API Key | AAAAAAAAAAAAAAAA | | Secret | BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB | +---------+----------------------------------------------------------+ $ export CC_API_KEY=AAAAAAAAAAAAAAAA $ export CC_API_SECRET=BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB $ confluent api-key use $CC_API_KEY --resource $CC_CLUSTER_ID Set API Key "AAAAAAAAAAAAAAAA" as the active API key for "lkc-123456". -
为了完成本教程,Confluent平台集群必须在其
server.properties文件中设置以下属性,其中编码器的秘密是任何安全密码:password.encoder.secret=<encoder-secret> -
在等待Confluent云集群配置的过程中,登录Confluent平台。在环境变量中保存Confluent平台的URL:
$ export CP_URL=https://example.com:8090 $ confluent login --url $CP_URL Enter your Confluent credentials: Username: name@example.com Password: ********* $ confluent context update --name platform +------------+----------------+ | Name | platform | | Platform | localhost:8090 | | Credential | username-name | +------------+----------------+提示:现在我们正在处理多个上下文,用
confluent prompt直接在终端中显示当前的上下文可能是有用的。$ export PS1='$(confluent prompt) '$PS1 (confluent|platform) $ confluent kafka broker list --url $CP_URL/kafka Cluster ID | Broker ID | Host | Port -------------------------+-----------+---------------------------------------+------- 0000000000000000000000 | 1 | ip-0-0-0-0.us-west-2.compute.internal | 9092 (confluent|platform) $ export CP_CLUSTER_ID=0000000000000000000000 (confluent|platform) $ confluent kafka topic create my-topic --replication-factor 1 --url $CP_URL/kafka Created topic "my-topic". -
一旦Confluent Cloud集群完成了配置,组织管理员应该会收到一封电子邮件。在这一点上,我们已经准备好创建一个集群链接了要创建一个从Confluent Platform到Confluent Cloud的集群链接,我们必须创建一个 "源发起的 "集群链接,这样Confluent Platform集群(源)就会向Confluent Cloud集群(目的)发送一个外向连接。源启动的集群链接要求我们创建两半的集群链接:一个在Confluent Cloud,一个在Confluent Platform。首先在当前目录下创建一个集群链接配置文件,内容如下,并将其命名为
clusterlink-dst.config:link.mode=DESTINATION connection.mode=INBOUND -
然后,创建集群链接:
(confluent|platform) $ confluent context use cloud (confluent|cloud) $ confluent kafka link create my-link --source-bootstrap-server 0.0.0.0 --source-cluster-id $CP_CLUSTER_ID --config-file clusterlink-dst.config -
要创建集群链接的另一端,在当前目录下添加一个内容如下的文件,并将其命名为
clusterlink-src.config。以 "local "为前缀的属性是用于对Confluent平台集群的认证。对角括号中的变量进行适当的替换:link.mode=SOURCE connection.mode=OUTBOUND bootstrap.servers=<CC_URL>:9092 ssl.endpoint.identification.algorithm=https security.protocol=SASL_SSL sasl.mechanism=PLAIN sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username='<CC_API_KEY>' password='<CC_API_SECRET>'; local.sasl.mechanism=OAUTHBEARER local.security.protocol=SASL_SSL local.sasl.login.callback.handler.class=io.confluent.kafka.clients.plugins.auth.token.TokenUserLoginCallbackHandler local.sasl.jaas.config=org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required username='<CP_USERNAME>' password='<CP_PASSWORD>' metadataServerUrls=''; local.ssl.key.password=<KEY_PASSWORD> local.ssl.truststore.location=<PATH_TO_TRUSTSTORE> local.ssl.truststore.password=<TRUSTSTORE_PASSWORD> local.ssl.keystore.location=<PATH_TO_KEYSTORE> local.ssl.keystore.password=<KEYSTORE_PASSWORD> -
接下来,将CLI上下文切换回Confluent Platform,并创建集群的另一端链接:
(confluent|cloud) $ confluent context use platform (confluent|platform) $ confluent kafka link create my-link --destination-bootstrap-server $CC_URL:9092 --destination-cluster-id $CC_CLUSTER_ID --config-file clusterlink-src.config --url $CP_URL/kafka Created cluster link "my-link". -
在一个单独的终端窗口,将上下文切换到Confluent Cloud,创建镜像主题,并开始消费:
```
(confluent|platform) $ confluent context use cloud
(confluent|cloud) $ confluent kafka mirror create my-topic --link my-link
Created mirror topic "my-topic".
(confluent|cloud) $ confluent kafka topic consume my-topic --from-beginning
Starting Kafka Consumer. Use Ctrl-C to exit.
```
11. 在原来的终端窗口中,将上下文切换到Confluent平台,从Confluent平台集群中复制客户端证书和密钥,并制作。
```
(confluent|cloud) $ confluent context use platform
(confluent|platform) $ ssh
```
我们可以看到这些数据在Confluent Cloud中被镜像了!
Starting Kafka Consumer. Use Ctrl-C to exit.
🎉
告别Confluent Cloud CLI
迁移到统一的Confluent CLI意味着Confluent Cloud CLI,ccloud ,将被弃用。在2022年5月9日,ccloud 将会日落西山。为了指导用户完成更新到v2的过程,我们已经在最新的次要版本ccloud ,并在文档中找到了完整的中断变化列表。
总结
我们介绍了Confluent CLI v2,讨论了其中的新功能,并演示了一个将Confluent Platform集群与Confluent Cloud集群连接起来以实现数据镜像的例子,只使用了新的统一CLI。
回顾Confluent CLI v1的最初发布,我们已经走过了很长的路。这次CLI的重大版本更新代表了Confluent的第一个完全统一的产品,能够从一个界面处理云和内部工作流程。我们很高兴能继续开发CLI,以支持我们在Confluent计划的所有新功能!