CKS 考试题整理 (15)-镜像扫描ImagePolicyWebhook

发布时间 2023-06-16 16:42:43作者: 打工人,打工魂

Context

cluster 上设置了容器镜像扫描器,但尚未完全集成到cluster 的配置中。

完成后,容器镜像扫描器应扫描并拒绝易受攻击的镜像的使用。

Task

注意:你必须在 cluster 的 master 节点上完成整个考题,所有服务和文件都已被准备好并放置在该节点上。

 

给定一个目录 /etc/kubernetes/epconfig中不完整的配置,

以及具有 HTTPS 端点 https://acme.local:8082/image_policy 的功能性容器镜像扫描器:

1. 启用必要的插件来创建镜像策略

2. 校验控制配置并将其更改为隐式拒绝(implicit deny)

3. 编辑配置以正确指向提供的 HTTPS 端点

最后,通过尝试部署易受攻击的资源 /cks/img/web1.yaml 来测试配置是否有效。

 

你可以在 /var/log/imagepolicy/roadrunner.log 找到容器镜像扫描仪的日志文件。

 

 

 

 

 

解答

切换集群

kubectl config use-contextKSSH00901

 

  1. 切换到master
ssh master01 && sudo -i

 

  1. 编辑 admission_configuration.json 修改 defaultAllow 为 false
vim /etc/kubernetes/epconfig/admission_configuration.json

......

"denyTTL": 50,

"retryBackoff": 500,

"defaultAllow": false # 将 true 改完 false

......
  1. 编辑 /etc/kubernetes/epconfig/kubeconfig.yml,添加 webhook server 地址:

操作前,先备份文件

mkdir bak14

cp /etc/kubernetes/opconfig/kubeconfig.yml bak14/

vim /etc/kubernetes/opconfig/kubeconfig.yml

 

修改内容如下:

......

certificate-authority: /etc/kubernetes/epconfig/server.crt

server: https://acme.local:8082/image_policy # 添加 webhook server 地址

......
 

 

  1. 编辑 kube-apiserver.yaml ,从官网中引用 imagePolicyWebhook 的配置信息:

先备份文件

cp /etc/kubernetes/manifests/kube-apiserver.yaml bak14/

vim /etc/kubernetes/manifests/kube-apiserver.yaml

 

在 command: 下添加如下内容

- --enable-admission-plugins=NodeRestriction,ImagePolicyWebhook

- --admission-control-config-file=/etc/kubernetes/epconfig/admission_configuration.json

在kube-apiserver.yaml 的 volumeMounts 增加

volumeMounts: # 在volumeMounts 下面增加

- mountPath: /etc/kubernetes/epconfig

name: epconfig

readOnly: true

 

在 kube-apiserver.yaml 的 volumes 增加

volumes: # 在 volumes 下面增加

- name: epconfig

hostPath:

path: /etc/kubernetes/epconfig

type: DirectoryOrCreate

注意:如果是目录,写 DirectoryOrCreate 如果是文件,则写File

  1. 重启 kubelet
systemctl restart kubelet

 

等待3分钟左右,等集群应用策略后,确保 kube-apiserver 是running 的

检查