如何在Kubernetes Pod部署上运行Git克隆


您可以通过以下链接以PDF格式下载本文来支持我们。

以PDF格式下载指南



在今天的文章中,我将向您展示如何将应用程序代码复制到在Kubernetes容器平台上运行的容器。如果要将应用程序代码存储在Git版本控件中并在部署过程中提取最新代码而不重建容器映像,则这是理想的解决方案。可以执行此操作的kubernetes功能 初始容器..

Init容器是一种特殊类型的容器,它在容器中的应用程序容器之前运行。这些容器可以包含应用程序映像中不存在的实用程序或设置脚本。初始化容器不是很独特,因为它们可以在pod规范中与容器数组一起指定。

此示例部署了一个示例nginx容器,其中使用Init容器从Git存储库中提取了Web应用程序数据。小心 您可以在其中运行多个容器,但也可以有一个或多个初始化容器。

我的设置要求

这些是本示例中使用的容器映像。

  • 高山/ git :作为Init容器运行以进行git pull操作
  • Nginx的:运行Nginx Web服务器

为此测试创建一个演示名称空间。

$ kubectl create ns helloworld
namespace/helloworld created

我有一个包含Hello World HTML文件的Git存储库。 https://github.com/jmutai/hello-world-nginx

创建一个Kubernetes Pod部署清单

生成模板并对其进行修改以添加Init容器。

kubectl run nginx-helloworld  --image nginx --restart=Never --dry-run -o yaml >nginx-helloworld-pod.yml

要运行Kubernetes部署YAML文件,请运行以下命令:

kubectl run  nginx-helloworld  --image nginx  --dry-run -o yaml >nginx-helloworld-deploy.yml

这是我们获得的pod部署文件。

$ cat nginx-helloworld-pod.yml 
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: nginx-helloworld
  name: nginx-helloworld
spec:
  containers:
  - image: nginx
    name: nginx-helloworld
    resources: {}
  dnsPolicy: ClusterFirst
  restartPolicy: Never
status: {}

如下更新清单文件的内容。

---
apiVersion: v1
kind: Pod
metadata:
  labels:
    run: nginx-helloworld
  name: nginx-helloworld
spec:
  containers:
  - image: nginx
    name: nginx-helloworld
    ports:
    - containerPort: 80
    volumeMounts:
    - mountPath: "/usr/share/nginx/html"
      name: www-data
  initContainers:
  - name: git-cloner
    image: alpine/git
    args:
        - clone
        - --single-branch
        - --
        - https://github.com/jmutai/hello-world-nginx.git
        - /data
    volumeMounts:
    - mountPath: /data
      name: www-data
  volumes:
  - name: www-data
    emptyDir: {}

请注意,我们正在执行以下操作:

  • 使用被调用的初始化容器 git克隆 克隆git仓库 /数据
  • /数据 是名为的卷的装载 www数据..这样可以在容器之间共享
  • www数据 卷已安装 / usr /共享/ nginx / html 在nginx容器中。已克隆为存在于默认根目录中的Web数据。

让我们应用该文件来创建Kubernetes资源。

$ kubectl apply -f nginx-helloworld-pod.yml -n helloworld
pod/nginx-helloworld created

确保已创建吊舱。

$ kubectl get pods -n helloworld

这是一个完整的屏幕截图,确认克隆已发生并将数据放置在安装的路径中。

如果要使用持久卷声明,请如下更新卷部分:

volumes:
    - name: my-pv-storage
      persistentVolumeClaim:
        claimName: mypv-claim

请参阅 持久卷任务 有关持久性存储的更多信息,请参见Kubernetes文档页面。

清理:

kubectl delete all --all -n helloworld
kubectl delete ns helloworld

Kubernetes学习视频:


Docker和Kubernetes:完整指南

Docker和Kubernetes:完整指南

★★★★★
(31360)

$ 15.38

$ 118.32

有现货

立即购买

如何在Kubernetes Pod部署上运行Git克隆Udemy.com


Kubernetes初学者练习

Kubernetes初学者练习

★★★★★
(17464)

$ 15.38

$ 153.82

有现货

立即购买

如何在Kubernetes Pod部署上运行Git克隆Udemy.com


Kubernetes管理员(CKA)认证和认证测试

Kubernetes管理员(CKA)认证和认证测试

★★★★★
(15193)

$ 15.38

$ 153.82

有现货

立即购买

如何在Kubernetes Pod部署上运行Git克隆Udemy.com


Kubernetes认证的具有Test的应用程序开发人员(CKAD)

Kubernetes认证的具有Test的应用程序开发人员(CKAD)

★★★★★
(7141)

$ 15.38

$ 153.82

有现货

立即购买

如何在Kubernetes Pod部署上运行Git克隆Udemy.com


学习DevOps:Kubernetes的完整课程

学习DevOps:Kubernetes的完整课程

★★★★☆
(11317)

$ 17.75

$ 47.32

有现货

立即购买

如何在Kubernetes Pod部署上运行Git克隆Udemy.com

您可以通过以下链接以PDF格式下载本文来支持我们。

以PDF格式下载指南



Sidebar