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.local
和 current-context: kubernetes-admin@cluster.local
.
(与 ~/.kube/config 文件相同)。
对于用户,有一个名为:kubernetes-admin
的用户具有 client-certificate-data
值和 client-key-data
值。我还看到有一个键:
kubernetes-admin
和 client-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
我在 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.local
和 current-context: kubernetes-admin@cluster.local
.
(与 ~/.kube/config 文件相同)。
对于用户,有一个名为:kubernetes-admin
的用户具有 client-certificate-data
值和 client-key-data
值。我还看到有一个键:
kubernetes-admin
和 client-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