概要
本项目主要实现了基于git的项目同步, 技术为nginx+html
- git公有项目同步
- git私有项目同步
- 部署一个简单的nginx反向代理html
git公有项目同步
基于开源项目: git-sync^1
最简单的https公有项目同步^2
- 使用git-sync做项目同步
- 使用nginx做反向代理
- 两个容器在同一个Pod内,挂载同一个磁盘完成项目同步
配置实例:
1 | apiVersion: apps/v1 |
git私有项目同步
简单说明:
- https协议的地址克隆需要输入密码(输入密码方案暂没找到合适的方法)
- ssh协议的地址克隆需要私钥(此方案要把私钥存放到指定目录才可用)
- k8s中的Secret类型专门用于存储私私钥
创建私钥
- 方法一:
1 | $> ssh-keyscan $YOUR_GIT_HOST > /tmp/known_hosts |
- 方法二:
1 | $> ssh-keyscan $YOUR_GIT_HOST > /tmp/known_hosts |
配置私钥Pod Volume
查看确定私钥已经创建成功:
1
2
3zhaowgMac:k8s zhaoweiguo$ kubectl get secret
NAME TYPE DATA AGE
git-creds Opaque 2 22dgit私钥volumes配置
1
2
3
4
5
6
7# ...
volumes:
- name: git-secret
secret:
secretName: git-creds # 这儿就是前面指定Secret的名
defaultMode: 288 # 0440
# ...
配置git-sync容器
参数说明
1
2
3
4-ssh: 指定使用ssh协议
-repo: 指定git地址
-dest: 指定clone后的文件夹名
-branch: 指定git分支名git-sync容器配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
containers:
- name: git-sync
image: k8s.gcr.io/git-sync:v9.3.76
args:
- "-ssh"
- "-repo=git@github.com:foo/bar"
- "-dest=bar"
- "-branch=master"
volumeMounts:
- name: git-secret
mountPath: git-secret
securityContext:
runAsUser: 65533
完整实例
1 | apiVersion: extensions/v1beta1 |