K8S - 添加带有证书的ImagePullPolicy

K8S - Add ImagePullPolicy for with Certificate

我在 helm 3 上使用 k8s。

我想进行测试,能够访问当前机器的当前集群。

当我运行:

kubectl config view --raw

输出是这样的:

apiVersion: v1
clusters:
- cluster:
    server: https://...
  name: cluster.local
contexts:
- context:
    cluster: cluster.local
    namespace: ...
    user: kubernetes-admin
  name: kubernetes-admin@cluster.local
current-context: kubernetes-admin@cluster.local
kind: Config
preferences: {}
users:
- name: kubernetes-admin
  user:
    client-certificate-data: 
    ...
    client-key-data: 
    ....

对于输出,我看到那里的配置有名称服务器:cluster.localcurrent-context: kubernetes-admin@cluster.local.

(与 ~/.kube/config 文件相同)。

对于用户,有一个名为:kubernetes-admin 的用户具有 client-certificate-data 值和 client-key-data 值。我还看到有一个键:

kubernetes-adminclient-certificate-data 代表什么,我可以在 ImagePullSecret 部分使用它们来表示 K8S 对象:容器中的 Pod。

即:

我创建了一个秘密:

kubectl create secret my-secret .... 

如何使用证书而不是用户 + 密码来创建秘密?

和一个 pod(yaml 文件):

apiVersion: v1
kind: Pod
metadata:
  name: test-pod
  labels:
    name: test-pod
    app: test-pod
spec:
  imagePullSecrets:
    - name: my-secret
  containers:
    - name: test-pod
      image: "my-image:1.0"
      imagePullPolicy: IfNotPresent 

我可以在 imagePullSecret 中创建秘密使用而不提供用户名和密码吗(这不是用户名和密码 - 它是证书密钥/ssh)。

出于测试目的,我使用的是当前机器(在上传到远程注册表之前。需要在此之前进行一些测试)。

谢谢。

我会贡献我的知识来解决这个问题。

不需要为本地机器的当前注册表创建密钥。

当前默认的集群名称是cluster.local

所有这些都需要为图像添加别名,称为:cluster.local/my-image:tag 并在 yaml 代码中使用它。

也就是说,运行:

docker tag my-image:1.0 cluster.local/myimage:1.0

在 yaml 中:

apiVersion: v1
kind: Pod
metadata:
  name: test-pod
  labels:
    name: test-pod
    app: test-pod
spec:
  containers:
    - name: test-pod
      image: "cluster.local/my-image:1.0"
      imagePullPolicy: IfNotPresent