Kubernetes 卷存储 ConfigMap|kubenetes使用ConfigMap挂载ssh公钥实现pod免密

11 篇文章 0 订阅
2 篇文章 0 订阅

一、ConfigMap介绍

ConfigMap是一个Kubernetes资源,允许您将配置数据与应用程序代码分开存储。它提供了一种将配置设置与应用程序本身分离的方法,从而可以更轻松地管理和更新配置,而无需修改应用程序的代码或容器镜像。
ConfigMap通常用于存储键值对或配置文件。它可以通过使用YAML文件的声明性方法或通过 Kubernetes API 创建。创建后,ConfigMap 可以作为卷挂载,也可以作为容器化应用程序中的环境变量公开

二、使用ConfigMap挂载ssh公钥实现pod免密

[root@k8s-work01 ~]#  ssh-keygen #客户端生成公钥
[root@k8s-work01 ~]# scp /root/.ssh/id_rsa.pub   root@masterIP:/公钥存放路径/
[root@k8s-master ~]# kubectl create configmap ssh-config   --from-file=id_rsa.pub  -n ssh #创建configmap

三、Dockerfile制作ssh免密镜像

FROM centos:centos7.9.2009
# 安装openssh-server
RUN yum install -y epel-release
RUN yum install -y openssh-server openssh-clients  cronie && \
    ssh-keygen -A
#设置 root 用户密码
RUN echo "root:root" | chpasswd
# SSH登录设置允许 root 用户
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config && \
    mkdir -p /root/.ssh && \
    chmod 700 /root/.ssh
# 暴露 SSH 端口
EXPOSE 22
# 容器启动时启动SSH服务
CMD ["/usr/sbin/sshd", "-D"]

四、创建deployment,service。使得

apiVersion: apps/v1
kind: Deployment
metadata:
  name: ssh-deployment
  namespace: ssh
  labels:
    app: ssh
spec:
  selector:
    matchLabels:
      app: ssh
  template:
    metadata:
      labels:
        app: ssh
    spec:
      nodeSelector:
        kubernetes.io/hostname: k8s-master  #节点标签选择调度
      hostname: sshd  #主机名
      containers:
      - name: ssh
        image: ssh:v1
        ports:
        - containerPort: 22
        volumeMounts:
          - name: ssh-config
            mountPath: /root/.ssh/authorized_keys   #精确到文件
            subPath: id_rsa.pub  #精确到文件
      volumes:
        - name: ssh-config
          configMap:
            name: ssh-config

---
apiVersion: v1
kind: Service
metadata:
  name: ssh-svc
  namespace: ssh
spec:
  selector:
    app: ssh                    ###关联容器标签
  ports:
  - protocol: TCP
    port: 22                    ###容器端口
    nodePort: 30080              ###nodeport映射为30080端口,便于外部主机访问
  type: NodePort                 ###svc类型为nodeport

k8s集群可通过pod IP访问
kubectl get pods -n ssh -o wide #查看pod IP
ssh root@10.244.235.239  #集群内节点通过pod IP访问
ssh root@192.168.200.10  -p30009  #集群外节点通过pod 节点暴露的端口访问

kubenetes 卷挂载ssh公私钥实现集群pod免密和宿主机与pod免密直通车

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值