容器化与云安全实践:ChartMuseum、私有仓库、云安全、应用部署、生命周期、定时任务、HPA管理案例流程
介绍
本文围绕云原生与云安全实操展开,包含部署 ChartMuseum 私有仓库及 WordPress 应用,配置 Pod 生命周期、定时任务与 HPA 扩缩容规则,公有云安全:在华为云主机部署 chkrootkit 检测工具、ELK 日志分析服务及 Filebeat 采集日志。内容含配置与命令,适合运维爱好者快速掌握。
1.ChartMuseum仓库部署
在 k8s 集群中创建 chartmuseum 命名空间,编写 yaml 文件在 chartmuseum 命名空间中 使用 chartmuseum:latest 镜像创建本地私有 chart 仓库,设置其仓库存储目录为宿主机的 /data/charts 目录。编写 service.yaml 文件,为 chart 私有仓库创建 Service 访问策略,定义其 为 ClusterIP 访问模式。
[root@k8s-master-node1 ~]# kubectl create ns chartmuseum [root@k8s-master-node1 ~]# kubectl create service clusterip chartmuseum --tcp=8080 --dry-run -oyaml>service.yaml [root@k8s-master-node1 ~]#kubectl run chartmuseum --image=chartmuseum/chartmuseum:latest --port=8080 --dry-run -oyaml>chartmuseum.yaml [root@k8s-master-node1 ~]# mkdir /data/charts && cd /data/ && chmod 777 charts [root@k8s-master-node1 ~]# cat service.yaml apiVersion: v1 kind: Service metadata: labels: app: chartmuseum name: chartmuseum namespace: chartmuseum spec: ports: - port: 8080 protocol: TCP targetPort: 8080 selector: app: chartmuseum type: ClusterIP [root@k8s-master-node1 ~]# cat chartmuseum.yaml apiVersion: v1 kind: Pod metadata: labels: app: chartmuseum name: chartmuseum namespace: chartmuseum spec: containers: - image: chartmuseum/chartmuseum:latest name: chartmuseum imagePullPolicy: IfNotPresent ports: - containerPort: 8080 env: - name: STORAGE value: local - name: STORAGE_LOCAL_ROOTDIR value: /charts volumeMounts: - name: chartspath mountPath: /charts volumes: - name: chartspath hostPath: path: /data/charts [root@k8s-master-node1 ~]# kubectl apply -f chartmuseum.yaml service.yaml [root@k8s-master-node1 ~]# kubectl get pod -n chartmuseum NAME READY STATUS RESTARTS AGE chartmuseum 1/1 Running 0 44s 在 K8s 集群内搭建本地私有 Chart 仓库,用于存储、管理 Helm 打包的应用(如 WordPress),避免依赖外部仓库,提升部署效率和安全性,且通过宿主机目录挂载实现 Chart 包持久化存储
2.私有仓库管理
在 master 节点添加搭建的本地私有 chart 仓库源,name 为 chartmuseum,并上传 wordpress-13.0.23.tgz 包至 chartmuseum 私有仓库中。可以使用本地仓库 chart 源部署应用。
验证过程(执行结果与判分结果):
[root@kcloud-server ~]# mkdir -p /data/charts [root@kcloud-server ~]# chmod 777 /data/charts/ #查看svc [root@kcloud-server ~]# kubectl get svc -n chartmuseum NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE chartmuseum ClusterIP 10.247.199.133 <none> &nbs