Skip to content

Commit 04299af

Browse files
authored
Merge pull request #4 from zhangzqs/master
update v1.2.0
2 parents 1e39bfe + 4dcb8dd commit 04299af

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+1230
-474
lines changed

.github/workflows/build.yaml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
name: Build
2+
3+
on:
4+
push:
5+
branches: [master]
6+
pull_request:
7+
branches: [master]
8+
9+
jobs:
10+
build-executable:
11+
runs-on: ubuntu-latest
12+
steps:
13+
- uses: actions/checkout@v3
14+
- uses: actions/setup-go@v4
15+
with:
16+
go-version: "^1.18"
17+
18+
- name: Build executable
19+
run: make build

.github/workflows/release.yaml

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
name: Build Release
2+
3+
on:
4+
push:
5+
tags:
6+
- "v*"
7+
8+
permissions: write-all
9+
10+
jobs:
11+
create_release:
12+
name: Create release for new version
13+
runs-on: ubuntu-latest
14+
outputs:
15+
upload_url: ${{ steps.create_release.outputs.upload_url }}
16+
steps:
17+
- name: Create Release
18+
id: create_release
19+
uses: actions/create-release@v1
20+
env:
21+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
22+
with:
23+
tag_name: ${{ github.ref }}
24+
release_name: Release ${{ github.ref }}
25+
body: |
26+
Release Notes
27+
draft: true
28+
prerelease: false
29+
30+
upload_yaml:
31+
name: Release kodo/kodofs plugin yaml files
32+
runs-on: ubuntu-latest
33+
needs: create_release
34+
steps:
35+
- uses: actions/checkout@v2
36+
with:
37+
ref: ${{ github.ref }}
38+
39+
- name: Get the version
40+
id: vars
41+
run: echo ::set-output name=tag::${GITHUB_REF#refs/*/}
42+
43+
- name: build
44+
run: make k8s/kodo.yaml && make k8s/kodofs.yaml
45+
46+
- name: Upload kodo.yaml files to Release Asset
47+
id: upload-release-asset-kodo
48+
uses: actions/upload-release-asset@v1
49+
env:
50+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
51+
with:
52+
upload_url: ${{ needs.create_release.outputs.upload_url }}
53+
asset_path: ./k8s/kodo.yaml
54+
asset_name: kodo-plugin.yaml
55+
asset_content_type: plain/text
56+
57+
- name: Upload kodofs.yaml files to Release Asset
58+
id: upload-release-asset-kodofs
59+
uses: actions/upload-release-asset@v1
60+
env:
61+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
62+
with:
63+
upload_url: ${{ needs.create_release.outputs.upload_url }}
64+
asset_path: ./k8s/kodofs.yaml
65+
asset_name: kodofs-plugin.yaml
66+
asset_content_type: plain/text

.gitignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,10 @@
1818
/plugin/plugin.storage.qiniu.com
1919
/docker/connector.plugin.storage.qiniu.com
2020
/docker/plugin.storage.qiniu.com
21+
/docker/kodofs
22+
/docker/rclone
23+
/k8s/kodo.yaml
24+
/k8s/kodofs.yaml
25+
26+
.idea
27+
.DS_Store

Dockerfile

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# 1. 第一阶段,编译二进制可执行文件
2+
FROM golang:1.18.10-bullseye as build-env
3+
4+
COPY . /app
5+
WORKDIR /app
6+
# 安装依赖
7+
RUN apt update -yqq && \
8+
apt install -yqq git make
9+
# 编译二进制可执行文件
10+
RUN make build
11+
12+
# 2. 第二阶段,构建最终镜像
13+
FROM debian:bullseye
14+
15+
ARG PLUGIN_FILENAME=plugin.storage.qiniu.com
16+
ARG CONNECTOR_FILENAME=connector.${PLUGIN_FILENAME}
17+
18+
# 这两个可执行文件由上一阶段编译得到
19+
COPY --from=build-env /app/plugin/${PLUGIN_FILENAME} /usr/local/bin/${PLUGIN_FILENAME}
20+
COPY --from=build-env /app/connector/${CONNECTOR_FILENAME} /usr/local/bin/${CONNECTOR_FILENAME}
21+
22+
# 这些文件直接由仓库提供
23+
COPY docker/nsenter /usr/local/bin/nsenter
24+
COPY docker/kodofs /usr/local/bin/kodofs
25+
COPY docker/rclone /usr/local/bin/rclone
26+
COPY docker/kodo-csi-connector.service /csiplugin-connector.service
27+
COPY docker/entrypoint.sh /entrypoint.sh
28+
29+
# 赋予这些文件可执行权限
30+
RUN chmod +x /usr/local/bin/kodofs \
31+
/usr/local/bin/rclone \
32+
/usr/local/bin/${PLUGIN_FILENAME} \
33+
/usr/local/bin/${CONNECTOR_FILENAME} \
34+
/entrypoint.sh
35+
36+
37+
RUN apt-get update -yqq && \
38+
apt-get install -yqq ca-certificates && \
39+
rm -rf /var/lib/apt/lists/*
40+
41+
ENTRYPOINT ["/entrypoint.sh"]

Makefile

Lines changed: 144 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,149 @@
1-
.PHONY: build image clean connector/connector.plugin.storage.qiniu.com plugin/plugin.storage.qiniu.com
1+
include common.mk
22

3-
VERSION = $(shell git describe --tags HEAD)
4-
COMMITID = $(shell git rev-parse --short HEAD || echo "HEAD")
5-
BUILDTIME = $(shell date -u '+%Y-%m-%dT%H:%M:%SZ')
3+
.PHONY: all
4+
all: build
65

7-
build: image
8-
connector/connector.plugin.storage.qiniu.com:
6+
.PHONY: build
7+
build: connector/$(CONNECTOR_FILENAME) plugin/$(PLUGIN_FILENAME)
8+
9+
connector/$(CONNECTOR_FILENAME):
910
cd connector && \
10-
go build -ldflags "-X main.VERSION=$(VERSION) -X main.COMMITID=$(COMMITID) -X main.BUILDTIME=$(BUILDTIME)" -o connector.plugin.storage.qiniu.com
11-
plugin/plugin.storage.qiniu.com:
11+
go build -ldflags \
12+
"-X main.VERSION=$(VERSION) -X main.COMMITID=$(COMMIT_ID) -X main.BUILDTIME=$(BUILD_TIME)" \
13+
-o $(CONNECTOR_FILENAME)
14+
15+
plugin/$(PLUGIN_FILENAME):
1216
cd plugin && \
13-
go build -ldflags "-X main.VERSION=$(VERSION) -X main.COMMITID=$(COMMITID) -X main.BUILDTIME=$(BUILDTIME)" -o plugin.storage.qiniu.com
14-
image: connector/connector.plugin.storage.qiniu.com plugin/plugin.storage.qiniu.com
15-
cp plugin/plugin.storage.qiniu.com docker/
16-
cp connector/connector.plugin.storage.qiniu.com docker/
17-
docker build --pull -t="kodoproduct/csi-plugin.storage.qiniu.com:${VERSION}" docker/
18-
docker push "kodoproduct/csi-plugin.storage.qiniu.com:${VERSION}"
17+
go build -ldflags \
18+
"-X main.VERSION=$(VERSION) -X main.COMMITID=$(COMMIT_ID) -X main.BUILDTIME=$(BUILD_TIME)" \
19+
-o $(PLUGIN_FILENAME)
20+
21+
.PHONY: clean
1922
clean:
20-
rm -f connector/connector.plugin.storage.qiniu.com plugin/plugin.storage.qiniu.com docker/plugin.storage.qiniu.com docker/connector.plugin.storage.qiniu.com
23+
rm -f connector/$(CONNECTOR_FILENAME) \
24+
plugin/$(PLUGIN_FILENAME)
25+
rm -f k8s/kodo.yaml k8s/kodofs.yaml
26+
rm -f docker/rclone docker/kodofs
27+
28+
k8s/kodo.yaml: k8s/kodo/kodo-plugin.yaml k8s/kodo/kodo-rbac.yaml k8s/kodo/kodo-provisioner.yaml common.mk
29+
@cat k8s/kodo/kodo-plugin.yaml \
30+
| sed 's/$${DOCKERHUB_ORGANIZATION}/$(subst /,\/,$(DOCKERHUB_ORGANIZATION))/g' \
31+
| sed 's/$${DOCKERHUB_IMAGE}/$(DOCKERHUB_IMAGE)/g' \
32+
| sed 's/$${DOCKERHUB_TAG}/$(DOCKERHUB_TAG)/g' \
33+
>> k8s/kodo.yaml
34+
@echo --- >> k8s/kodo.yaml
35+
@cat k8s/kodo/kodo-rbac.yaml >> k8s/kodo.yaml
36+
@echo --- >> k8s/kodo.yaml
37+
@cat k8s/kodo/kodo-provisioner.yaml >> k8s/kodo.yaml
38+
39+
k8s/kodofs.yaml: k8s/kodofs/kodofs-plugin.yaml k8s/kodofs/kodofs-rbac.yaml k8s/kodofs/kodofs-provisioner.yaml common.mk
40+
@cat k8s/kodofs/kodofs-plugin.yaml \
41+
| sed 's/$${DOCKERHUB_ORGANIZATION}/$(subst /,\/,$(DOCKERHUB_ORGANIZATION))/g' \
42+
| sed 's/$${DOCKERHUB_IMAGE}/$(DOCKERHUB_IMAGE)/g' \
43+
| sed 's/$${DOCKERHUB_TAG}/$(DOCKERHUB_TAG)/g' \
44+
>> k8s/kodofs.yaml
45+
@echo --- >> k8s/kodofs.yaml
46+
@cat k8s/kodofs/kodofs-rbac.yaml >> k8s/kodofs.yaml
47+
@echo --- >> k8s/kodofs.yaml
48+
@cat k8s/kodofs/kodofs-provisioner.yaml >> k8s/kodofs.yaml
49+
50+
.PHONY: combine_csi_driver_yaml
51+
combine_csi_driver_yaml: k8s/kodo.yaml k8s/kodofs.yaml
52+
53+
.PHONY: install_kodo_csi_driver
54+
install_kodo_csi_driver: k8s/kodo.yaml
55+
kubectl apply -f $<
56+
57+
.PHONY: install_kodofs_csi_driver
58+
install_kodofs_csi_driver: k8s/kodofs.yaml
59+
kubectl apply -f $<
60+
61+
.PHONY: delete_kodo_csi_driver
62+
delete_kodo_csi_driver: k8s/kodo.yaml
63+
kubectl delete -f $<
64+
65+
.PHONY: delete_kodofs_csi_driver
66+
delete_kodofs_csi_driver: k8s/kodofs.yaml
67+
kubectl delete -f $<
68+
69+
.PHONY: install_plugins
70+
install_plugins: install_kodo_csi_driver install_kodofs_csi_driver
71+
72+
.PHONY: delete_plugins
73+
delete_plugins: delete_kodo_csi_driver delete_kodofs_csi_driver
74+
75+
docker/rclone:
76+
curl -LJO# https://github.com/rclone/rclone/releases/download/$(RCLONE_VERSION)/rclone-$(RCLONE_VERSION)-linux-amd64.zip
77+
unzip rclone-$(RCLONE_VERSION)-linux-amd64.zip
78+
mv rclone-$(RCLONE_VERSION)-linux-amd64/rclone docker/rclone
79+
rm rclone-$(RCLONE_VERSION)-linux-amd64.zip
80+
rm -rf rclone-$(RCLONE_VERSION)-linux-amd64
81+
82+
# 下载kodofs二进制文件,由于kodofs是私有仓库,所以需要携带 Github API Token 才能下载
83+
docker/kodofs:
84+
@if [ -z $$GITHUB_API_TOKEN ];\
85+
then \
86+
echo "Please configure environment GITHUB_API_TOKEN"; \
87+
exit 1; \
88+
fi
89+
cd scripts && bash get_gh_asset.sh qbox kodofs $(KODOFS_VERSION) kodofs
90+
mv scripts/kodofs docker/kodofs
91+
92+
93+
.PHONY: build_image
94+
build_image: docker/rclone docker/kodofs
95+
docker build --pull \
96+
-t="$(DOCKERHUB_ORGANIZATION)/$(DOCKERHUB_IMAGE):$(VERSION)" \
97+
-f Dockerfile .
98+
99+
.PHONY: push_image
100+
push_image: build_image
101+
docker push "$(DOCKERHUB_ORGANIZATION)/$(DOCKERHUB_IMAGE):$(VERSION)"
102+
103+
.PHONY: install_kodo_static_example
104+
install_kodo_static_example: k8s/kodo.yaml
105+
kubectl apply -f k8s/kodo.yaml
106+
kubectl apply -f examples/kodo/static-provisioning/
107+
kubectl apply -f examples/kodo/deploy.yaml
108+
109+
.PHONY: delete_kodo_static_example
110+
delete_kodo_static_example:
111+
kubectl delete -f examples/kodo/deploy.yaml || true
112+
kubectl delete -f examples/kodo/static-provisioning/ || true
113+
kubectl delete -f k8s/kodo.yaml || true
114+
115+
.PHONY: install_kodo_dynamic_example
116+
install_kodo_dynamic_example: k8s/kodo.yaml
117+
kubectl apply -f k8s/kodo.yaml
118+
kubectl apply -f examples/kodo/dynamic-provisioning/
119+
kubectl apply -f examples/kodo/deploy.yaml
120+
121+
.PHONY: delete_kodo_dynamic_example
122+
delete_kodo_dynamic_example:
123+
kubectl delete -f examples/kodo/deploy.yaml || true
124+
kubectl delete -f examples/kodo/dynamic-provisioning/ || true
125+
kubectl delete -f k8s/kodo.yaml || true
126+
127+
.PHONY: install_kodofs_static_example
128+
install_kodofs_static_example: k8s/kodofs.yaml
129+
kubectl apply -f k8s/kodofs.yaml
130+
kubectl apply -f examples/kodofs/static-provisioning/
131+
kubectl apply -f examples/kodofs/deploy.yaml
132+
133+
.PHONY: delete_kodofs_static_example
134+
delete_kodofs_static_example:
135+
kubectl delete -f examples/kodofs/deploy.yaml || true
136+
kubectl delete -f examples/kodofs/static-provisioning/ || true
137+
kubectl delete -f k8s/kodofs.yaml || true
138+
139+
.PHONY: install_kodofs_dynamic_example
140+
install_kodofs_dynamic_example: k8s/kodofs.yaml
141+
kubectl apply -f k8s/kodofs.yaml
142+
kubectl apply -f examples/kodofs/dynamic-provisioning/
143+
kubectl apply -f examples/kodofs/deploy.yaml
144+
145+
.PHONY: delete_kodofs_dynamic_example
146+
delete_kodofs_dynamic_example:
147+
kubectl delete -f examples/kodofs/deploy.yaml || true
148+
kubectl delete -f examples/kodofs/dynamic-provisioning/ || true
149+
kubectl delete -f k8s/kodofs.yaml || true

README.md

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
# Qiniu CSI Plugin
1+
# Qiniu Kubernetes CSI Plugin
22

33
CSI Plugin for Kubernetes, Support Qiniu Cloud Storage.
44

55
## Introduction
66

7-
Qiniu CSI Plugin implement an interface between CSI enabled Container Orchestrator and Qiniu Cloud Storage. You can create a PV with CSI configuration, and the PVC, Deployment defines as usual.
7+
Qiniu Kubernetes CSI Plugin implement an interface between CSI enabled Container Orchestrator and Qiniu Cloud Storage. You can create a PV with CSI configuration, and the PVC, Deployment defines as usual.
88

99
## Configuration Requirements
1010

@@ -15,16 +15,17 @@ Qiniu CSI Plugin implement an interface between CSI enabled Container Orchestrat
1515
plugin.storage.qiniu.com can be compiled in a form of a container.
1616

1717
To build a container and push to Docker Hub:
18-
18+
Kodofs is private repo, you need to configured `GITHUB_API_TOKEN` by environment variable to access it.
1919
```
20-
$ make
20+
$ export GITHUB_API_TOKEN=<your github api token>
21+
$ make push_image
2122
```
2223

2324
## Usage
2425

25-
### Use Kodo CSI Plugin
26+
### Use Qiniu Kubernetes CSI Plugin
2627

27-
#### Step 1: Create CSI Plugin
28+
#### Step 1: Create Qiniu Kubernetes CSI Plugin
2829

2930
```sh
3031
$ kubectl create -f ./k8s/kodo/

common.mk

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
VERSION = $(shell git describe --tags HEAD || echo "NO_VERSION_TAG")
2+
COMMIT_ID = $(shell git rev-parse --short HEAD || echo "HEAD")
3+
BUILD_TIME = $(shell date -u '+%Y-%m-%dT%H:%M:%SZ')
4+
CONNECTOR_FILENAME = connector.plugin.storage.qiniu.com
5+
PLUGIN_FILENAME = plugin.storage.qiniu.com
6+
7+
DOCKERHUB_ORGANIZATION = kodoproduct
8+
DOCKERHUB_IMAGE = csi-plugin.storage.qiniu.com
9+
DOCKERHUB_TAG = ${VERSION}
10+
11+
RCLONE_VERSION = v1.62.2
12+
KODOFS_VERSION = v3.2.9

0 commit comments

Comments
 (0)