IT七剑客 IT七剑客
首页
wresource
郭霖
孤寒者
IT邦德
沉默王二
老麦
stackoverflow
GitHub (opens new window)
首页
wresource
郭霖
孤寒者
IT邦德
沉默王二
老麦
stackoverflow
GitHub (opens new window)
  • 从零开始写 k8s 发布工具(一)

  • 从零开始写 k8s 发布工具(二)

  • 从零开始写 k8s 发布工具(三)

    • 为 Container 添加环境变量
    • ConfigMap 和 Secret 的生成器
    • 注入 ConfigMap 和 Secrets 到容器环境变量
    • 用字符串定义容器申请资源上下限
    • 为 Container 添加健康检查方法
    • 镜像拉取鉴权和策略
      • 镜像拉取鉴权
      • 镜像拉去策略
      • 使用
  • 从零开始写 k8s 发布工具(四)

  • istio的环境准备

  • istioVirtualService

  • 老麦 Go
  • 从零开始写 k8s 发布工具(三)
老麦
2023-01-31
目录

镜像拉取鉴权和策略

# 3.6. 镜像拉取鉴权和策略

logo

今天我们解决镜像拉取鉴权和策略

# 镜像拉取鉴权

拉取私有镜像或私有仓库镜像的时候, 需要提供鉴权信息。

在 Kubernets 中, 通过 Secret 管理账号这些账号信息。 Secret 类型分为两种,

  1. kubernetes.io/dockerconfigjson: 如果有linux安装了 docker, 就是 ~/.docker/config.json 这个文件。

  2. kubernetes.io/dockercfg: 不太熟。

在 /pkg/tokube/pod.go 中, 可以看到 ImagePullSecrets 的处理方法。 就是将字符串转为 kubernetes 的引用对象, 其它没什么好说的。

func ImagePullSecrets(secrets []string) []corev1.LocalObjectReference {
	if len(secrets) == 0 {
		return nil
	}
	objs := []corev1.LocalObjectReference{}
	for _, s := range secrets {
		objs = append(objs, corev1.LocalObjectReference{
			Name: s,
		})
	}
	return objs
}
1
2
3
4
5
6
7
8
9
10
11
12

# 镜像拉去策略

镜像拉去策略分为三种, Never, Always, IfNotPresent

在 /pkg/tokube/container.go 中, 可以看到 ImagePullPolicy 的处理方法。

func ImagePullPolicy(s string) corev1.PullPolicy {
	switch strings.ToLower(s) {
	case "always":
		return corev1.PullAlways
	case "never":
		return corev1.PullNever
	case "ifnotpresent":
		return corev1.PullIfNotPresent
	}
	return ""
}
1
2
3
4
5
6
7
8
9
10
11
  1. 在 kustz.yml 不再大小写敏感, 因为我们将值全部转为小写。
  2. 当不指定配置策略的时候, 使用默认策略。

# 使用

如果在 kustz.yml 配置中, 通过如下配置。

假设配置文件名为 docker-config.json, 支持多个账号, 参考如下。

// docker-config.json
{
	"auths": {
		"ghcr.io": {
			"auth": "Abcdefg=="
		},
		"https://index.docker.io/v1/": {
			"auth": "Abcdefg="
		}
	}
}
1
2
3
4
5
6
7
8
9
10
11

auth 值是 user:password 的 base64 编码。 如果不知道怎么弄 docker login 生成

$ docker login -u myUser -p myPass
1

在 kustz.yml 中, 通过 docker-config.json 创建 Secret 并引用。

service:
  imagePullSecrets:
    - aliyun-repo

secrets:
  files:
    - name: aliyun-repo
      files:
        - .dockerconfigjson=docker-config.json
      type: kubernetes.io/dockerconfigjson
1
2
3
4
5
6
7
8
9
10
编辑 (opens new window)
上次更新: 2023/02/05, 02:48:13
为 Container 添加健康检查方法
使用 cobrautils 为命令添加更实用的命令参数

← 为 Container 添加健康检查方法 使用 cobrautils 为命令添加更实用的命令参数→

最近更新
01
Coding 102 Writing code other people can read
02-26
02
Kotlin Flow响应式编程,StateFlow和SharedFlow
02-05
03
Kotlin Flow响应式编程,操作符函数进阶
02-05
更多文章>
Theme by Vdoing | Copyright © 2022-2023 IT七剑客 | MIT License
  • 闽ICP备2021006579号-4
  • 闽公网安备 35012102500470号
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式