Devops系列三(拉取私库的helm chart,将java应用发布部署至k8s的示例)

news2024/11/25 5:03:15

一、说在前面的话

本文是紧接上文,上面已准备好了helm chart,接下来就是在K8S的kubectl执行部署。

二、使用helm部署

1、在kubectl添加helm 私有repo

[admin@jenkins]$ helm repo list
Error: no repositories to show

[admin@jenkins]$ helm repo add nexus http://150xxxx9916:123456@192.168.5.6:8081/repository/xh-helm/
"nexus" has been added to your repositories

[admin@jenkins]$ helm repo list
NAME    URL
nexus   http://150xxxx9916:123456@192.168.5.6:8081/repository/xh-helm/

# 现在就能检索到前文制作好的chart了
[admin@jenkins]$  helm search repo java
NAME            CHART VERSION   APP VERSION     DESCRIPTION
nexus/java      0.1.0           1.16.0          java demo

2、部署 – chart具体化

因为我之前安装consul,使用的也是helm。

[admin@jenkins]$ helm ls -a
NAME            NAMESPACE       REVISION        UPDATED                                 STATUS          CHART           APP VERSION
consul          default         1               2020-09-24 11:07:13.666581513 +0000 UTC deployed        consul-0.24.1   1.8.2

# 你可以使用--set xxx='' 替换 values.yaml中的变量。
[admin@jenkins]$ helm install --set env.javaOpts='-Dspring.profiles.active=dev' --set env.configServiceEnabled='false' --set image.tag=1.0.7 devops-service nexus/java

NAME: devops-service
LAST DEPLOYED: Fri Jun 30 10:17:19 2023
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None

[admin@jenkins]$ helm ls -a
NAME            NAMESPACE       REVISION        UPDATED                                 STATUS          CHART           APP VERSION
consul          default         1               2020-09-24 11:07:13.666581513 +0000 UTC deployed        consul-0.24.1   1.8.2
devops-service  default         1               2023-06-30 07:53:17.486712387 +0000 UTC deployed          java-0.1.8      1.16.0

三、helm chart 升级

  • 可以看到,在chart升级前后,我们必须执行helm repo update,否则检索不到最新的版本包。
> helm search repo java
NAME            CHART VERSION   APP VERSION     DESCRIPTION
nexus/java      0.1.0           1.16.0          java demo

> helm repo update
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "nexus" chart repository
Update Complete. ⎈Happy Helming!> helm search repo java
NAME            CHART VERSION   APP VERSION     DESCRIPTION
nexus/java      0.1.1           1.16.0          java demo

# 注意,在helm install前,务必先卸载
> helm uninstall devops-service
release "devops-service" uninstalled

四、验证

进入Pod,查看日志,见下
在这里插入图片描述访问应用的swagger地址:
http://192.168.80.184:32195/doc.html

因为k8s中的service采用的NodePort方式,所以在k8s外部,你可以使用所在的节点IP+分配的端口号的方式访问该java应用。

五、总结遇到的问题

1、数据类型不一致

Error: INSTALLATION FAILED: Deployment in version “v1” cannot be handled as a Deployment: v1.Deployment.Spec: v1.DeploymentSpec.Template: v1.PodTemplateSpec.Spec: v1.PodSpec.Containers: []v1.Container: v1.Container.Env: []v1.EnvVar: v1.EnvVar.Value: ReadString: expects " or n, but found f, error found in #10 byte of …|,“value”:false},{“na|…, bigger context …|false”},{“name”:“CONFIG_SERVICE_ENABLED”,“value”:false},{“name”:"spring.cloud.nacos.config.accessKey|…

因为deployment.yaml中的变量CONFIG_SERVICE_ENABLED对应的值,应该是字符串,但是我赋值的是一个布尔类型。

详细见下:

            - name: CONFIG_EPHEMERAL
              value: 'false'
            - name: CONFIG_SERVICE_ENABLED
              # 修改前的代码,没有单引号引起来
#             value: {{ .Values.env.configServiceEnabled }}
              # 修改后的代码
              value: '{{ .Values.env.configServiceEnabled }}'

2、镜像的地址错误,导致拉取镜像失败

values.yaml文件,repo地址不对。

image:
  # 修改前
  repository: harbor.xx.cloud/xxx/
  # 修改后
  repository: 192.168.5.6:8086/xxx/

deployment.yaml文件,

image: "{{ .Values.image.repository }}:{{ .Values.appName }}:{{ .Values.image.tag }}"

# 应该修改如下,去掉第一个冒号
image: "{{ .Values.image.repository }}{{ .Values.appName }}:{{ .Values.image.tag }}"

我在k8s工作节点上,手动拉取镜像,也是报错。

docker pull harbor.xx.cloud/xxx/devops-service:1.0.7
Error response from daemon: unauthorized: unauthorized to access repository: xxx/devops-service, action: pull: unauthorized to access repository: xxx/devops-service, action: pull

# 正确的写法应该是
docker pull 192.168.5.6:8086/xxx/devops-service:1.0.7

3、排查yaml

反复对比K8S里实际运行yaml文本,和你预期的是否一致,因为helm的原理比较简单,就是使用模板模式了。只要保证你的deployment.yaml和service.yaml等是对的,应用运行就没有什么大碍了。

4、一定要看运行的日志

由于我缺少了环境变量,导致pod中的devops-service容器启动失败。
后面,我在deployment.yaml中追加了环境变量。

 - name: APPNAME
 value: {{ .Values.appName }}

5、最后一个方法

安装k8s的UI,我这里使用的是KubePi。
刚开始,我在做持久化的时候出问题导致pod没有起来,通过UI工具,我清楚地看到是缺少了volumes。
在这里插入图片描述
暂时我去掉了volumes这块,说了这么多,其实遇到最大的麻烦就是保证deployment.yaml正确性。。。

六、最后的话

截止目前,没有一点的devops,顶多是一些容器化部署罢了,说了docker和k8s的一些部署事项。

现在都是手动操作哈,后面我们会引入jenkins和argo来说明如何更加做devops。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/723009.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

github Copilot使用及代理设置

使用前先保证自己能正常访问github.com,找个科学上网工具 找到系统的hosts文件做个配置,在https://www.ipaddress.com/ 中搜索github.com和api.github.com 140.82.112.4 github.com 140.82.113.6 api.github.com 我的搜索完是上面两个ip,加入…

港联证券|新动向!A股“定点”公告越来越多,大订单透露高景气

近年来,A股商场发布“定点”公告的上市公司越来越多,近三年尤为显着。 需求阐明的是,本文中此类“定点”公告包括定点(意向)书、定点通知(书)、定点信(函)等,…

Devops系列四(使用argocd部署java应用到k8s容器)

一、说在前面的话 上文已为我们准备好了以下内容: 制作java应用的docker镜像,并推送至镜像仓库上传helm yaml代码至gitlab仓库(此gitlab和java应用所在的gitlab可以独立,也可以在一起,但是不宜在同一个工程&#xff…

C#:AES的加密解密,用于明文加密

大白话理解&#xff1a;将明眼能看到的字符给用另一种读不懂的语言给翻译&#xff0c;就像是摩斯密码……就像base64加密&#xff0c;都有异曲同工之妙。 建一个新的类&#xff08;这里放了aes加密解密的方法&#xff09; public static class AesPassword{/// <summary&g…

解锁Nginx的奇幻世界:入门

文章目录 一 Nginx简介1.1 C10k问题1.2 Nginx 二 Nginx的作用2.1 反向代理2.2 方向代理演示2.3 负载均衡2.4 动静分离 三 Nginx的安装3.1 windows环境 一 Nginx简介 1.1 C10k问题 C10k问题指的是在一个服务器端同时处理成千上万&#xff08;10,000&#xff09;个并发连接的能力…

【论文精读】RA-MVSNet:Multi-View Stereo Representation Revisit: Region-Aware MVSNet

今天读的是一篇发表在CVPR2023上的文章&#xff0c;作者来自浙大与阿里巴巴。 文章链接&#xff1a;Multi-View Stereo Representation Revisit: Region-Aware MVSNet 目录 Abstract1 Introduction2 Related Work3 Method3.1 Cost Volume Construction3.2 Signed Distance Supe…

十一、弹性盒flex - 介绍

目录 1.flex介绍 2.详解 一、flex介绍 flex&#xff08;弹性盒&#xff0c;伸缩盒&#xff09; css中的又一种布局手段&#xff0c;它主要用来代替浮动来完成页面的布局。flex可以使元素具有弹性&#xff0c;让元素可以跟随页面的大小的改变而改变。 我们知道float&#xff1…

【linux kernel】一文总结linux内核通知链

文章目录 1、通知链简介2、通知链的类型3、原理分析和API&#xff08;1&#xff09;注销通知器&#xff08;2&#xff09;注销通知器&#xff08;3&#xff09;通知链的通知 4、实例代码&#xff08;1&#xff09;定义一个通知链&#xff08;2&#xff09;实现观察者模块&#…

从源码全面解析 Java SPI 的来龙去脉

一、引言 对于 Java 开发者而言&#xff0c;关于 dubbo &#xff0c;我们一般当做黑盒来进行使用&#xff0c;不需要去打开这个黑盒。 但随着目前程序员行业的发展&#xff0c;我们有必要打开这个黑盒&#xff0c;去探索其中的奥妙。 虽然现在是互联网寒冬&#xff0c;但乾坤…

数字化转型应该从哪里开始?

数字化转型可能是一个复杂的过程&#xff0c;涉及将数字技术和战略集成到组织的各个方面。虽然具体的起点可能会根据组织的规模、行业和目标而有所不同&#xff0c;但数字化转型计划通常从以下几个共同领域开始&#xff1a; 愿景和战略&#xff1a;转型之旅应从与组织目标一致的…

百万数据SQL优化技巧,看这一篇就够了(实操+详细总结)

前言&#xff1a;这次准备了100W的数据进行SQL性能测试&#xff0c;数据库采用的是MySQL&#xff0c;总共介绍了常见的15种SQL优化方式&#xff0c;每一种优化方式都进行了实打实的测试&#xff0c;逐行讲解&#xff0c;通俗易懂&#xff01; 目录 一、准备数据 1、创建表结构…

Windows环境下安装和配置python环境

Windows环境下安装和配置python环境 1.官网下载&#xff1a;https://www.python.org/downloads/release 2.安装&#xff1a;自定义路径即可无脑下一步 3.cmd打开控制台&#xff0c;输入python&#xff0c;如果页面切换成以下样子就说明安装成功了 4.运行python脚本【步骤3切入…

555、Vue 3 学习笔记 -【常用Composition API(四)】 2023.07.06

目录 一、setup的两个注意点1. setup执行的时机2. setup的参数 二、 计算属性与监视1. computed函数2. watch函数3. watchEffect函数 三、参考链接 一、setup的两个注意点 1. setup执行的时机 在beforeCreate之前执行一次&#xff0c;this是undefined 2. setup的参数 props…

GitLab名词介绍

GitLab名词介绍 分支&#xff1a;active、stale、default、protected IDEA中git面板&#xff1a;本地、远程、HEAD 合并时的选项&#xff1a;Delete、squash 查看Git常用操作 分支&#xff1a;active、stale、default、protected 在分支页面下&#xff0c;有active、stale…

k8s中kubectl陈述式/声明式资源管理

k8s陈述资源管理方法的说明 1.kubernetes 集群管理集群资源的唯一入口是通过相应的方法调用 apiserver 的接口 2.kubectl 是官方的CLI命令行工具&#xff0c;用于与 apiserver 进行通信&#xff0c;将用户在命令行输入的命令&#xff0c;组织并转化为 apiserver 能识别的信息&…

TongWeb8关于内存泄露提示: To prevent a memory leak

原因&#xff1a; 该问题与 https://blog.csdn.net/realwangpu/article/details/109510297 相同&#xff0c;TongWeb7, TongWeb8在卸载应用时&#xff0c;会尝试回收可能存在的内存泄露&#xff0c; 本质应该从应用方面解决。 解决办法&#xff1a; 若无法修改应用&#xff0c…

深度学习神经网络学习笔记-论文研读-transformer

摘要 优势序列转导模型基于复杂的循环或包括一个编码器和一个解码器的卷积神经网络。最好的表现良好的模型还通过attention 连接编码器和解码器机制。我们提出了一种新的简单的网络架构&#xff0c;Transformer&#xff0c; 完全基于注意力机制&#xff0c;省去了递归和卷积完…

【成都理工826】22年真题及解析

哈喽大家好&#xff0c;鉴于真题系列反馈很不错&#xff0c;我决定重启真题系列&#xff01;之前更新的22真题合集点击这里&#xff1a; 成都理工826信号与系统难度不是特别大&#xff0c;但是对计算的要求比较高。掌握好基础&#xff0c;计算细心是可以拿高分的。本套试题内容…

【我们一起60天准备考研算法面试(大全)-第四天 4/60(二叉搜索树与表达式树)】【每天40分钟,我们一起用60天准备 考研408-数据结构(笔试)】

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…

github搜索技巧笔记

一、了解 GitHub Watch按钮 Watch可以理解为关注的意思&#xff0c;默认情况下是Not watching&#xff0c;当选择Watch后&#xff0c;你会收到这个GitHub项目的所有动态。比如&#xff1a;有人发起pull request或者issue等。接收动态方式包括个人通知中心或者邮箱。 如果某个…