Skip to content

Commit 36ea757

Browse files
authored
Merge pull request #74 from maxbrunet/feat/none-dirver/kubernetes-v1.26
feat(none-driver): support Kubernetes v1.26
2 parents 2b1efcc + 25e2551 commit 36ea757

File tree

3 files changed

+87
-41
lines changed

3 files changed

+87
-41
lines changed

.github/workflows/test.yml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,4 +59,10 @@ jobs:
5959
# Should be fine
6060
- run: |
6161
cat ~/.minikube/profiles/minikube/config.json | grep ValidatingAdmissionPolicy
62-
62+
test-none-driver:
63+
runs-on: ubuntu-latest
64+
steps:
65+
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c
66+
- uses: ./
67+
with:
68+
driver: none

dist/index.js

Lines changed: 37 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -248,30 +248,43 @@ exports.installNoneDriverDeps = void 0;
248248
const core_1 = __nccwpck_require__(2186);
249249
const exec_1 = __nccwpck_require__(1514);
250250
const tool_cache_1 = __nccwpck_require__(7784);
251-
const installCriDocker = () => __awaiter(void 0, void 0, void 0, function* () {
252-
const urlBase = 'https://storage.googleapis.com/setup-minikube/cri-dockerd/v0.2.3/';
253-
const binaryDownload = (0, tool_cache_1.downloadTool)(urlBase + 'cri-dockerd');
254-
const serviceDownload = (0, tool_cache_1.downloadTool)(urlBase + 'cri-docker.service');
255-
const socketDownload = (0, tool_cache_1.downloadTool)(urlBase + 'cri-docker.socket');
256-
yield (0, exec_1.exec)('chmod', ['+x', yield binaryDownload]);
257-
yield (0, exec_1.exec)('sudo', ['mv', yield binaryDownload, '/usr/bin/cri-dockerd']);
258-
yield (0, exec_1.exec)('sudo', [
259-
'mv',
260-
yield serviceDownload,
261-
'/usr/lib/systemd/system/cri-docker.service',
262-
]);
251+
const cniPluginsVersion = 'v1.2.0';
252+
const criDockerVersion = 'v0.3.1';
253+
const crictlVersion = 'v1.26.1';
254+
const installCniPlugins = () => __awaiter(void 0, void 0, void 0, function* () {
255+
const cniPluginsURL = `https://github.com/containernetworking/plugins/releases/download/${cniPluginsVersion}/cni-plugins-linux-amd64-${cniPluginsVersion}.tgz`;
256+
const cniPluginsDownload = (0, tool_cache_1.downloadTool)(cniPluginsURL);
257+
yield (0, exec_1.exec)('sudo', ['mkdir', '-p', '/opt/cni/bin']);
263258
yield (0, exec_1.exec)('sudo', [
264-
'mv',
265-
yield socketDownload,
266-
'/usr/lib/systemd/system/cri-docker.socket',
259+
'tar',
260+
'zxvf',
261+
yield cniPluginsDownload,
262+
'-C',
263+
'/opt/cni/bin',
267264
]);
268265
});
269-
const installConntrackSocat = () => __awaiter(void 0, void 0, void 0, function* () {
266+
const installCriDocker = () => __awaiter(void 0, void 0, void 0, function* () {
267+
let codename = '';
268+
const options = {
269+
listeners: {
270+
stdout: (data) => {
271+
codename += data.toString();
272+
},
273+
},
274+
};
275+
yield (0, exec_1.exec)('lsb_release', ['--short', '--codename'], options);
276+
const criDockerURL = `https://github.com/Mirantis/cri-dockerd/releases/download/${criDockerVersion}/cri-dockerd_${criDockerVersion.replace(/^v/, '')}.3-0.ubuntu-${codename}_amd64.deb`;
277+
const criDockerDownload = (0, tool_cache_1.downloadTool)(criDockerURL);
278+
yield (0, exec_1.exec)('sudo', ['dpkg', '--install', yield criDockerDownload]);
279+
});
280+
const installConntrackSocatCriDocker = () => __awaiter(void 0, void 0, void 0, function* () {
270281
yield (0, exec_1.exec)('sudo', ['apt-get', 'update', '-qq']);
271282
yield (0, exec_1.exec)('sudo', ['apt-get', '-qq', '-y', 'install', 'conntrack', 'socat']);
283+
// Need to wait for the dpkg frontend lock to install cri-docker
284+
yield installCriDocker();
272285
});
273286
const installCrictl = () => __awaiter(void 0, void 0, void 0, function* () {
274-
const crictlURL = 'https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.17.0/crictl-v1.17.0-linux-amd64.tar.gz';
287+
const crictlURL = `https://github.com/kubernetes-sigs/cri-tools/releases/download/${crictlVersion}/crictl-${crictlVersion}-linux-amd64.tar.gz`;
275288
const crictlDownload = (0, tool_cache_1.downloadTool)(crictlURL);
276289
yield (0, exec_1.exec)('sudo', [
277290
'tar',
@@ -281,15 +294,20 @@ const installCrictl = () => __awaiter(void 0, void 0, void 0, function* () {
281294
'/usr/local/bin',
282295
]);
283296
});
297+
const makeCniDirectoryReadable = () => __awaiter(void 0, void 0, void 0, function* () {
298+
// created by podman package with 700 root:root
299+
yield (0, exec_1.exec)('sudo', ['chmod', '755', '/etc/cni/net.d']);
300+
});
284301
const installNoneDriverDeps = () => __awaiter(void 0, void 0, void 0, function* () {
285302
const driver = (0, core_1.getInput)('driver').toLowerCase();
286303
if (driver !== 'none') {
287304
return;
288305
}
289306
yield Promise.all([
290-
installCriDocker(),
291-
installConntrackSocat(),
307+
installCniPlugins(),
308+
installConntrackSocatCriDocker(),
292309
installCrictl(),
310+
makeCniDirectoryReadable(),
293311
]);
294312
});
295313
exports.installNoneDriverDeps = installNoneDriverDeps;

src/none-driver.ts

Lines changed: 43 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,34 +2,50 @@ import {getInput} from '@actions/core'
22
import {exec} from '@actions/exec'
33
import {downloadTool} from '@actions/tool-cache'
44

5-
const installCriDocker = async (): Promise<void> => {
6-
const urlBase =
7-
'https://storage.googleapis.com/setup-minikube/cri-dockerd/v0.2.3/'
8-
const binaryDownload = downloadTool(urlBase + 'cri-dockerd')
9-
const serviceDownload = downloadTool(urlBase + 'cri-docker.service')
10-
const socketDownload = downloadTool(urlBase + 'cri-docker.socket')
11-
await exec('chmod', ['+x', await binaryDownload])
12-
await exec('sudo', ['mv', await binaryDownload, '/usr/bin/cri-dockerd'])
13-
await exec('sudo', [
14-
'mv',
15-
await serviceDownload,
16-
'/usr/lib/systemd/system/cri-docker.service',
17-
])
5+
const cniPluginsVersion = 'v1.2.0'
6+
const criDockerVersion = 'v0.3.1'
7+
const crictlVersion = 'v1.26.1'
8+
9+
const installCniPlugins = async (): Promise<void> => {
10+
const cniPluginsURL = `https://github.com/containernetworking/plugins/releases/download/${cniPluginsVersion}/cni-plugins-linux-amd64-${cniPluginsVersion}.tgz`
11+
const cniPluginsDownload = downloadTool(cniPluginsURL)
12+
await exec('sudo', ['mkdir', '-p', '/opt/cni/bin'])
1813
await exec('sudo', [
19-
'mv',
20-
await socketDownload,
21-
'/usr/lib/systemd/system/cri-docker.socket',
14+
'tar',
15+
'zxvf',
16+
await cniPluginsDownload,
17+
'-C',
18+
'/opt/cni/bin',
2219
])
2320
}
2421

25-
const installConntrackSocat = async (): Promise<void> => {
22+
const installCriDocker = async (): Promise<void> => {
23+
let codename = ''
24+
const options = {
25+
listeners: {
26+
stdout: (data: Buffer) => {
27+
codename += data.toString()
28+
},
29+
},
30+
}
31+
await exec('lsb_release', ['--short', '--codename'], options)
32+
const criDockerURL = `https://github.com/Mirantis/cri-dockerd/releases/download/${criDockerVersion}/cri-dockerd_${criDockerVersion.replace(
33+
/^v/,
34+
''
35+
)}.3-0.ubuntu-${codename}_amd64.deb`
36+
const criDockerDownload = downloadTool(criDockerURL)
37+
await exec('sudo', ['dpkg', '--install', await criDockerDownload])
38+
}
39+
40+
const installConntrackSocatCriDocker = async (): Promise<void> => {
2641
await exec('sudo', ['apt-get', 'update', '-qq'])
2742
await exec('sudo', ['apt-get', '-qq', '-y', 'install', 'conntrack', 'socat'])
43+
// Need to wait for the dpkg frontend lock to install cri-docker
44+
await installCriDocker()
2845
}
2946

3047
const installCrictl = async (): Promise<void> => {
31-
const crictlURL =
32-
'https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.17.0/crictl-v1.17.0-linux-amd64.tar.gz'
48+
const crictlURL = `https://github.com/kubernetes-sigs/cri-tools/releases/download/${crictlVersion}/crictl-${crictlVersion}-linux-amd64.tar.gz`
3349
const crictlDownload = downloadTool(crictlURL)
3450
await exec('sudo', [
3551
'tar',
@@ -40,14 +56,20 @@ const installCrictl = async (): Promise<void> => {
4056
])
4157
}
4258

59+
const makeCniDirectoryReadable = async (): Promise<void> => {
60+
// created by podman package with 700 root:root
61+
await exec('sudo', ['chmod', '755', '/etc/cni/net.d'])
62+
}
63+
4364
export const installNoneDriverDeps = async (): Promise<void> => {
4465
const driver = getInput('driver').toLowerCase()
4566
if (driver !== 'none') {
4667
return
4768
}
4869
await Promise.all([
49-
installCriDocker(),
50-
installConntrackSocat(),
70+
installCniPlugins(),
71+
installConntrackSocatCriDocker(),
5172
installCrictl(),
73+
makeCniDirectoryReadable(),
5274
])
5375
}

0 commit comments

Comments
 (0)