k8s学习记录,配置管理Secret(十八)
时间:2021-08-21
本文章向大家介绍k8s学习记录,配置管理Secret(十八) ,主要包括k8s学习记录,配置管理Secret(十八) 使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1、Secret和Configmap一样,都是做配置管理的资源,但是Secret在做配置存储时会对存储的信息加密【base64加密】
常用类型
- Opaque: 通用型Secret,默认类型
- kubernetes.io/service-account-token:作用于ServiceAccount,包含一个令牌,用于标识API服务账户;
- kubernetes.io/dockerconfigjson:下载私有仓库镜像使用的Secret,和宿主机的/root/.docker/config.json一致,宿主机登录后即可产生该文件
- kubernetes.io/basic-auth:用于使用基本认证(账号密码)的Secret,可以使用Opaque取代;
- kubernetes.io/ssh-auth:用于存储ssh密钥的Secret;
- kubernetes.io/tls:用于存储HTTPS域名证书文件的Secret,可以被Ingress使用;
- bootstrap.kubernetes.io/token: 一种简单的bearer token,用于创建新集群或将新节点添加到现有集群,在集群安装时可用于自动颁发集群的证书
2、创建Secret【--from-file】
##生成2个txt文件,存储admin用户名及admin密码
[root@k8s-master01 podtest]# echo -n 'admin' > ./username.txt
[root@k8s-master01 podtest]# echo -n '1f2d1e2e67df' > ./password.txt
##根据存储的2个文件,创建Secret
[root@k8s-master01 podtest]# kubectl create secret generic db-user-pass --from-file=username.txt --from-file=password.txt
secret/db-user-pass created
##创建成功后查看secret中保存的信息
[root@k8s-master01 podtest]# kubectl get secret
NAME TYPE DATA AGE
db-user-pass Opaque 2 8s
default-token-rqncz kubernetes.io/service-account-token 3 114d
[root@k8s-master01 podtest]# kubectl get secret db-user-pass -oyaml
apiVersion: v1
data:
password.txt: MWYyZDFlMmU2N2Rm
username.txt: YWRtaW4=
kind: Secret
metadata:
creationTimestamp: "2021-08-20T00:38:35Z"
name: db-user-pass
namespace: default
resourceVersion: "12680399"
uid: d4536eed-2539-4771-81d3-d7f9f9642c8f
type: Opaque
3、创建Secret【--from-literal】
## 在创建命令中指定要存储的key和value
[root@k8s-master01 podtest]# kubectl create secret generic dev-db-secret --from-literal=username=devuser --from-literal=password='JQHU*#(!NAF='
secret/dev-db-secret created
[root@k8s-master01 podtest]# kubectl get secret
NAME TYPE DATA AGE
db-user-pass Opaque 2 15m
default-token-rqncz kubernetes.io/service-account-token 3 114d
dev-db-secret Opaque 2 13s
## 查看创建成功的secret及保存的内容
[root@k8s-master01 podtest]# kubectl get secret dev-db-secret -oyaml
apiVersion: v1
data:
password: SlFIVSojKCFOQUY9
username: ZGV2dXNlcg==
kind: Secret
metadata:
creationTimestamp: "2021-08-20T00:53:25Z"
name: dev-db-secret
namespace: default
resourceVersion: "12682452"
uid: cf1a7249-8849-4ff9-839b-faa6df513785
type: Opaque
注意⚠️:
- 在使用--from-literal创建时,如果写入的内容有特殊字符"\ = ?"等时,需要使用单引号将内容包括住,否则会提示创建失败
4、基于yaml文件来创建secret
## 先将要创建的secret信息进行base64加密
[root@k8s-master01 podtest]# echo -n 'creamk87k8s' | base64
Y3JlYW1rODdrOHM=
[root@k8s-master01 podtest]# echo -n '12jdh12j412' | base64
MTJqZGgxMmo0MTI=
## 将加密后的信息写入到yaml文件中
[root@k8s-master01 podtest]# vim secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: secret-from-file
type: Opaque
data:
username: Y3JlYW1rODdrOHM=
password: MTJqZGgxMmo0MTI=
## 保存后退出,使用命令创建Secret
[root@k8s-master01 podtest]# kubectl create -f secret.yaml
5、使用Secret拉取私有镜像文件
## 登录阿里云官方镜像仓库,输入个人用户名密码登录成功
docker login registry.cn-hangzhou.aliyuncs.com/creamk87/nginx
## 登录成功后,才可以拉取镜像文件至本地
如果deployment等资源拉取私有镜像时,怎么处理呢
## 修改deployment中images地址为私有镜像仓库地址:registry.cn-hangzhou.aliyuncs.com/creamk87/nginx:1.15.1
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: dp-cm
name: dp-cm
spec:
replicas: 1
selector:
matchLabels:
app: dp-cm
template:
metadata:
labels:
app: dp-cm
spec:
containers:
- image: registry.cn-hangzhou.aliyuncs.com/creamk87/nginx:1.15.1
name: nginx
env:
- name: LIVE
valueFrom:
configMapKeyRef:
name: gameenvcm
key: live
在创建deploy过程中,使用的是私有镜像文件,所以报错需要登录才可进行镜像拉取
查看创建secret的帮助文档
从创建的帮助文档中可以看到,创建类型设置为docker-registry
继续查看帮助文档,创建时需要填写的参数
[root@k8s-master01 podtest]# kubectl create secret docker-registry myregistry -h
## 创建secret的命令,docker登录信息请替换为自己的登录信息
kubectl create secret docker-registry myregistry --docker-username=creamk8757 --docker-password=xxxxxxxxx --docker-email=creamk87@outlook.com --docker-server=registry.cn-hangzhou.aliyuncs.com
创建完成secret之后,再对原deployment进行secret的挂载
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: dp-cm
name: dp-cm
spec:
replicas: 1
selector:
matchLabels:
app: dp-cm
template:
metadata:
labels:
app: dp-cm
spec:
imagePullSecrets:
- name: myregistry
# - name: dockerregistry ## 如果有多个Secret可以依次在下方配置
containers:
- image: registry.cn-hangzhou.aliyuncs.com/creamk87/nginx:1.15.1
name: nginx
## 使用新的yaml文件进行更新
kubectl replace -f dp-cm.yaml
新创建的pod拉取镜像成功
6、使用Secret管理HTTPS证书【正式环境一般不这么使用,通常配置在负载均衡入口】
在个人电脑先准备练习用的证书,使用openssl生成证书
openssl req -x509 -nodes -days 365 \
-newkey rsa:2048 tls.key -out tls.crt -subj "/CN=test.com"
注意⚠️
仅个人练习使用,正式环境使用公司购买的证书来进行secret创建
## 使用证书文件的crt和key来创建secret
kubectl create secret tls nginx-test-tls --key=tls.key --cert=tls.crt
创建完成后,直接在ingress中进行配置
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: nginx-https-test
namespace: default
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: https-test.com
http:
paths:
- backend:
serviceName: nginx-svc
servicePort: 80
tls:
- secretName: nginx-test-tls
原文地址:https://www.cnblogs.com/creamk87/p/15164949.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 微信小程序【浅提WXSS样式】
- Kubernetes Liveness and Readiness Probes
- Magicodes.IE 2.3重磅发布——.NET Core开源导入导出库
- pytest文档59-运行未提交git的用例(pytest-picked)
- pytest文档57-单元测试代码覆盖率(pytest-cov)
- pytest文档58-随机执行测试用例(pytest-random-order)
- Kubernetes探针踩坑记
- 大揭秘| 我司项目组Gitlab Flow && DevOps流程
- 离线安装Superset 0.37(截图详细版)
- 如何高速转储、索引和第7层网络流量过滤?
- 爬虫 | JS逆向某验滑动加密(二)
- 闲聊 Kotlin-Native (0) - 我们为什么应该关注一下 Kotlin Native?
- 哈佛大学单细胞课程|笔记汇总 (五)
- 通过源码理解IGMP v1的实现(基于linux1.2.13)
- 微服务下数据一致性的几种实现方式