返回顶部
首页 > 资讯 > 精选 >如何进行Kubernetes中Secret和私有仓库认证
  • 184
分享到

如何进行Kubernetes中Secret和私有仓库认证

2023-06-19 10:06:00 184人浏览 八月长安
摘要

这篇文章给大家介绍如何进行kubernetes中Secret和私有仓库认证,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。对一个公司来说安全也是最为重要的因为可能一旦出现安全问题可能这个公司就完了,所以对密码管理是一个长

这篇文章给大家介绍如何进行kubernetes中Secret和私有仓库认证,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

对一个公司来说安全也是最为重要的因为可能一旦出现安全问题可能这个公司就完了,所以对密码管理是一个长久不变的话题,Kubernetes对密码管理提供了Secret组件进行管理,最终映射成环境变量,文件等方式提供使用,统一进行了管理更换方便,并且开发人员并不需要关心密码降低了密码的受众范围从而保障了安全.

Kubernetes官方文档:https://kubernetes.io/docs/reference/

Kubernetes官方git地址:Https://GitHub.com/kubernetes/kubernetes

PS:本系列中使用 KubernetesV1.8 RancherV1.6.14

1. 初始化Secret

首先我们需要初始化一个Secret,使用Yaml文件创建时需要使用base64之后的内容作为Value

$ echo -n "admin" | base64YWRtaW4=$ echo -n "1f2d1e2e67df" | base64MWYyZDFlMmU2N2Rm

老规矩通过yaml的方式创建我们的Secret配置文件可以看到已经生效了

> vim secret.yamlapiVersion: v1kind: Secretmetadata:  name: mysecrettype: Opaquedata:  username: YWRtaW4=  passWord: MWYyZDFlMmU2N2Rm> kubectl create -f ./secret.yamlsecret "mysecret" created> kubectl get secretNAME                  TYPE                                  DATA      AGEdefault-token-lnftf   kubernetes.io/service-account-token   3         1dmysecret              Opaque                                2         9s

2. 环境变量

我们在使用Secret第一个场景就是作为容器的环境变量,大部分容器都提供使用环境变量配置密码的功能,你的程序只需要读取到这个环境变量使用这个环境变量的内容去链接到对应的服务就可以正常使用了,如下我们初始化一个Pod服务,使用之前预设好的信息作为用户名密码配置进去

> vim secret-env.yamlapiVersion: v1kind: Podmetadata:  name: secret-env-podspec:  containers:  - name: mycontainer    image: redis    env:      - name: SECRET_USERNAME        valueFrom:          secreTKEyRef:            name: mysecret            key: username      - name: SECRET_PASSWORD        valueFrom:          secretKeyRef:            name: mysecret            key: password  restartPolicy: Never> kubectl create -f secret-env.yaml

3.文件(TLS证书)

除了配置成环境变量我们在很多地方也会使用到文件的方式来存放密钥信息,最常用的就是HTTPS这样的TLS证书,使用证书程序(比如Nginx没法使用环境变量来配置证书)需要一个固定的物理地址去加载这个证书,我们吧之前配置用户名和密码作为文件的方式挂在到某个目录下

> vim secret-file.yamlapiVersion: v1kind: Podmetadata:  name: secret-file-podspec:  containers:  - name: mypod    image: Redis    volumeMounts:    - name: foo      mountPath: "/etc/foo"      readOnly: true  volumes:  - name: foo    secret:      secretName: mysecret> kubectl create -f secret-file.yaml

如果有需要对同的配置分开挂载到不同的地方可以使用如下配置

apiVersion: v1kind: Podmetadata:  name: secret-file-podspec:  containers:  - name: mypod    image: redis    volumeMounts:    - name: foo      mountPath: "/etc/foo"      readOnly: true  volumes:  - name: foo    secret:      secretName: mysecret      items:      - key: username        path: my-group/my-username
  • username存储在/etc/foo/my-group/my-username文件而不是/etc/foo/username。

  • password 不会挂载到磁盘

因为映射成了文件那么对权限也是可以控制的

  volumes:  - name: foo    secret:      secretName: mysecret      defaultMode: 256

然后,秘密将被挂载,/etc/foo并且由秘密卷挂载创建的所有文件都将具有权限0400。

PS: JSON规范不支持八进制表示法,因此对于0400权限使用值256。如果您使用yaml代替pod的json,则可以使用八进制表示法以更自然的方式指定权限。
您也可以使用映射(如上例所示),并为不同的文件指定不同的权限,如下所示:

  volumes:  - name: foo    secret:      secretName: mysecret      items:      - key: username        path: my-group/my-username        mode: 511

在这种情况下,生成的文件/etc/foo/my-group/my-username将具有权限值0777。由于JSON限制,您必须以十进制表示法指定模式。

4.Docker私有仓库认证

使用过k8s的小伙伴肯定会遇到一个问题,我们在使用自有的Docker仓库的时候都需要先登录用户名和密码,但是如果使用K8S怎么配置密码呢?在secret中有一个类型是docker-reGIStry我们可以通过命令行的方式创建在获取Docker镜像时使用的用户名和密码

kubectl create secret docker-registry  regsecret --docker-server=registry-vpc.cn-hangzhou.aliyuncs.com --docker-username=admin --docker-password=123456 --docker-email=xxxx@qq.com

如果使用编排文件是如下格式

kind: SecretapiVersion: v1metadata:  name: regsecrettype: kubernetes.io/dockercfgdata:  ".dockercfg": eyJyZWdpc3RyeS12cGMuY24taGFuZ3pob3UuYWxpeXVuY3MuY29tIjp7InVzZXJuYW1lIjoiYWRtaW4iLCJwYXNzd29yZCI6IjEyMzQ1NiIsImVtYWlsIjoieHh5eEBxcS5jb20iLCJhdXRoIjoiWVdSdGFXNDZNVEl6TkRVMiJ9fQ==# 反base64的结果 : {"registry-vpc.cn-hangzhou.aliyuncs.com":{"username":"admin","password":"123456","email":"xxxx@qq.com","auth":"YWRtaW46MTIzNDU2"}}

然后我们就可以在获取指定镜像的时候为他指定一个获取镜像的Docker凭证

apiVersion: v1kind: Podmetadata:  name: secret-file-podspec:  containers:  - name: mypod    image: redis  imagePullSecrets:                         # 获取镜像需要的用户名密码   - name: regsecret

关于如何进行Kubernetes中Secret和私有仓库认证就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: 如何进行Kubernetes中Secret和私有仓库认证

本文链接: https://lsjlt.com/news/295324.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何进行Kubernetes中Secret和私有仓库认证
    这篇文章给大家介绍如何进行Kubernetes中Secret和私有仓库认证,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。对一个公司来说安全也是最为重要的因为可能一旦出现安全问题可能这个公司就完了,所以对密码管理是一个长...
    99+
    2023-06-19
  • 如何进行docker registry 私有仓库的搭建
    这期内容当中小编将会给大家带来有关如何进行docker registry 私有仓库的搭建,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。摘要随着docker使用的镜像越来越多,就需要有一...
    99+
    2023-06-26
  • Docker中如何使用私有仓库
    在Docker中使用私有仓库,可以通过以下步骤实现: 部署私有仓库:首先需要在服务器上部署私有仓库,可以使用Docker官方提供...
    99+
    2024-04-02
  • Linux中如何搭建Docker私有仓库
    本篇内容介绍了“Linux中如何搭建Docker私有仓库”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!使用Docker私有仓库可以帮助我们节...
    99+
    2023-06-27
  • 如何使用 Docker 容器中的私有存储库进行身份验证
    php小编草莓为您介绍如何使用 Docker 容器中的私有存储库进行身份验证。Docker 是一种流行的容器化平台,能够帮助开发人员在不同的环境中快速部署和运行应用程序。然而,对于一些...
    99+
    2024-02-09
    敏感数据
  • 如何在Teradata中进行有效的数据仓库设计
    在Teradata中进行有效的数据仓库设计需要考虑以下几个关键步骤: 确定业务需求:首先要明确数据仓库的目标和所需的数据分析和报...
    99+
    2024-04-09
    Teradata
  • 如何在MariaDB中进行用户认证管理
    在MariaDB中,用户认证管理主要涉及以下几个方面: 创建用户:使用CREATE USER语句创建新用户。例如,创建一个用户名为...
    99+
    2024-04-02
  • PHP中如何进行数据管理和数据仓库开发?
    作为一种开源的编程语言,PHP在网站开发和应用开发中得到了广泛的应用。在数据管理和数据仓库开发方面,PHP也具有许多优点和功能。本文将会介绍PHP中的数据管理和数据仓库开发的一些关键技术和方法,以帮助您更好地应用PHP进行数据处理。一、数据...
    99+
    2023-05-21
    数据管理 PHP 数据仓库开发
  • PHP中如何进行大数据管理和数据仓库设计?
    随着互联网的普及和Web应用的发展,数据管理和数据仓库设计成为了Web开发的重要环节之一。PHP是一种广泛应用于Web开发的编程语言,那么在PHP中如何进行大数据管理和数据仓库设计呢?本文将为您一一解答。一、大数据管理数据库的选择及优化在P...
    99+
    2023-05-21
    数据分析 PHP大数据管理 数据仓库设计
  • 如何在Spring Boot中利用JWT进行接口认证
    本篇文章为大家展示了如何在Spring Boot中利用JWT进行接口认证,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。jwt(json web token)用户发送按照约定,向服务端发送 Heade...
    99+
    2023-05-31
    springboot jwt wt
  • Kubernetes高级调度中如何进行Taint和Toleration、Node Affinity分析
    Kubernetes高级调度中如何进行Taint和Toleration、Node Affinity分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。(避免Pod和Node同时出...
    99+
    2023-06-04
  • PHP中如何进行网络安全和数据隐私保护?
    随着互联网的不断发展,越来越多的网站和应用程序都是基于PHP编写的。但同时,网络安全问题也随之而来。在PHP开发中,如何提高网络安全和保护数据隐私是非常重要的。本文将会介绍PHP中的一些网络安全和数据隐私保护的最佳实践。使用HTTPS协议H...
    99+
    2023-05-21
    PHP网络安全 PHP数据隐私保护 PHP加密技术
  • PHP中如何进行数据安全和信息隐私保护?
    随着互联网的快速发展,数据安全和信息隐私保护变得越来越重要。尤其是在Web应用程序中,用户的敏感数据和隐私信息需要得到有效的保护。PHP是一种流行的服务器端编程语言,它可以被用来构建强大的Web应用程序。但是,PHP开发人员需要采取一些措施...
    99+
    2023-05-21
    数据加密 PHP安全性 隐私保护
  • SQLServer中如何进行数据库复制和同步
    SQL Server中可以通过以下步骤进行数据库复制和同步: 在源数据库中启用发布器(Publisher):在源数据库中创建一个...
    99+
    2024-04-02
  • 如何在SQLServer中进行用户身份验证和授权管理
    在SQL Server中进行用户身份验证和授权管理是非常重要的,以确保数据库的安全性和数据的保护。以下是一些常见的方法来实现用户身份...
    99+
    2024-04-09
    SQLServer
  • 如何在Oracle中进行数据库优化和调整
    在Oracle中进行数据库优化和调整可以通过以下方法: 使用SQL语句调整:优化查询语句,尽量避免全表扫描和使用索引等方式来提高...
    99+
    2024-04-09
    Oracle
  • 如何在Oracle中进行数据库重建和恢复
    在Oracle数据库中进行数据库重建和恢复通常包括以下步骤: 备份数据库:在进行重建和恢复之前,务必要先备份数据库,以防止数据丢...
    99+
    2024-04-09
    Oracle
  • 如何在Python中进行数据可靠性验证和模型评估
    如何在Python中进行数据可靠性验证和模型评估数据可靠性验证和模型评估是在使用机器学习和数据科学模型时非常重要的一步。本文将介绍如何使用Python进行数据可靠性验证和模型评估,并提供具体的代码示例。数据可靠性验证(Data Reliab...
    99+
    2023-10-22
    Python 数据验证 模型评估
  • 如何在Oracle数据库中进行数据导入和导出
    在Oracle数据库中,可以使用几种方法来进行数据导入和导出,包括使用SQL*Loader实用程序、使用exp和imp工具、使用Or...
    99+
    2024-03-02
    Oracle
  • 如何在MySQL中进行数据库性能监控和诊断
    在MySQL中进行数据库性能监控和诊断可以通过以下几种方式: 使用MySQL自带的性能监控工具:MySQL自带了一些性能监控工具...
    99+
    2024-03-06
    MySQL
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作