K8S 实战篇 - SpringBoot&Secret - 5

本文介绍Kubernetes中Secret的使用方法,包括创建不同类型的Secret、在SpringBoot项目中注入数据库账号密码,以及如何通过环境变量或Volume使用Secret。

K8S 实战篇 - SpringBoot&Secret

K8S 实战篇 - SpringBoot&ConfigMap - 4在这篇文章中主要讲解了SpringBoot项目如何通过ConfigMap加载配置的。这一章主要讲解SpringBoot项目中关于敏感信息的配置,如:数据库密码等

1、Secret是什么?

Secret 是一种包含少量敏感信息例如密码、令牌或密钥的对象;Secret 类似于 ConfigMap 但专门用于保存机密数据;每个 Secret 的尺寸最多为 1MiB。

1.1、Secret提供三种可用命令来进行加密配置:docker-registry、generic、tls

1.1.1、docker-registry 使用示例:
kubectl create secret docker-registry docker-secret --docker-server=192.168.2.153  --docker-username=admin  --docker-password=123456 --docker-email=xx@xx.com -n test

以上是操作示例,主要用于docker注册信息的配置。

1.1.2、generic使用示例:
kubectl create secret generic docker-demo-mysqluser --from-file=path/config
kubectl create secret generic docker-demo-mysqluser --from-file=application.yaml
kubectl create secret generic docker-demo-mysqluser --from-literal=username=root --from-literal=pasword=123456

以上是操作示例。主要用于通用加密信息的配置,通用型配置可以使用,本地文件、目录及key-value形式创建Secret。

1.1.3、tls使用示例:
kubectl create secret tls tls-secret --cert=path/to/tls.cert --key=path/to/tls.key

以上是操作示例,主要用于tls加密信息的配置。

1.2、Secret的类型

secret 有三种类型,如下:

  • Opaque:它是一个比较灵活通用的类型,允许用户自定义里面的 任意数据。使用base64 编码格式,用来存储密码、密钥等;但数据也可以通过base64 –decode解码得到原始数据,所有加密性很弱
  • kubernetes.io/dockerconfigjson:它是用来存储 docker 仓库的一些认证信息,例如 docker login 存储的一些信息。
  • kubernetes.io/service-account-token:用于被serviceaccount引用,serviceaccout 创建时Kubernetes会默认创建对应的secret。Pod如果使用了serviceaccount,对应的secret会自动挂载到Pod目录 /run/secrets/kubernetes.io/ serviceaccount中。

1.3、使用场景

  • 镜像仓库是私有的,每次拉取是需要认证的。
    创建方式一:
kubectl create secret docker-registry <name> --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL

创建方式二:

kubectl create secret
<think>我们正在处理一个Git操作问题:用户想在指定目录切换到特定Git分支,并进入子目录执行操作。步骤分解:1.进入目录`k8s-ha-install`2.切换到分支`manual-installation-v1.29.x`3.进入子目录`calico`4.在calico子目录中执行操作(例如查看文件、修改等)具体命令如下:首先,进入目录:```bashcdk8s-ha-install```然后,切换到指定分支(如果分支存在):```bashgitcheckoutmanual-installation-v1.29.x```注意:如果该分支在远程存在而本地不存在,可以使用:```bashgitcheckout-bmanual-installation-v1.29.xorigin/manual-installation-v1.29.x```但通常,如果分支已经存在在本地,直接checkout即可。如果不存在,需要先获取远程分支。然后进入子目录:```bashcdcalico```之后就可以在calico目录下执行需要的操作了。如果用户还没有克隆仓库,那么需要先克隆。但问题中已经提到目录,所以假设已经克隆。因此,完整的命令序列可以是:```bashcdk8s-ha-installgitcheckoutmanual-installation-v1.29.xcdcalico```如果切换分支时遇到问题(比如分支不存在),可能需要先更新远程分支列表:```bashgitfetch```然后再切换。所以,更健壮的做法可能是:```bashcdk8s-ha-installgitfetchgitcheckoutmanual-installation-v1.29.xcdcalico```如果用户需要知道当前是否切换成功,可以在切换分支后使用`gitbranch`查看当前分支。另外,如果用户已经在这个目录中,并且可能有一些修改,切换分支前需要确保工作区是干净的,否则可能需要暂存或提交更改。因此,我们还可以给出一个包含检查的版本:步骤:1.进入目录2.检查工作区是否干净(如果有修改,提示用户处理)3.获取远程更新4.切换到目标分支5.进入子目录但是,用户并没有提到工作区状态,所以我们可以先提供基本命令,然后提醒用户注意工作区状态。最终回答:要实现在`k8s-ha-install`目录中切换到`manual-installation-v1.29.x`分支并进入`calico`子目录,请按照以下步骤操作:1.打开终端,进入`k8s-ha-install`目录:```bashcdk8s-ha-install```2.确保你的工作目录是干净的(没有未提交的修改),如果有未提交的修改,你可以使用`gitstash`暂存更改,或者提交更改。3.获取远程分支的最新信息:```bashgitfetch```4.切换到分支`manual-installation-v1.29.x`:```bashgitcheckoutmanual-installation-v1.29.x```如果该分支在本地不存在,但存在于远程,你可以使用:```bashgitcheckout-bmanual-installation-v1.29.xorigin/manual-installation-v1.29.x```5.进入`calico`子目录:```bashcdcalico```现在,你可以在`calico`子目录中执行需要的操作了。注意:如果分支不存在,请确认远程仓库中确实存在该分支。可以通过`gitbranch-r`查看远程分支列表。如果在切换分支时遇到问题,请检查错误信息并根据提示解决。相关问题:1.如何检查Git工作目录的状态?2.如何处理切换分支时的冲突?3.如何查看远程仓库的分支列表?</think>### 在指定目录切换 Git 分支并进入子目录操作指南 要实现在 `k8s-ha-install` 目录中切换到 `manual-installation-v1.29.x` 分支并进入 `calico` 子目录操作,请按以下步骤执行: #### 步骤详解 1. **进入目标目录** 打开终端,导航到 `k8s-ha-install` 目录: ```bash cd /path/to/k8s-ha-install # 替换为实际路径 ``` 2. **切换到指定分支** 确保分支存在并切换: ```bash git checkout manual-installation-v1.29.x ``` - 若分支不存在,先获取远程分支: ```bash git fetch origin manual-installation-v1.29.x git checkout -b manual-installation-v1.29.x origin/manual-installation-v1.29.x ``` 3. **进入子目录执行操作** 切换到 `calico` 子目录: ```bash cd calico ``` 现在可执行所需操作(如查看文件、修改配置等)。 #### 完整命令示例 ```bash # 进入项目目录 cd ~/projects/k8s-ha-install # 切换分支(假设分支已存在) git checkout manual-installation-v1.29.x # 进入子目录操作 cd calico ls -l # 示例:查看calico目录内容 ``` #### 注意事项 1. **分支存在性检查** 可通过 `git branch -a` 查看所有分支,确保目标分支在列表中[^1]。 2. **工作区清洁** 切换分支前建议提交或暂存修改,避免冲突: ```bash git status # 检查未提交修改 git stash # 暂存修改(可选) ``` 3. **路径验证** 若 `calico` 子目录不存在,使用 `git ls-tree -d manual-installation-v1.29.x` 确认目录结构。 ### 相关问题 1. 如何解决 `git checkout` 时出现的 "error: pathspec 'manual-installation-v1.29.x' did not match" 错误? 2. 在切换分支后如何确认当前所在的 Git 分支状态? 3. 如果 `calico` 子目录在不同分支中结构不同,如何安全切换? 4. 如何将子目录中的修改推送到远程分支? [^1]: 当分支名包含特殊字符时,建议使用引号包裹:`git checkout "branch/name"`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值