如何使用Kompose将Docker Compose应用程序迁移到Kubernetes

这是续集。
请从下面的链接下载并以PDF格式支持本文。

以PDF格式下载指南

关门
这是续集。

这是续集。
这是续集。

kompose(源自Kubernetes和docker-compose名称的融合)是一种工具,可帮助习惯于docker-compose的用户过渡到Kubernetes。获取一个Docker Compose文件并将其转换为Kubernetes资源(部署,服务等)。本指南展示了如何使用Kompose将Docker Compose应用程序迁移到Kubernetes。

Kompose的超酷功能

  • Docker Compose简化了开发过程并将容器部署到生产集群
  • 您的转换 docker-compose.yaml 一个简单的命令kompose convert
  • 立即启动集群 kompose up
  • 放回去 kompose down

开始之前需要什么

在继续该指南之前,我们假设您有一个Kubernetes集群,并且已经配置了kubectl命令行工具与该集群通信。如果不满足这些要求,则可以按照以下指南使用minikube设置简单的单节点Kubernetes集群。如果准备继续,请继续进行kompose安装。

使用KVM在CentOS 8 / CentOS 7上安装Minikube Kubernetes

步骤1:在Linux,macOS上安装Kompose

下载最新的Kompose二进制发行版。你可以检查一下 Kompose Github页面 对于发行版本。

--- Linux ---
curl -s https://api.github.com/repos/kubernetes/kompose/releases/latest | grep browser_download_url | grep linux-amd64 | cut -d '"' -f 4 | wget -qi -
mv kompose-linux-amd64 kompose


--- macOS ---
curl -s https://api.github.com/repos/kubernetes/kompose/releases/latest | grep browser_download_url | grep darwin-amd64 | cut -d '"' -f 4 | wget -qi -
mv kompose-darwin-amd64 kompose

使二进制文件可执行, / usr /本地/ bin 目录。

chmod +x kompose
sudo mv ./kompose /usr/local/bin/kompose

安装后检查版本:

$ kompose version
1.21.0 (992df58d8)

步骤2:从Dockerfile创建示例图像

创建一个Nginx反向代理,它将请求代理到Apache容器

创建一个名为Dockerfile的文件并添加以下内容。

cat > Dockerfile<

这是我们要复制到映像的配置文件(nginx.conf)

cat >nginx.conf<

这是一个简单的反向代理,它侦听端口8081上的请求,并将流量路由到侦听端口80的上游服务器。

步骤3:建立容器映像

在项目中打开一个终端,然后键入以下命令以使用podman构建映像

$ podman build -t reverseproxy:v1 .
STEP 1: FROM nginx:alpine
Getting image source signatures
Copying blob cbdbe7a5bc2a done  
Copying blob c554c602ff32 done  
Copying config 89ec9da682 done  
Writing manifest to image destination
Storing signatures
STEP 2: COPY nginx.conf /etc/nginx/conf.d/default.conf
--> d86b4e89749
STEP 3: EXPOSE 8081
STEP 4: COMMIT reverseproxy:v1
--> b00d80e0056
b00d80e00560c205e0580d4b751b1a67da7e77e7fc73803b006ff10389bb4732


-- With Docker ---
$ docker build -t reverseproxy:v1 .

构建映像后,它看起来像这样:

$ podman images

REPOSITORY                        TAG          IMAGE ID       CREATED             SIZE
localhost/reverseproxy                            v1        b00d80e00560   19 seconds ago   21.2 MB

步骤3:将容器映像推送到映像注册表

您可以将映像推送到任何公共注册表,也可以推送到创建/私有注册表。

在此示例中,我们使用了Docker Hub映像注册表。

$ podman tag  docker.io//reverseproxy:v1
Example:
$ podman tag localhost/reverseproxy:v1 docker.io/penchant/reverseproxy:v1

使用映像注册表进行身份验证-对我来说这是docker.io

$ podman login docker.io
Username:  
Password: 
Login Succeeded!

登录后,推送图像。范例:

$ podman push docker.io/penchant/reverseproxy:v1
Getting image source signatures
Copying blob 113ce2720837 done  
Copying blob 3810cc0c140f done  
Copying blob 3e207b409db3 done  
Copying config b00d80e005 done  
Writing manifest to image destination
Storing signatures

您可以使用以下指南来了解有关从DockerHub推送和拉取映像的更多信息。

使用Podman将容器映像发布到Docker Hub /映像注册表

步骤4:建立docker-compose.yaml

这是Docker Compose用于创建服务并运行示例项目的多容器环境的文件。我们使用的映像是我们构建并推送到Docker Hub的映像。

$ vim docker-compose.yaml

version: "3"
services:
    reverseproxy:
        image: docker.io/penchant/reverseproxy:v1
        ports:
            - 8081:8081
        restart: always

    apache:
        depends_on:
            - reverseproxy
        image: httpd:alpine
        restart: always

对docker-compose.yaml文件进行加粗和跨接后,通过kompose运行项目时,有两个选项可用。首先,您可以将docker-compose.yaml文件转换为另一个yaml文件(例如部署,服务,persistentvolumeclaim),然后使用kubectl对其进行应用,或者使用一个kompose up命令进行操作。可以的我们要查看单个文件,因此首先转换:

$ kompose convert

INFO Kubernetes file "reverseproxy-service.yaml" created 
INFO Kubernetes file "apache-deployment.yaml" created 
INFO Kubernetes file "reverseproxy-deployment.yaml" created

现在,您已经创建了三个yaml文件并将其命名以描述它们的功能。一个是服务,另一个是部署。

如下所示,使用kubectl应用这些文件。

$ kubectl apply -f reverseproxy-service.yaml,apache-deployment.yaml,reverseproxy-deployment.yaml

service/reverseproxy created
deployment.apps/apache created
deployment.apps/reverseproxy created

检查服务,Pod和部署

$ kubectl get deployment,svc,pods

NAME                           READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/apache         1/1     1            1           113m
deployment.apps/reverseproxy   1/1     1            1           105m

NAME                   TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE 
service/kubernetes     ClusterIP   10.96.0.1               443/TCP    122m
service/reverseproxy   ClusterIP   10.97.210.141           8081/TCP   113m

NAME                                READY   STATUS    RESTARTS   AGE
pod/apache-7945cd6844-5hpf8         1/1     Running   0          113m
pod/reverseproxy-8646fb7c4f-j6742   1/1     Running   0          105m

如您所见,即使在针对我的特定配置对每​​个yaml文件进行微调之前,我也能够启动kubernetes资源。

注意事项:

在kompose根据您的特定需求作用于Docker-Compose文件之后,您可以修改派生yaml文件的详细信息。好处是,kompose可以解决大部分麻烦,因此您可以轻松添加需要添加的内容。

最后的想法

Kompose是一个很棒的工具,它将带您进入从头开始工作的Kubernetes应用程序。在您的项目上进行尝试,并利用kompose开发的功能,了解可以利用的功能。

如果您是一位漂亮的探险家,请在下面找到其他征服指南:

如何使用Podman和Libpod运行Docker容器

如何手动拉出Kubernetes kubeadm使用的容器映像

运行Kubernetes的最小的容器操作系统

将Harbor Image Registry Pull Secret添加到Kubernetes / OpenShift

配置Harbor Registry Active Directory(AD)身份验证

如何在Ubuntu 18.04 / Debian 10 Linux上安装Minikube

这是续集。
请从下面的链接下载并以PDF格式支持本文。

以PDF格式下载指南

关门
这是续集。

这是续集。
这是续集。

Sidebar