如果使用的是云提供商,你的 IP 将在 `LoadBalancer Ingress` 字段给出。
$ curl http://192.0.2.89
## 二、kompose convert 实战
Kompose 支持两种驱动:OpenShift 和 Kubernetes。 你可以通过全局选项 --provider 选择驱动。如果没有指定, 会将 Kubernetes 作为默认驱动。
### 2.1、Kubernetes kompose convert实战
执行如下命令,实现 `docker-compose` 转换
$ kompose --file docker-voting.yml convert
WARN Unsupported key networks - ignoring
WARN Unsupported key build - ignoring
INFO Kubernetes file “worker-svc.yaml” created
INFO Kubernetes file “db-svc.yaml” created
INFO Kubernetes file “redis-svc.yaml” created
INFO Kubernetes file “result-svc.yaml” created
INFO Kubernetes file “vote-svc.yaml” created
INFO Kubernetes file “redis-deployment.yaml” created
INFO Kubernetes file “result-deployment.yaml” created
INFO Kubernetes file “vote-deployment.yaml” created
INFO Kubernetes file “worker-deployment.yaml” created
INFO Kubernetes file “db-deployment.yaml” created
查看转换之后的文件:
$ ls
转换结果:
db-deployment.yaml docker-compose.yml docker-gitlab.yml redis-deployment.yaml result-deployment.yaml vote-deployment.yaml worker-deployment.yaml
db-svc.yaml docker-voting.yml redis-svc.yaml result-svc.yaml vote-svc.yaml worker-svc.yaml
当然,你也可以同时提供多个 **docker-compose** 文件进行转换:
$ kompose -f docker-compose.yml -f docker-guestbook.yml convert
INFO Kubernetes file “frontend-service.yaml” created
INFO Kubernetes file “mlbparks-service.yaml” created
INFO Kubernetes file “mongodb-service.yaml” created
INFO Kubernetes file “redis-master-service.yaml” created
INFO Kubernetes file “redis-slave-service.yaml” created
INFO Kubernetes file “frontend-deployment.yaml” created
INFO Kubernetes file “mlbparks-deployment.yaml” created
INFO Kubernetes file “mongodb-deployment.yaml” created
INFO Kubernetes file “mongodb-claim0-persistentvolumeclaim.yaml” created
INFO Kubernetes file “redis-master-deployment.yaml” created
INFO Kubernetes file “redis-slave-deployment.yaml” created
查看转换之后的文件:
$ ls
转换结果:
mlbparks-deployment.yaml mongodb-service.yaml redis-slave-service.jsonmlbparks-service.yaml
frontend-deployment.yaml mongodb-claim0-persistentvolumeclaim.yaml redis-master-service.yaml
frontend-service.yaml mongodb-deployment.yaml redis-slave-deployment.yaml
redis-master-deployment.yaml
当提供多个 **docker-compose** 文件时,配置将会合并。任何通用的配置都将被后续文件覆盖。
### 2.2、OpenShift kompose convert 实战
方式千千万,唯有命令最简单:
$ kompose --provider openshift --file docker-voting.yml convert
WARN [worker] Service cannot be created because of missing port.
INFO OpenShift file “vote-service.yaml” created
INFO OpenShift file “db-service.yaml” created
INFO OpenShift file “redis-service.yaml” created
INFO OpenShift file “result-service.yaml” created
INFO OpenShift file “vote-deploymentconfig.yaml” created
INFO OpenShift file “vote-imagestream.yaml” created
INFO OpenShift file “worker-deploymentconfig.yaml” created
INFO OpenShift file “worker-imagestream.yaml” created
INFO OpenShift file “db-deploymentconfig.yaml” created
INFO OpenShift file “db-imagestream.yaml” created
INFO OpenShift file “redis-deploymentconfig.yaml” created
INFO OpenShift file “redis-imagestream.yaml” created
INFO OpenShift file “result-deploymentconfig.yaml” created
INFO OpenShift file “result-imagestream.yaml” created
**kompose** 还支持为服务中的构建指令创建 **buildconfig**。 默认情况下,它使用当前 **git** 分支的 **remote** 仓库作为源仓库,使用当前分支作为构建的源分支。 你可以分别使用 `--build-repo 和 --build-branch` 选项指定不同的源仓库和分支。
$ kompose --provider openshift --file buildconfig/docker-compose.yml convert
WARN [foo] Service cannot be created because of missing port.
INFO OpenShift Buildconfig using git@github.com:rtnpro/kompose.git::master as source.
INFO OpenShift file “foo-deploymentconfig.yaml” created
INFO OpenShift file “foo-imagestream.yaml” created
INFO OpenShift file “foo-buildconfig.yaml” created
## 三、其他转换方式
默认的 **kompose** 转换会生成 yaml 格式的 Kubernetes Deployment 和 Service 对象。 也可以选择通过 `-j` 参数生成 json 格式的对象。 也可以替换生成 Replication Controllers 对象、 Daemon Sets 或 Helm charts。
$ kompose convert -j
![在这里插入图片描述](https://img-blog.csdnimg.cn/79da5e26f30d46f9aa15cc9005153723.png)
`*-deployment.json` 文件中包含 Deployment 对象。
$ kompose convert --replication-controller
![在这里插入图片描述](https://img-blog.csdnimg.cn/c17676e106c847fcbf955cb16a3e0d70.png)
`*-replicationcontroller.yaml` 文件包含 Replication Controller 对象。 如果你想指定副本数(默认为 1),可以使用 --replicas 参数: `kompose convert --replication-controller --replicas 3`
$ kompose convert --daemon-set
![在这里插入图片描述](https://img-blog.csdnimg.cn/63c90f340ce947d1be8757d41a49c1a6.png)
`*-daemonset.yaml` 文件包含 DaemonSet 对象。
如果你想生成 **Helm** 可用的 **Chart**, 只需简单的执行下面的命令:
$ kompose convert -c
![在这里插入图片描述](https://img-blog.csdnimg.cn/fff16ceec2f24973bb675acf0bb747f5.png)
$ tree docker-compose/
docker-compose
├── Chart.yaml
├── README.md
└── templates
├── redis-deployment.yaml
├── redis-svc.yaml
├── web-deployment.yaml
└── web-svc.yaml
这个 Chart 结构旨在为构建 Helm Chart 提供框架。
## 四、标签
**kompose** 支持 d`ocker-compose.yml` 文件中用于 Kompose 的标签,以便 在转换时明确定义 Service 的行为。
* **kompose.service.type** 定义要创建的 Service 类型。
version: “2”
services:
nginx:
image: nginx
dockerfile: foobar
build: ./foobar
cap_add:
- ALL
container_name: foobar
labels:
kompose.service.type: nodeport
* **kompose.service.expose** 定义是否允许从集群外部访问 Service。 如果该值被设置为 “true”,提供程序将自动设置端点, 对于任何其他值,该值将被设置为主机名。 如果在 Service 中定义了多个端口,则选择第一个端口作为公开端口。
* + 如果使用 Kubernetes 驱动,会有一个 Ingress 资源被创建,并且假定 已经配置了相应的 Ingress 控制器。
* + 如果使用 OpenShift 驱动,则会有一个 route 被创建。
version: “2”
services:
web:
image: tuna/docker-counter23
ports:
- “5000:5000”
links:
- redis
labels:
kompose.service.expose: “counter.example.com”
redis:
image: redis:3.0
ports:
- “6379”
![img](https://img-blog.csdnimg.cn/img_convert/1e669eeb3da67af9b81a98c41eb91bc4.png)
![img](https://img-blog.csdnimg.cn/img_convert/e216fc844d086113dba16a4d5fa23302.png)
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
HAF-1714728995744)]
[外链图片转存中...(img-9ksrd50j-1714728995745)]
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**