利用KeyTool生成自签名证书
任何机构或者个人都可以申请数字证书,并使用由CA机构颁发的数字证书为自己的应用保驾护航。常用的两个证书管理工具:KeyTool,OpenSSL--->构建CSR(Certificate Signing Request,数字证书签发申请),交由CA机构签发,形成最终的数字证书。 最近用到p12文件,就记录一下如何使用jdk自带的keytool来创建p12文件 打开cmd,切换到jdk的bin目录下 输入命令 1keytool -genkeypair -alias serverkey -keyalg RSA -keysize 2048 -validity 3650 -keystore D:\rabbitmq\tls-gen-master\p12test.keystore 参数解释: 12345678storepass: keystore文件存储密码,不加这个参数会在后面要求你输入密码keypass 私钥加解密密码alias 实体别名(包括证书私钥)dname 证书个人信息keyalg 采用公钥算法,默认是DSA,这里采用RSAkeysize 密钥长度(DSA算...
记录容器化后的java项目问题处理
背景: 生产环境, 项目cpu一直报警 进入容器查看cpu占用高的进程top 查看占用cpu高的线程top -Hp 90 这里得到占用资源高的线程, 假如是93 获取线程id的16进制printf "%x\n" 93 这里得到的5d 对于只有jre的镜像, 需要安装对应版本jdk然后打印堆栈信息打印堆栈信息: ./jstack -l 90 > jstack.log 查找到对应线程的信息: cat jstack.log |grep "nid=0x5d" 查看gc格式: jstat -gcutil pid interval(ms) n次 jstat -gcutil 90 5000 10 123456789101112131415161718192021222324S0 S1 E O M CCS YGC YGCT FGC FGCT GCT0.00 0.00 99.64 100.00 94.39 92.31 285 14.940 474 329.694 344.6350.00 0.00 98.78 99.99 94.40 92.31 2...
记录雪花算法ID到前端之后丢失精度
问题描述 12345后端把Long类型的数据传给前端,前端可能会出现精度丢失的情况。例如:201511200001725439这样一个Long类型的整数,传给前端后会变成201511200001725440js中的number类型是16位的,而雪花id是19位 下图可以看出,输入的值超出安全值,可能会被js自动转化 3种jackason解决方式(前端再把String类型的19位数字传回服务端的时候,服务端还是接收long类型即可,这是Spring反序列化参数接收默认支持的行为) 重新注册ObjectMapper的Long类型序列化方式 123456789101112131415161718192021222324@Configurationpublic class LongClassMessageConverter implements InitializingBean { @Resource ObjectMapper objectMapper; private SimpleModule getSimpleModule() { ...
fix error: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
统一代理日志中出现以下错误消息1PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 原因这是Java虚拟机报告的常见错误消息。当Java环境没有适当的CA证书路径来验证HTTPS服务器是否为有效网站时,就会发生这种情况。这是一个特定于Java的错误,其他技术不会报告此类错误。 解决方案创建证书首先,你需要创建一个证书。要执行此操作,请按照以下步骤操作: 在浏览器中打开URL(即https://www.example.com/、https://saas.whitesourcesoftware.com/) 按F12访问浏览器的开发人员工具 转到“security”选项卡 单击“view certificate” 在“详细信息”窗口中,转到“详细信息”选项卡 单击“导出” 确保文件格式为:Base64编码ASCII、单个证书...
K8s command 与 args 详解
在 describe 或 kubelet 日志中没有明确记录错误原因时,基本都是因为 command 命令不合法导致的。 命令和参数说明command 和 args 分别对应于 Dockerfile 中的 ENTRYPOINT 和 CMD。command 表示要执行的命令,args 是传递给该命令的参数。 如果 command 和 args 均未填写,则使用 Dockerfile 中的配置。 如果填写了 command 但未填写 args,则 Dockerfile 默认配置会被忽略,执行输入的 command(不带任何参数,当然 command 中可自带参数)。 如果未填写 command 但填写了 args,则 Dockerfile 中配置的 ENTRYPOINT 命令行会被执行,并将 args 中填写的参数追加到 ENTRYPOINT 中。 如果 command 和 args 都填写了,则 Dockerfile 的配置被忽略,执行 command 并追加上 args 参数。例如: command: /test.sh,p1,p2 args: p3,p4 关于 CMD 和...
K8s Secret 加密:使用 bitnami-labs/sealed-secrets 进行安全管理
Kubernetes 自己提供了 secret 这种方式,但其是一种编码方式,而非加密方式,如果需要用版本控制系统(比如 git)来对所有的文件、内容等进行版本控制时,这种用编码来处理敏感信息的方式就显得很不安全了(即使是采用私有库),这一点在实现 GitOps 时,是一个痛点。 Sealed Secrets Sealed Secrets 充分利用 kuberntes 的高扩展性,通过 CRD 来创建一个 SealedSecret 对象,通过将加密的内容存储在扩展 SealedSecret 对象中,而 SealedSecret 只能够被运行于目标集群上的 controller 解密,其他人员和方式都无法正确解密原始数据。SealedSecret 对象同时又会生成与其名称相同的 secret 对象,随后就可以按照常规方式使用 secret 对象了。最后将加密后的文件直接推送至版本控制系统即可,而不用担心敏感信息被泄漏. 简单来说就是, 我们需要用 YAML 的形式生成一个 Secret,但是我们希望 YAML 自身的内容是加密的,以保证传输过程中,Secret 自身的内容不...
K8s DNS 原理与 dnsPolicy 应用场景详解
转自: https://help.aliyun.com/document_detail/188179.html?utm_content=g_1000230851&spm=5176.20966629.toubu.3.f2991ddcpxxvD1#title-b7y-d6a-bcy DNS原理和配置说明本文介绍Kubernetes集群中集群DNS服务原理,并针对不同场景介绍如何进行DNS策略配置。 背景信息K8S集群默认部署了一套DNS服务,通过kube-dns的服务名暴露DNS服务。你可执行以下命令查看kube-dns的服务详情。 1kubectl get svc kube-dns -n kube-system 预期输出: 12NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEkube-dns ClusterIP 172.24.0.10 <none> 53/UDP,53/TCP,9153/TCP 27d K8s 部署的...
K8s 在不同或相同 Namespace 下服务间访问
同一个 NamespaceK8s 给每个内部服务提供了一个内部使用的 host,格式为 <servicename>.<namespace>。可以在代码中直接访问 http://<servicename>.<namespace>:<port> 来访问另一个服务。如果是部署到默认 Namespace 下的服务,Namespace 为 default。 不同 Namespace无论是相同还是不同 Namespace,都可以通过以下格式访问: {SERVICE_NAME}.{NAMESPACE_NAME}.svc.cluster.local {SERVICE_NAME}.{NAMESPACE_NAME}(短格式) Namespace 的作用是形成逻辑上的"组",以方便不同组的资源进行隔离使用和管理。 例如:my-service.default.svc.cluster.local 中,default 是命名空间,svc 表示这是...
kubectl 命令行 JSONPath 的使用
转自:https://blog.51cto.com/u_11555417/5521927,参考 JSONPath 支持 | Kubernetes 说明JSONPath 模板由 {} 包起来的 JSONPath 表达式组成。kubectl 使用 JSONPath 表达式来过滤 JSON 对象中的特定字段并格式化输出。除了原始的 JSONPath 模板语法,以下函数和语法也是有效的: 使用双引号将 JSONPath 表达式内的文本引起来。 使用 range、end 运算符来迭代列表。 使用负数索引后退列表。负索引不会"环绕"列表,且只要 -index + listLength >= 0 就有效。 通过kubectl命令行配合jsonpath就能获取过滤到我们关注的信息。 函数 描述 示例 结果 text 纯文本 kind is {.kind} kind is List @ 当前对象 {@} 与输入相同 . or [] 子运算符 {.kind} or ...
K8s 配置 Hosts 的方式
静态配置通过 hostAliases 配置容器内的 Hosts 文件12345hostAliases: - hostnames: - "sss" - "aaa" ip: 127.0.0.1 动态配置通过环境变量在 command 中追加到 /etc/hosts12345678910# 注入环境变量envFrom: - configMapRef: name: sopei-biz-configmap# 读取环境变量并追加到 /etc/hostscommand: ["/bin/sh", "-c"]args: - | echo gateway-orange-sopei.sopei-biz.svc.cluster.local $web_domain >> /etc/hosts node app.js
