90、k8s之secret+configMap

一、secret配置管理

配置管理:

加密配置:保存密码,token,其他敏感信息的k8s资源

应用配置:我们需要定制化的给应用进行配置,我们需要把定制好的配置文件同步到pod当中容器

1.1、加密配置:

secret:

[root@master01 ~]# kubectl get secrets   ##查看加密配置
[root@master01 ~]# kubectl get secrets -n kube-system   ##查看加密配置

1.2、secret三种类型:

1、service-account-token:k8s集群自建,用来访问APIserver的secret,pod的默认使用这secret和APIserver进行通信。

自动挂载到pod的目录/run/secrets/kubernets.io/serviceaccount目录。

2、Opaque:用户自定义的密码,密钥等等,默认类型就是opaque。generic(语法)

3、kubernets.io/dockerconfigison:配置docker私有仓库的认证信息。

4、TLS:用来存储TLS或者SSL证书和私钥。

1、创建文件-----基于文件创建secret,目的进行加密

[root@master01 ~]# cd /opt/
[root@master01 opt]# mkdir secret
[root@master01 opt]# cd secret/
[root@master01 secret]# echo "xy102" > username.txt
[root@master01 secret]# echo "123456" > passwd.txt
[root@master01 secret]# echo "123456" > password.txt

##创建加密文件secret1,基于Opaque类型创建,文件来自于本目录路径

[root@master01 secret]# kubectl create secret generic secret1 --from-file=username.txt --from-file=password.txt 


##查看secret配置文件
[root@master01 secret]# kubectl get secrets 
secret1                              Opaque                                2      11s

##查看secret1的详细信息,类型
[root@master01 secret]# kubectl describe secrets secret1             
Name:         secret1
Namespace:    default
Labels:       <none>
Annotations:  <none>

Type:  Opaque

Data
====
password.txt:  7 bytes
username.txt:  6 bytes

2、对指定内容进行加密-----#yaml文件实现----生成secret2加密文件

##对指定内容进行加密
[root@master01 configmap]# echo -n xy102 | base64 
eHkxMDI=
[root@master01 configmap]# echo -n 123456 | base64
MTIzNDU2

[root@master01 secret]# vim secret1.yaml

apiVersion: v1
kind: Secret
metadata:
  name: secret2
type: Opaque
#声明类型
data:             ##指定文件来自于加密过的文件
  username: eHkxMDI=
  password: MTIzNDU2

[root@master01 secret]# kubectl apply -f secret1.yaml 
secret/secret2 created

3、#如何把secret挂载到pod当中

[root@master01 secret]# vim secret1.yaml

apiVersion: v1
kind: Secret
metadata:
  name: secret2
type: Opaque
#声明类型
data:
  username: eHkxMDI=
  password: MTIzNDU2
----------------------------------------------
##以上已经创建好secret2加密文件

[root@master01 secret]# kubectl apply -f secret1.yaml 
secret/secret2 created

[root@master01 secret]# vim test1.yaml

#如何把secrert挂载到pod当中
apiVersion: v1
kind: Pod
metadata:
  name: pod1
  labels:
    app: test
spec:
  containers:
  - name: nginx
    image: nginx:1.22
    volumeMounts:
    - name: sec-test
      mountPath: "/etc/secrets"  ##容器里面的目录
      readOnly: true          ##只读模式,默认就是只读
  volumes:
  - name: sec-test           ##名称自定义
    secret:                  ##引用加密文件格式声明
      secretName: secret2        ##通过secret加密文件名称,把secret2文件挂载到容器

##查看加密文件详情
[root@master01 secret]# kubectl get secrets
secret2                              Opaque                                2      13m

##拉取pod,进行加密文件从宿主机到pod容器的挂载
[root@master01 secret]# kubectl apply -f test1.yaml 
pod/pod1 created
[root@master01 secret]# kubectl get pod
pod1                   1/1     Running   0          14s
[root@master01 secret]# kubectl exec -it pod1 bash
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
root@pod1:/# cd /etc/
root@pod1:/etc# cd secrets/
root@pod1:/etc/secrets# ls
password  username

4、环境变量

[root@master01 secret]# vim test1.yaml 

#如何把secrert挂载到pod当中
#把secret作为环境变量传到pod当中
apiVersion: v1
kind: Pod
metadata:
  name: pod1
  labels:
    app: test
spec:
  containers:
  - name: nginx
    image: nginx:1.22
    env:
#给pod容器定义环境变量
    - name: USER
#环境变量的变量名
      valueFrom:
#user变量的值从哪里来?
        secretKeyRef:   
##引用secret的某一个加密文件,采用key形式,进行捕捉,此处捕捉username
          name: secret2
          key: username
    - name: PASSWORD
      valueFrom:
        secretKeyRef:
          name: secret2
          key: password
##引用secret的某一个加密文件,采用key形式,进行捕捉,此处捕捉password


[root@master01 secret]# kubectl apply -f test1.yaml --force
pod/pod1 configured

[root@master01 secret]# kubectl exec -it pod1 bash
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
root@pod1:/# echo $USER
xy102
root@pod1:/# echo $PASSWORD
123456

##--  查看容器里面的文件
[root@master01 secret]# kubectl exec -it pod1 -- cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin



5、免密登录harbor仓库流程

1、创建secret文件harbor1,声明仓库地址,用户admin,密码123456
[root@master01 opt]# kubectl create secret docker-registry harbor1 --docker-server=192.168.168.84 --docker-username=admin --docker-password=123456
secret/harbor1 created



[root@master01 secret]# vim test1.yaml 

#如何把secrert挂载到pod当中
#把secret作为环境变量传到pod当中
apiVersion: v1
kind: Pod
metadata:
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值