当前位置: 首页 > news >正文

邢台wap网站建设费用seo静态页源码

邢台wap网站建设费用,seo静态页源码,自助建站哪个好,中国最火的网站云原生专栏大纲 文章目录 部署项目介绍项目结构介绍GitLab CI/CDGitLab CI/CD主要特点和功能 部署测试argocd的cd过程CICD工作流准备工作github中工作流文件创建gitlab中工作流文件创建【实操待补充】GitLab CI示例 数据加密之seale sealedBitnami Sealed Secrets介绍Bitnami …云原生专栏大纲 文章目录 部署项目介绍项目结构介绍GitLab CI/CDGitLab CI/CD主要特点和功能 部署测试argocd的cd过程CICD工作流准备工作github中工作流文件创建gitlab中工作流文件创建【实操待补充】GitLab CI示例 数据加密之seale sealedBitnami Sealed Secrets介绍Bitnami Sealed Secrets工作流程安装sealed-secrets和kubeseal安装sealed-secrets-controller安装kubeseal通过kubeseal将sealed-secrets公钥拿出来通过kubeseal加密secrets替换**kustomize下**secret为加密secret创建argocd应用测试备份公钥私钥容灾处理 部署项目介绍 项目结构介绍 回顾《6.云原生之DevOps和CICD》中使用的项目先看项目结构在Jenkins 实现CICD过程中部署文件deploy.yaml是耦合在业务项目中的。Jenkins CI是通过webhook实现CD通过流水线文件Jenkinsfile来实现。实际有时候代码修改后我们并不想发布而是通过手动触发实现kubesphere中使用Jenkins可创建流水线项目来实现实际原理就是在Jenkins中创建只是可视化展示了。 回顾《19.云原生CICD之ArgoCD入门》部署项目我们使用到了 《argocd测试项目》中kustomize-guestbook目录下资源清单这些清单其实是部署的k8s资源清单 改造《6.云原生之DevOps和CICD》中项目将kustomize资源清单加上目录结构如下 上述项目结构其实是存在问题的业务源码和部署清单还在耦合一个项目中职能不够清晰如何处理 需剥离分为两个仓库 剥离带来新的问题就是业务源码修改发布新版本开发人员手动打包镜像通知运维人员更新配置清单中版本最后发布。如何处理上述问题其实是解决开发人员和运维人员协作问题及CI问题 CI如何处理通过gitlab的ci来实现 注意若想测试自行将项目拆分将kustomize拆分为单独的代码仓库代码仓库如下 https://github.com/zhouwei1996/argocd-in-action https://github.com/zhouwei1996/flask-demo https://github.com/zhouwei1996/flask-demo-kustomize GitLab CI/CD GitLab CI/CD持续集成/持续交付是 GitLab 提供的一套集成开发工具用于自动化构建、测试和部署应用程序。它提供了一个强大的持续集成和持续交付平台可以帮助开发团队更高效地管理和交付软件。 持续集成Continuous IntegrationCI持续集成是指将开发人员的代码频繁地集成到共享的主干代码库中。在持续集成中开发人员会将代码提交到版本控制系统如 GitLab然后自动触发构建、测试和代码质量检查等任务。这样可以快速发现和解决代码集成问题确保团队的代码始终保持可工作状态。GitLab CI 提供了强大的持续集成功能可以根据您定义的规则和流程自动运行构建和测试作业。持续交付/持续部署Continuous Delivery/Continuous DeploymentCD持续交付和持续部署是在持续集成的基础上进一步推进的概念。它们旨在自动化和简化软件交付过程以便更频繁地将经过测试和验证的代码部署到生产环境中。持续交付是指在经过测试的代码通过各种环境如开发、测试、预生产后准备好进行部署的过程。持续部署则更进一步指的是将经过测试的代码自动部署到生产环境实现快速、可靠的软件交付。GitLab CI/CD 提供了强大的持续交付和持续部署功能您可以配置自动化的部署流程并将代码快速部署到目标环境中。 GitLab CI/CD主要特点和功能 自动化构建和测试GitLab CI/CD 允许您在代码提交到 GitLab 仓库时自动运行构建和测试作业。您可以定义多个作业并在每个作业中编写自定义的构建和测试脚本。并行执行GitLab CI/CD 支持并行执行作业从而加快构建和测试的速度。您可以根据需要在不同的作业中并行执行任务提高整体的开发效率。多阶段流水线GitLab CI/CD 使用阶段stages来组织作业的执行顺序。您可以定义多个阶段并在每个阶段中运行一系列的作业。这使得您可以按照特定的流程对代码进行构建、测试和部署。集成容器技术GitLab CI/CD 集成了容器技术如 Docker使得构建和测试环境的配置更加灵活和可重复。您可以使用 Docker 容器来创建一致的开发和测试环境确保代码在不同的环境中具有一致的行为。持续交付和部署GitLab CI/CD 支持持续交付和部署。您可以配置自动化的部署流程将经过测试的代码自动部署到生产环境或其他目标环境中从而实现快速、可靠的软件交付。可视化界面和报告GitLab CI/CD 提供了直观的用户界面用于监视和管理构建和部署流水线。您可以查看作业的执行状态、日志输出以及生成的报告以便更好地了解整个 CI/CD 流程的状态和结果。可扩展性和定制性GitLab CI/CD 是高度可扩展和可定制的。您可以根据项目的需求配置各种不同的构建、测试和部署策略。它还支持与其他工具和服务的集成如监控系统、通知系统等。 GitLab CI/CD 的灵活性和功能丰富性使得开发团队能够更好地管理和交付软件提高开发效率和质量。它是一个强大的工具适用于各种规模和类型的项目。 部署测试argocd的cd过程 添加代码仓库 创建应用 查看不部署流水线 查看部署情况 CICD工作流 准备工作 创建gitlab项目token凭证创建CI工作流文件 github中工作流文件创建 .github/workflows/main.yml name: CI # 工作流程的名称为 CIon: # 触发条件push: # 当推送事件发生时branches: [ master ] # 且推送的分支是主分支masterpull_request: # 当拉取请求事件发生时branches: [ master ] # 且拉取请求的目标分支是主分支masterworkflow_dispatch: # 可以手动触发工作流程inputs: # 输入参数image: # Docker 镜像名称required: true # 必需的输入参数description: docker image name # 描述为 docker image namesha-tag: # Docker 镜像标签required: true # 必需的输入参数description: docker image tag # 描述为 docker image tagjobs: # 工作build: # 名为 build 的作业runs-on: ubuntu-latest # 在最新版的 Ubuntu 环境上运行steps: # 步骤- uses: actions/checkoutv2 # 使用 actions/checkoutv2 动作if: ${{ github.event.inputs.image }} # 如果存在 image 输入参数- name: kustomize edit # 名为 kustomize edit 的步骤if: ${{ github.event.inputs.image }} # 如果存在 image 输入参数run: | # 执行以下命令curl -s https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh | bash # 下载并执行 kustomize 安装脚本kustomize edit set image ${{ github.event.inputs.image }}:${{ github.event.inputs.sha-tag }} # 使用 kustomize 编辑镜像名称rm -f kustomize # 删除 kustomize 文件- name: Git Commit/Push Changes # 名为 Git Commit/Push Changes 的步骤uses: actions-x/commitv2 # 使用 actions-x/commitv2 动作if: ${{ github.event.inputs.image }} # 如果存在 image 输入参数with: # 使用以下参数message: kustomize set image to ${{ github.event.inputs.image }}:${{ github.event.inputs.sha-tag }} # 提交消息为 kustomize set image to image:sha-tag gitlab中工作流文件创建【实操待补充】 该部分关联《20.云原生之GitLab CICD实战》 小编在实操验证中验证完毕补充上。 GitLab CI示例 当使用 GitLab CI/CD 将 Java 工程发布到 Kubernetes (K8s) 集群时你可以使用以下示例的 .gitlab-ci.yml 文件作为详细定义 image: docker:20.10.9stages:- build- test- package- build_docker- push_docker- deployvariables:DOCKER_HOST: tcp://docker:2375 # 设置 Docker 守护进程的地址DOCKER_TLS_CERTDIR: DOCKER_DRIVER: overlay2before_script:- apk add --no-cache docker # 安装 Docker CLIbuild:stage: buildscript:- mvn clean compiletest:stage: testscript:- mvn testpackage:stage: packagescript:- mvn packageartifacts:paths:- target/*.jarbuild_docker:stage: build_dockerscript:- docker build -t myregistry/myapp:$CI_COMMIT_SHORT_SHA . # 构建 Docker 镜像- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY # 登录到容器注册表push_docker:stage: push_dockerscript:- docker push myregistry/myapp:$CI_COMMIT_SHORT_SHA # 推送 Docker 镜像到容器注册表deploy:stage: deployscript:- echo Deploying Java application to Kubernetes- kubectl apply -f kubernetes/deployment.yaml # 应用 Kubernetes 部署配置- kubectl rollout status deployment/myapp -n mynamespace # 等待部署完成- kubectl get pods -n mynamespace # 获取部署的 Pod 信息after_script:- echo Cleanup # 在作业完成后进行清理操作- mvn clean这个示例中我们添加了 build_docker 和 push_docker 两个阶段来构建和推送 Docker 镜像。以下是文件的详细定义 image 指定了构建时使用的 Docker 镜像。这里我们使用了 docker:20.10.9 镜像。stages 定义了流水线的阶段。在这个示例中我们添加了 build_docker 和 push_docker 两个阶段。variables 部分定义了一些变量。DOCKER_HOST 用于指定 Docker 守护进程的地址这里假设它是 docker:2375。DOCKER_TLS_CERTDIR 和 DOCKER_DRIVER 则是 Docker 相关的配置。before_script 部分定义了在运行作业脚本之前要执行的命令。在这个示例中我们安装了 Docker CLI。build 阶段、test 阶段和 package 阶段的作业与之前的示例相同分别用于构建、测试和打包 Java 工程。build_docker 阶段的作业中我们使用 docker build 命令构建 Docker 镜像并使用 $CI_COMMIT_SHORT_SHA 作为镜像的标签以确保每次构建都有唯一的标识。你可以根据需要修改镜像名称和标签。push_docker 阶段的作业中我们使用 docker push 命令将构建的 Docker 镜像推送到容器注册表。这里假设你已经在 GitLab CI/CD 配置中设置了容器注册表的用户名和密码。其余阶段的作业与之前的示例相同包括部署到 Kubernetes 集群和清理操作。 上述deploy过程deployment.yaml内容中使用变量CI_COMMIT_SHORT_SHA要在 deployment.yaml 文件中使用变量 CI_COMMIT_SHORT_SHA你可以在文件中使用模板语法并通过 GitLab CI/CD 的变量传递该值。下面是一个示例 deployment.yaml 文件的部分内容展示了如何使用 CI_COMMIT_SHORT_SHA 变量 apiVersion: apps/v1 kind: Deployment metadata:name: myapplabels:app: myapp spec:replicas: 3selector:matchLabels:app: myapptemplate:metadata:labels:app: myappspec:containers:- name: myappimage: myregistry/myapp:$CI_COMMIT_SHORT_SHA # 使用变量作为镜像标签ports:- containerPort: 8080在上面的示例中image 字段使用了 $CI_COMMIT_SHORT_SHA 变量作为镜像标签。这将确保每次构建都会使用唯一的标识来部署新的镜像。在 GitLab CI/CD 中你可以通过在 .gitlab-ci.yml 文件中定义变量来传递 CI_COMMIT_SHORT_SHA 值。例如 variables:CI_COMMIT_SHORT_SHA: $CI_COMMIT_SHORT_SHA通过这样的定义GitLab CI/CD 将会将当前的 CI_COMMIT_SHORT_SHA 值传递给部署阶段并在 deployment.yaml 文件中替换相应的变量。 数据加密之seale sealed kustomize项目中secret.yaml中DB配置只是简单加密存在安全问题两种解决方案 secret.yaml不要暴露到项目中运维人员提前在kubesphere中创建 secret不跟项目绑定在k8s上不好管理使用kubesphere中的保密字典能解决这个问题 暴露出secret.yaml需加密 参考secret加密管理方案选择使用Bitnami Sealed Secrets Bitnami Sealed Secrets介绍 Bitnami Sealed Secrets 是一个用于加密和管理敏感信息的工具它是基于 Kubernetes 的 Sealed Secrets 控制器。Sealed Secrets 可以安全地存储和传输敏感的密钥、密码、API 密钥等信息确保这些信息在存储和传输过程中不会被泄露。下面是 Bitnami Sealed Secrets 的一些主要特点和工作原理 加密敏感信息Bitnami Sealed Secrets 使用公钥/私钥加密方案将敏感信息加密为 Sealed Secrets 对象。只有持有私钥的人才能解密和读取这些信息。GitOps 集成Sealed Secrets 可以与 GitOps 工作流程集成使敏感信息的管理更加自动化和可追踪。您可以将加密的 Sealed Secrets 对象存储在 Git 存储库中将其作为代码的一部分进行版本控制和协作。密钥管理Bitnami Sealed Secrets 提供了密钥管理工具用于生成和管理公钥/私钥对。这些密钥对用于加密和解密 Sealed Secrets 对象。控制器和解封工具Bitnami Sealed Secrets 包含一个 Kubernetes 控制器用于将 Sealed Secrets 对象解密为原始的 Secret 对象。解封工具可用于在非 Kubernetes 环境中解密 Sealed Secrets 对象。 使用 Bitnami Sealed Secrets您可以更安全地管理和传输敏感信息同时保持操作的自动化和可追踪性。它适用于需要在 Kubernetes 环境中存储和使用敏感信息的场景如密码、API 密钥、数据库凭据等。通过加密和密钥管理Bitnami Sealed Secrets 提供了一种可靠的方式来保护敏感信息并确保只有授权的人员能够访问和使用这些信息。 Bitnami Sealed Secrets工作流程 Bitnami Sealed Secrets 的工作流程如下 生成密钥对首先您需要生成公钥/私钥对用于加密和解密敏感信息。这可以通过 Bitnami Sealed Secrets 提供的密钥管理工具完成。生成的公钥将用于加密敏感信息并将其存储为 Sealed Secrets 对象。加密敏感信息使用生成的公钥您可以将敏感信息加密为 Sealed Secrets 对象。这可以通过将敏感信息转换为 Kubernetes Secret 对象然后使用 Sealed Secrets 控制器将其加密为 Sealed Secrets 对象来实现。存储 Sealed Secrets 对象加密后的 Sealed Secrets 对象可以存储在 Git 存储库中作为代码的一部分进行版本控制和协作。在存储库中Sealed Secrets 对象将被视为不可读的密文。部署 Sealed Secrets 控制器在 Kubernetes 集群中部署 Sealed Secrets 控制器。该控制器将负责监视并解密存储在 Sealed Secrets 对象中的敏感信息并将其转换为原始的 Kubernetes Secret 对象。解密敏感信息一旦 Sealed Secrets 控制器在集群中运行它将自动解密 Sealed Secrets 对象并将其转换为原始的 Secret 对象。这样其他应用程序和服务就可以使用这些解密后的敏感信息如密码、API 密钥等。 通过这个工作流程Bitnami Sealed Secrets 提供了一种安全的方式来管理和使用敏感信息。敏感信息在存储和传输过程中都是加密的只有在运行 Sealed Secrets 控制器的 Kubernetes 集群中才能被解密和使用。这样可以保护敏感信息免受未经授权的访问和泄露。同时使用 GitOps 工作流程可以将加密的 Sealed Secrets 对象与代码一起进行版本控制和协作提高开发团队的效率和安全性。 安装sealed-secrets和kubeseal 选择版本https://github.com/bitnami-labs/sealed-secrets/releases 下载如下文件 安装sealed-secrets-controller 介绍两种部署方式方式1选择版本https://github.com/bitnami-labs/sealed-secrets/releases kubectl apply -f https://github.com/bitnami-labs/sealed-secrets/releases/download/v0.25.0/controller.yaml# 修改文件中镜像地址 # 将image: docker.io/bitnami/sealed-secrets-controller:0.25.0 # 修改为ghcr.io/bitnami-labs/sealed-secrets-controller:0.25.0 # 参考https://github.com/bitnami-labs/sealed-secrets/pkgs/container/sealed-secrets-controller安装后再kubesphere系统组件中会出现如下信息并生成保密字典信息方式2在kubesphere中通过应用仓库部署 安装kubeseal # -0 kubeseal将下载文件保存问当前目录下kubeseal wget https://github.com/bitnami-labs/sealed-secrets/releases/download/v0.25.0/kubeseal-linux-amd64 -0 kubesealmv kubeseal /usr/local/bin/kubeseal # 验证 kubeseal --versionKubeseal 是一个用于创建和管理 Sealed Secrets 的工具它是 Bitnami Sealed Secrets 的一部分。Kubeseal 通过与 Kubernetes API 交互可以生成 Sealed Secrets 对象并将其加密为密文以便安全地存储和传输敏感信息。下面是 Kubeseal 的一些主要特点和用法 生成 Sealed Secrets 对象使用 Kubeseal您可以从现有的 Kubernetes Secret 对象生成 Sealed Secrets 对象。这可以通过运行命令行工具来完成工具会将 Secret 对象的内容加密并生成相应的 Sealed Secrets 对象。加密敏感信息Kubeseal 使用 Sealed Secrets 控制器的公钥来加密敏感信息。在生成 Sealed Secrets 对象时Kubeseal 会自动获取集群中的 Sealed Secrets 控制器的公钥并使用该公钥对敏感信息进行加密。密钥管理Kubeseal 可以与密钥管理工具集成用于生成和管理 Sealed Secrets 控制器所需的公钥/私钥对。这些密钥对用于加密和解密 Sealed Secrets 对象。GitOps 集成Kubeseal 可以与 GitOps 工作流程集成使生成的 Sealed Secrets 对象可以与代码一起进行版本控制和协作。您可以将生成的 Sealed Secrets 对象存储在 Git 存储库中确保敏感信息的安全性和可追踪性。 使用 Kubeseal您可以更方便地创建和管理 Sealed Secrets 对象将敏感信息加密为密文并确保只有在运行 Sealed Secrets 控制器的 Kubernetes 集群中才能解密和使用这些信息。它简化了 Sealed Secrets 的生成过程并提供了与密钥管理和 GitOps 的集成使敏感信息的管理更加自动化和可靠。 通过kubeseal将sealed-secrets公钥拿出来 可以通过kubesphere查看保密字典或者通过k8s命令查看拷贝出来手动操作可能会出错推荐使用kubeseal将公钥拿出来 # 备份公钥 kubeseal --fetch-cert public-cert.pem将公钥拷贝到argocd-in-action测试项目argocd-in-action下 通过kubeseal加密secrets https://github.com/ppsite/argocd-in-action secret.yaml如下 apiVersion: v1 kind: Secret metadata:name: db-connectionnamespace: flask-demo type: Opaque data:DB_NAME: ZGVtbwDB_USERNAME: cm9vdADB_PASSWORD: cGFzc3dvcmQDB_HOST: MTI3LjAuMC4xDB_PORT: OTUyNwDB明文内容如下 加密secret.yaml kubeseal --formatyaml --cert ./public-cert.pem secret.yaml secret-sealed.yaml这个命令使用了 kubeseal 工具它是一个用于密钥管理和加密 Kubernetes Secrets 的工具。让我们逐步解释这个命令的每个部分 kubeseal: 这是执行密钥管理和加密操作的命令。–formatyaml: 这个选项指定输出的格式为 YAML。它告诉 kubeseal 命令将密封sealed的 Secret 输出为 YAML 格式。–cert .public-cert.pem: 这个选项指定了用于密封操作的公钥证书文件。./public-cert.pem 是公钥证书的文件路径。密封操作使用公钥来加密 Secrets。 secret.yaml: 这个符号 表示将 secret.yaml 文件作为输入传递给 kubeseal 命令。secret.yaml 是包含要密封的 Secret 数据的文件。 secret-sealed.yaml: 这个符号 表示将 kubeseal 命令的输出重定向到 secret-sealed.yaml 文件中。secret-sealed.yaml 是生成的密封sealed的 Secret 数据的输出文件。 综合来说这个命令的作用是将 secret.yaml 文件中的 Secret 数据进行加密并将加密后的结果保存到 secret-sealed.yaml 文件中。加密操作使用了 kubeseal 命令所指定的公钥证书文件.public-cert.pem。密封sealed的 Secret 数据可以安全地存储或传输只有拥有相应私钥的人才能解密并访问其中的数据。这样可以确保在 Kubernetes 集群中管理敏感信息时的安全性。 替换kustomize下secret为加密secret 查看secret-sealed.yaml文件发现DB配置已经加密 --- apiVersion: bitnami.com/v1alpha1 kind: SealedSecret metadata:creationTimestamp: nullname: db-connectionnamespace: flask-demo spec:encryptedData:DB_HOST: AgCzkIzXN9kxF/2hShvPric7cnxt5kbMtkaPbUed3Hvo87y3F2/MV2s8jn/OQmw5F05YkLa9o3mU4ilVLqeyFPl6uATyrkYPm9k7Qc0e8TwWf3/LvFayMHKdbv0cT3nd8vc43pD/37o8sY8DWTQ1bb9ffSwsoyue9mOrs5tSXtCxcR8AubXSaC8lzCHnObTCe4JDUMjc838fhmA8Uub6T0csBhiiBGI9DHJT87RtgDjHYrc6A90Vx35eGfrlLuCGwlPe4gsshUB0n6BaBpBjSzBhrOiH9z5bY1yLk5NnNzKp/PkhdVOrsg74R3yoXF0mqmoa152jWwgR7R1rDCmBe5oN0iEeSrbBa6jujR4M5yJXmDbNrgnC1yhrNw/fC9w51QAwQQGxY8VWw6A8vJVvyUSPaWWSzbsw/a0lbDnUcC7AdeZ2bXAnY8/BKDNskJ17lO0ReaB2AImXpEjXqKZPQABCEj6epxRa3zOKurpAewVcmWwbPtlgjySH4nGzc9TDrCjHy4epBPtp0niIWIfnOV3HndsE9OdETYOQtITZQu/s6wmvQbt7g5pP7d6uf6S/c7cfZW1ZXzjg9vHzea56rvp5wPs19A8kvl9ArYOvgDxUu0EKV5KDpjHJr6G5ZCpBZxDbirHN0pTcSbxVir3apQ9I8Pi8pKCZbNyejX31WGzyh1KfIoe394sjnxmHf4Ui4JIDB_NAME: AgCErq9kQOue3LKVOIYrxosypAWPrN7cxrysiIgK6jVORTH/bWj06XP7MBAYaawvzX3zG4ovh52fHzXlNmyT1cwvosxSIyPRBpKfOiD7VvzV0k1TG9Yux2rxOS3RamNLnwnChbYsUFcq/oy9ImqdHwcNlI6jTrTp/zOB4sX8SOtfKJPmXYFwHovHgP0zY9PG/XF0G7E1PH3jQbJDTUI/aer7ZCRLT45u2H0aIGfNJ60U3xw341TyDN/stY7nJHue3eEpPcz7DIsIwkbQN/PVi4R2gUkO92BzP62b32pbrFuJ8ouSUyHhIUGliRRcaeNMNlIxWN8EgB31M3OG77ULfBRQAG3jOrpHaoVDSEj1TiYiSYcyqYSVnsL5OsQdc3sVunlBqi68U3RiYJ3tiW88BW4AJAozJPzihjMDn3kJ3qmPAp9UaWnFLuydMG55pPaNHrWuOMtuhChqze4xs3ryU7AYplBM7Qi/auMipq7qxiwm8gQBLIylmIHDWrEjcDy93Nv9lAXYkA3hYKg2wKW2ntMvSd2NrCCwrSmlpRhSX47eLFEeqIdHpjN0or4mR7kj8zonE2rTmCxp7axZhoucHcU/XbHRcbufitwTismZw36XyC3wSpNy9urfsOkAt2KfDGZWKGUpWANO8QEuST9N7ORVvRG4Rw7sDzcdFmZUEoyFKibHgVr0GNgQLZ3GUDB_PASSWORD: AgAoeg8lSHrL7KuXXE42a0yDTHBBaSkpgrfuudnaH7V0eHiIH1bjaMvSl8wJdMUJQAcqPJ/QzvYjqU8vOH7JWwz28GzzBhtOV0/nOrtGREjNKEBqvjDvUDZdxU1AtQrvwivRhROd2F1TmvU77FQkL7nzclhVuIud3DOatZAcEAZNtuhVMtrqWkOP2H9RFgt4fbTGMvwtL1lj2TLXlKPKlSywAnMhrh5JCmkilEoPN1s9GJy6bVpgN355stYIlHaURi8bLy1DvtZrinBr2Eh9yk5HZTHto2TAvYfZl9PzkjV2upX14bX21VPHwUSfYbdU9JG/M31BDJVIYxd54ue9fWiV3n/Df9/F/dB9qlntsaOe8lMxJHr0/HRkGg2Bcqa2U5GDyn8aFlNxaJJefI24hPPnzdU8LhQUJYa80n7wMNZQAK7BReeVAg3OYGhtOwldOmMbAJMEHaQ0sRapx7xgU7yqF8afdDEDsmv5p9ZBa5KAxqVoatlsWxqkAgvpkgycZGuAeEb4KZNltBqPAPPee//yaJkVXQ3LVrDftuYAoWoiHOcKdUc2f7bnBMC8tGzfUL8IpsjloNdkV58go2fg4neG0XGuIY5vv6362ZtD8hlFPIZsjEv3jDChZr8d2YHHgm7Rd947UVHwoOGJ/bsSe56CEF6UQblsjk01PbXZ7NBXGMEWUHD8p/bKyDkAEB2DCLgDB_PORT: AgBwjV6sMLMVPCXiphwIatStoYc0MeqghB3ewQ3OpnOQ/Qzuf9dR4eWqWYmwoOgwEo9FdJTA/vRNhy087ZYA3lsCjdfFvqlcdo5JkDyWszs0rfYNsoqrr0R6AP41M6JEtdaJN5GNWAZXfWLA6jK4/nvG8tlXW6eg7FS9egLjHlbO/6lh2Z2tqOFwh9Ifmw4Cb6JKOHgd7NXCW5U9UV9PO9uxP44JFaJwOIeNpSzcTswn5RZqrfaCSzhvXvgnjB7XDwoM9dn0tvBg8bC2dfIoMcSHvQUBVxSqt0DLdDrde0e1E3zUvjofZ0DAs2CSAXyyxjy6p3nglyvKo0D6GPizEEOpOVFv/9eehpTwcezOHjlE8WZRlC5NT9hD7qCu9xXfNRG/oDI1ayn76WjOcq0yK4Gm13NzKvZTlolwEYsjgCF7c9lFeG3uezGdVY2tLCYe98YzXhdXEejkOcBi0NGa6IQeqjBRfRPOfPyKwIfZKJgyi9SpTfPrOdGc9AthIh7SxOqKoTzIuQNdvG8DxoahFYWuxzFq2jOwIOcFrp5Vu8Nb1aFnf9BWeKV/3w34MpNl6TDnZSzxgLO5pDu2qnbgMDH4ZWDru2Mg9VAzPDiSBrFJwbO7cIWRihoM4NZDXFsiFsSeVhN1/x4xPJJdbAlAKlNOnoEqjjPIngeTkiz37ShBFgiLoWlZzlFY27ZDaaDB_USERNAME: AgAMmJwduaDQh3tVitC1qU6Cf1NvhO4mFW8b/42JlGieEeIEiqOqVXctqlZwYcTwSBt/nu2qWq5VMA25sGfQwS1z7k5oQPKZFoWcl4KlMhnSIZiBkdinPiqneoKBmrYiCs7lFDj4hY4yGwzSpE1zepjAUUfaWpoHAWFn/WN2bGqcgqXPkQlbCcRQa/lH50k/Ddup2SrQB/YkpAfbT9Rp1ST308UnxwJbs5bki6alAar807BaoCfANrnAJRvDGel2SzLAyNb66o7k6on6Ceh9cRGG1tv4YVdQcrbnF1E1r5qxJumQtID0/FSezbFFeS6ukawopdilt8ymGvM/l/p2O8Spaa6UyGnvlSt96PPSpHH7LBX5Ji7O2bxauaTSxQadIYEfqg/uuHDWvfHMIVYCR41knV1GwKiVdyzlCshIXmW4XaqUEf3mDT3ckLm8liGDl9NS42VteEcI52n7dV5/YbksOiAkQq5JZQRwAR9mOY8USQ/SVm42ZZ8q4LMYw5PGrgGG4pZTlMAjzfAebhKqjMVTt0qMznfo6xeXKIvnlkvcOYLmBlxEWhz2wXNmvWrVbs9WKGshR2LSUKtxhv8HVXMFRxIWKVjyGxtdw58X6sef1sWSmaVzQFTrZ0yl/KFCjK0O8n5qk9CrUWB95QofOMoEz4BRcePLQYgPXnp10UIqpSCPQVXmUqSgSjdjljtemplate:metadata:creationTimestamp: nullname: db-connectionnamespace: flask-demotype: Opaque替换argocd-in-action测试项目kustomize下的secret.yaml为secret-sealed.yaml 创建argocd应用测试 发现SealedSecret创建失败点击进入查看具体原因提示资源已经存在修改secret-sealed.yaml下db-connection名称删除flask-demo名称空间重新同步提示没有秘钥可以解密查看sealed-secrets-controlled日志 Error updating flask-demo/db-connection-secret-sealed, giving up: no key could decrypt secret (DB_HOST, DB_NAME, DB_PASSWORD, DB_PORT, DB_USERNAME)E0122 09:10:20.514766 1 controller.go:277] no key could decrypt secret (DB_HOST, DB_NAME, DB_PASSWORD, DB_PORT, DB_USERNAME)Event(v1.ObjectReference{Kind:SealedSecret, Namespace:flask-demo, Name:db-connection-secret-sealed, UID:b6e760eb-8260-4e90-b2ac-56d439f59216, APIVersion:bitnami.com/v1alpha1, ResourceVersion:11922787, FieldPath:}): type: Warning reason: ErrUnsealFailed Failed to unseal: no key could decrypt secret (DB_HOST, DB_NAME, DB_PASSWORD, DB_PORT, DB_USERNAME)备份公钥私钥容灾处理 备份私钥 kubectl get secret -n kube-system -l sealedsecrets.bitnami.com/sealed-secrets-key -o yaml private.keykubectl: Kubernetes 命令行工具用于与 Kubernetes 集群进行交互。get secret: 获取 Kubernetes 集群中的 Secret 资源。-n kube-system: 指定命令在 kube-system 命名空间中执行即获取 kube-system 命名空间下的 Secret。-l sealedsecrets.bitnami.com/sealed-secrets-key: 使用标签选择器只返回具有指定标签的 Secret。这里的标签是 sealedsecrets.bitnami.com/sealed-secrets-key。-o yaml: 指定输出格式为 YAML。将获取的 Secret 资源以 YAML 格式打印到标准输出。 private.key: 将标准输出的内容重定向到 private.key 文件中。这将把 YAML 输出保存到名为 private.key 的文件中。 因此该命令的作用是获取位于 kube-system 命名空间下具有标签 sealedsecrets.bitnami.com/sealed-secrets-key 的 Secret 资源并将其以 YAML 格式保存到名为 private.key 的文件中。这个文件可能包含密钥或其他敏感信息用于后续操作或配置。 模拟灾难卸载sealed-secrets-controller kubectl delete -f https://github.com/bitnami-labs/sealed-secrets/releases/download/v0.25.0/controller.yaml上述操作不会删除secrets 恢复 # 先导入私钥 kubetl apply -f private.key # 重建sealed-secrets-controller kubectl apply -f https://github.com/bitnami-labs/sealed-secrets/releases/download/v0.25.0/controller.yaml
http://www.hkea.cn/news/14309366/

相关文章:

  • 网站建设兼职合同模板桔子建站官网
  • 网站栏目功能分析北京平面设计网站
  • 常州网站制作公司多吗捕鱼游戏网站建设步骤
  • 湖南电子科技网站建设图片类网站 怎么做优化
  • 郑州网站优化网络建设有限公司建设网站图片大全
  • 企业 做网站泉州seo计费管理
  • 厦门网站定制贵州省城乡建设部网站首页
  • 徐州做企业网站搜索引擎优化的方式有哪些
  • 移动终端网站开发网站功能项目报价
  • 公司网站备案资料网站的开发环境
  • 绍兴网站定制公司wordpress情侣网站源码
  • 宁德市路桥建设有限公司网站wordpress 滑 验证
  • 爱站长工具律师事务所网站制作
  • 网站设计的论文怎么建网站数据库
  • 精准扶贫建设网站的目的邯郸网站建设的企业
  • iis网站301重定向网站设计公司 上海
  • 网站前台用什么做长沙免费旅游景点大全
  • 深圳网站制作网站建设wordpress建群站
  • 如何提高网站的访问速度百度安装app下载免费
  • 网站建设也笔试简单网站php源码下载
  • 流程网站设计重庆网络安全公司排名
  • 嘉兴做网站建设的公司网页设计图纸
  • 附近网站建设服务公司搬家公司价目表
  • 刚刚建设的网站如何放图片成都工业设计公司排名
  • 男女做那个的网站是什么庆阳网站设计报价
  • 做deal网站手机做图纸app下载网站
  • 网站建设 图片压缩计算机网络技术是学什么
  • 有什么做礼品的卖家网站国际化域名
  • 建设厅培训中心网站移动互联网开发的学习心得300字
  • 新开传奇网站超变东莞建站模板源码