【Harbor作为Chart仓库】Helm离线部署AWX1.0.0

这篇具有很好参考价值的文章主要介绍了【Harbor作为Chart仓库】Helm离线部署AWX1.0.0。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、知识点分析

1.Helm是什么?

  Helm 帮助管理 Kubernetes 应用—— Helm Chart,即使是最复杂的 Kubernetes 应用程序,都可以帮助您定义,安装和升级。具有复杂性管理、易于升级、分发简单、回滚优点。可以简单理解为k8s的yum源、maven后端依赖库、nexus前端依赖库等。

2.Chart是什么?

  Chart是Helm使用包格式。 chart就是一个描述Kubernetes相关资源的文件集合。单个chart可以用来部署一些简单的, 类似于memcache pod,或者某些复杂的HTTP服务器以及web全栈应用、数据库、缓存等等。可以简单理解为类似于rpm包与yum源之间的关系。

3.AWX是什么?

  AWX 提供基于 Web 的用户界面、REST API 和基于Ansible 构建的任务引擎。它是红帽 Ansible 自动化平台的上游项目之一。可以简单理解为Ansible的web页面管理工具。

二、环境及安装包

1.安装包

  • helm-v3.8.1-linux-amd64.tar.gz
  • awx-operator-1.0.0.tgz
  • helm-push_0.10.3_linux_amd64.tar.gz

2.环境

  • Kubenetes1.23.1
  • CentOS7.8
  • Kuboard3.3.0
  • Harbor2.4.2
#查看系统信息、版本、k8s版本
hostnamectl && cat /etc/redhat-release && kubectl version

helm搭建离线chart,云计算大数据,k8s,docker,云原生,docker,容器,kubernetes,云计算
(提示:k8s、harbor、kuboard安装参考本人前面发布的Kubernetes1.23.5集群部署、Kuboard+Harbor+Dockerfile实战项目)

三、部署步骤

1.Harbor启用Helm Charts模块

(提示:默认Harbor这个模块是关闭的所以需要安装时候添加相应模块参数开启即可。)

#如果已经安装了不要着急,关闭服务加上模块在开启即可
docker-compose stop				    //进入到harbor安装目录执行关闭
./install.sh  --with-chartmuseum	//安装加入charts仓库模块
docker-compose start				//启动

如下图可以看到我们harbor仓库里面已经有Helm Charts这个模块啦!
helm搭建离线chart,云计算大数据,k8s,docker,云原生,docker,容器,kubernetes,云计算

2.Helm安装和基本使用

2.1.安装
tar -xvf helm-v3.8.1-linux-amd64.tar.gz		//解压到当前目录
cd linux-amd64/								//进入解压目录
cp linux-amd64/helm /usr/local/bin/helm		//拷贝到系统执行目录下
helm version 								//查看helm版本

helm搭建离线chart,云计算大数据,k8s,docker,云原生,docker,容器,kubernetes,云计算

2.2.添加Charts源
#添加harbor私有charts源
helm repo add course  http://10.111.13.4:8080/chartrepo/myrepo --username=admin --password=xxxxxx
helm repo list								//查看当前已添加charts源
helm repo update							//更新charts源(有关源仓库变更都需要执行一次)

helm搭建离线chart,云计算大数据,k8s,docker,云原生,docker,容器,kubernetes,云计算

2.3.安装helm-push插件
#1、oci注册只支持https协议
#2、原生自带的helm push命令只能对支持oci注册机制的仓库使用,Harbor已经弃用这种注册机制。
#3、所以我们使用helm cm-push命令上传而不是helm push
helm env					//查看helm的环境变量(可以查看到插件目录存放路径:/root/.local/share/helm/plugins)
mkdir /root/.local/share/helm/plugins/helm-push		//创建插件目录(压缩包不带目录)
tar -xvf helm-push_0.10.3_linux_amd64.tar.gz -C /root/.local/share/helm/plugins/helm-push						//解压到插件目录
helm plugin list			//查看已安装插件

helm搭建离线chart,云计算大数据,k8s,docker,云原生,docker,容器,kubernetes,云计算

2.4.Chart上传至Harbor仓库
helm cm-push awx-operator-1.0.0.tgz course		//上传,course是<repo name>
helm repo update								//更新charts源(有关源仓库变更都需要执行一次)
helm search repo awx							//搜索awx Chart包测试

helm搭建离线chart,云计算大数据,k8s,docker,云原生,docker,容器,kubernetes,云计算
helm搭建离线chart,云计算大数据,k8s,docker,云原生,docker,容器,kubernetes,云计算

3.AWX安装

  • Helm Install on existing cluster【官方互联网安装文档】
    (提示:以上方法提供给有互联网的小伙伴!)
3.1.准备工作
#1、使用AWX默认参数模板安装需要打开相关配置,<AWX.enabled>默认为false,我们需要改为true
#2、旧版本看官方文档操作步骤应该不需要打开,到了最新版需要手动启用了。
#3、由于博主是内网环境因此还需要修改拉去镜像地址改为私Harbor仓库地址(image上传harbor不再赘述)。
#4、最后重新打包、上传、更新仓库
tar -xvf awx-operator-1.0.0.tgz		//解压
cd awx-operator 					//进入解压目录
vim values.yaml						//修改默认配置文件
AWX: 
  # enable use of awx-deploy template
  enabled: true						//改为true
  name: awx
  spec:
    admin_user: admin
...
:qw									//退出并保存
vim templates/deployment-awx-operator-controller-manager.yaml		//修改拉取镜像地址
...
    spec:
      containers:
        - args:
            - --secure-listen-address=0.0.0.0:8443
            - --upstream=http://127.0.0.1:8080/
            - --logtostderr=true
            - --v=0
          image: 10.111.13.4:8080/jsjb/brancz/kube-rbac-proxy:v0.13.0	//harbor地址
...
          env:
            - name: ANSIBLE_GATHERING
              value: explicit
            - name: ANSIBLE_DEBUG_LOGS
              value: "false"
            - name: WATCH_NAMESPACE
              valueFrom:
                fieldRef:
                  fieldPath: metadata.namespace
          image: 10.111.13.4:8080/jsjb/ansible/awx-operator:1.0.0    //harbor地址
...
:wq												//保存并退出
rm -rf awx-operator-1.0.0.tgz					//删除初始包
tar -zcvf awx-operator-1.0.0.tgz awx-operator	//打包
helm cm-push awx-operator-1.0.0.tgz course		//上传harbor
helm repo update								//更新charts

helm搭建离线chart,云计算大数据,k8s,docker,云原生,docker,容器,kubernetes,云计算
helm搭建离线chart,云计算大数据,k8s,docker,云原生,docker,容器,kubernetes,云计算
helm搭建离线chart,云计算大数据,k8s,docker,云原生,docker,容器,kubernetes,云计算

3.2.安装
#1、helm install -n 空间名称 执行创建操作 安装软件名称 用户名 密码 版本 <repo name>/<chart name>
helm install  -n awx --create-namespace  my-awx-operator  --username=admin --password=xxxxxxx --version 1.0.0 course/awx-operator
kubectl get pods -n awx			//查看pod状态
kubectl get svc				    //查看服务状态

helm搭建离线chart,云计算大数据,k8s,docker,云原生,docker,容器,kubernetes,云计算
通过kuboard观察日志可以看到我们没有提前创建对应的pvc
helm搭建离线chart,云计算大数据,k8s,docker,云原生,docker,容器,kubernetes,云计算

#没有安装kuboard的可以用命令也一样的
kubectl describe pods awx-demo-postgres-13-0 | grep -i  -A 10 event  //查看事件

helm搭建离线chart,云计算大数据,k8s,docker,云原生,docker,容器,kubernetes,云计算

 kubectl get pvc		//查看pvc
 kubectl describe  pvc postgres-13-awx-postgres-13-0 | grep -i -A 10 event  //查看具体pvc事件

Pending的原因是没有默认SC
helm搭建离线chart,云计算大数据,k8s,docker,云原生,docker,容器,kubernetes,云计算
这里采用本地存储

#对于有状态应用来讲,在生成statefulsets之前需要创建好默认的SC(动态卷供应),由SC来动态处理PV和PVC的创建。
#生成PV用于PG的数据存储,所以我们这里需要创建一个SC,创建之前我们需要一个分配器,不同的分配器指定了动态创建pv时使用什么后端存储。
mkdir -p /srv/program/postgres-pv/local-path-postgres-pv-0  //目录创建到所选节点
chmod -R +777 /srv/program/postgres-pv/local-path-postgres-pv-0  //赋予权限
#回到之前机器操作
vim sc.yaml				//编写sc配置
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: local-path
provisioner: kubernetes.io/no-provisioner	#需要指定no-provisioner,相当于告诉k8s不要去动态创建PV。
volumeBindingMode: WaitForFirstConsumer		#需指定WaitForFirstConsumer,表示延迟绑定。
reclaimPolicy: Delete

kubectl apply -f sc.yaml	//创建sc

vim pv.yaml			    //编写pv配置
apiVersion: v1
kind: PersistentVolume
metadata:
  name: postgres-13-awx-postgres-13-0
  namespace: awx     # 空间名称
  labels:
    name: postgres-13-awx-postgres-13-0
spec:
  capacity:
    storage: 100Gi
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: local-path      #sc名字
  local:
    path: /srv/program/postgres-pv/local-path-postgres-pv-0 #存储卷的实际位置,与nfs暴露的文件地址相同
  nodeAffinity:		#限制该PV只能在node-6上被使用
    required:
      nodeSelectorTerms:        # 节点选择
      - matchExpressions:		#拓扑的key用kubernetes.io/hostname来做标记,也就是只能在node-6访问
        - key: kubernetes.io/hostname
          operator: In
          values:
          - node-6            # 根据自己节点名称
kubectl apply -f pv.yaml		//创建pv

helm搭建离线chart,云计算大数据,k8s,docker,云原生,docker,容器,kubernetes,云计算

#将local-path设置为默认sc
kubectl patch storageclass local-path -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
#删除pod等待pgsql会自动重建
kubectl delete -f postgres-13-awx-postgres-13-0.yaml
kubectl get pv |grep local-path		//查看pv情况,bound为绑定成功
kubectl get pvc						//查看pvc情况,bound为绑定成功

helm搭建离线chart,云计算大数据,k8s,docker,云原生,docker,容器,kubernetes,云计算
从kuboard看到拉取镜像失败(因为我内网,需要找有网的机器自己导入harbor修改地址拉去即可)
helm搭建离线chart,云计算大数据,k8s,docker,云原生,docker,容器,kubernetes,云计算

kubectl describe  pod awx-postgres-13-0 | grep -i -A 10 event   //没有kuboard可以这条命令查看事件

helm搭建离线chart,云计算大数据,k8s,docker,云原生,docker,容器,kubernetes,云计算
目前通过kuboard更改拉取镜像地址是不行的,因为要求必须https我搭建的harbor没开启https所以需要去所在节点亲自从harbor拉取pgsql(awx安装要求拉取地址必须https)
helm搭建离线chart,云计算大数据,k8s,docker,云原生,docker,容器,kubernetes,云计算

kubectl get pods -n awx -o wide			//查看pgsql在那个节点上
docker pull 10.111.13.4:8080/myrepo/postgres:13 //到相应节点拉取
docker tag  10.111.13.4:8080/myrepo/postgres:13 postgres:13  //更改标签使Pod识别

helm搭建离线chart,云计算大数据,k8s,docker,云原生,docker,容器,kubernetes,云计算
helm搭建离线chart,云计算大数据,k8s,docker,云原生,docker,容器,kubernetes,云计算
helm搭建离线chart,云计算大数据,k8s,docker,云原生,docker,容器,kubernetes,云计算
(图1可以看到已经成功创建pgsql)

#通过事件看到awx的pod也存在拉取镜像问题,解决方案同上
kubectl describe  pod awx-6fcdc869d4-cjddn | grep -i -A 10 event 

helm搭建离线chart,云计算大数据,k8s,docker,云原生,docker,容器,kubernetes,云计算

kubectl get pods -n awx -o wide			//查看awx在那个节点上

helm搭建离线chart,云计算大数据,k8s,docker,云原生,docker,容器,kubernetes,云计算
从kuboard可以看出这次需要拉取3个image(有俩重复)
helm搭建离线chart,云计算大数据,k8s,docker,云原生,docker,容器,kubernetes,云计算

#从有互联网的机器分别拉取:
#1、docker.io/redis:7
#2、quay.io/ansible/awx:21.8.0
#3、quay.io/ansible/awx-ee:latest
#4、推送到harbor上
#5、登录node-10节点、拉取镜像、并修改成相应的tag使pod匹配到即可
docker pull docker.io/redis:7
docker pull quay.io/ansible/awx:21.8.0
docker pull quay.io/ansible/awx-ee:latest
docker save -o redis7.tar.gz docker.io/redis:7
docker save -o awx-ee.tar.gz quay.io/ansible/awx-ee:latest
docker save -o awx21.tar.gz quay.io/ansible/awx:21.8.0
docker load  < redis7.tar.gz
docker load  < awx-ee.tar.gz
docker load  < awx21.tar.gz
docker tag docker.io/redis:7  10.111.13.4:8080/myrepo/redis:7
docker tag quay.io/ansible/awx-ee:latest  10.111.13.4:8080/myrepo/awx-ee:latest
docker tag quay.io/ansible/awx:21.8.0  10.111.13.4:8080/myrepo/awx:21.8.0
docker push 10.111.13.4:8080/myrepo/redis:7
docker push 10.111.13.4:8080/myrepo/awx-ee:latest
docker push 10.111.13.4:8080/myrepo/awx:21.8.0

helm搭建离线chart,云计算大数据,k8s,docker,云原生,docker,容器,kubernetes,云计算
helm搭建离线chart,云计算大数据,k8s,docker,云原生,docker,容器,kubernetes,云计算
如图已经如数上传到私有镜像库了:
helm搭建离线chart,云计算大数据,k8s,docker,云原生,docker,容器,kubernetes,云计算
接下来去相应节点也就是node-10拉取下来并改回原标签

docker pull 10.111.13.4:8080/myrepo/redis:7
docker pull 10.111.13.4:8080/myrepo/awx-ee:latest
docker pull 10.111.13.4:8080/myrepo/awx:21.8.0
docker tag  10.111.13.4:8080/myrepo/redis:7 docker.io/redis:7
docker tag  10.111.13.4:8080/myrepo/awx-ee:latest quay.io/ansible/awx-ee:latest
docker tag  10.111.13.4:8080/myrepo/awx:21.8.0 quay.io/ansible/awx:21.8.0
#回到主节点上查看
kubectl get pods -n awx			//查看awx空间的pod情况

helm搭建离线chart,云计算大数据,k8s,docker,云原生,docker,容器,kubernetes,云计算

4.AWX访问测试

4.1.curl本地访问测试
kubectl get svc				//查看services
curl 10.254.181.37			//访问测试

helm搭建离线chart,云计算大数据,k8s,docker,云原生,docker,容器,kubernetes,云计算
helm搭建离线chart,云计算大数据,k8s,docker,云原生,docker,容器,kubernetes,云计算

4.2.获取密码
kubectl get secrets
echo $(kubectl get secret awx-admin-password -o jsonpath="{.data.password}" | base64 --decode)

helm搭建离线chart,云计算大数据,k8s,docker,云原生,docker,容器,kubernetes,云计算

4.3.访问测试
#1、awx1.0.0最新版本默认服务没有发布,所以我们通过Kuboard代理直接访问即可。
#2、或者大家可以将awx以NodePort方式发布出来。
#以下命令可以查看awx所有涉及到的资源信息
kubectl api-resources -o name --verbs=list --namespaced | xargs -n 1 kubectl get --show-kind --ignore-not-found -n awx

方法一:
【kuboard代理访问】
helm搭建离线chart,云计算大数据,k8s,docker,云原生,docker,容器,kubernetes,云计算
helm搭建离线chart,云计算大数据,k8s,docker,云原生,docker,容器,kubernetes,云计算
helm搭建离线chart,云计算大数据,k8s,docker,云原生,docker,容器,kubernetes,云计算
方法二:
【发布服务】
helm搭建离线chart,云计算大数据,k8s,docker,云原生,docker,容器,kubernetes,云计算
helm搭建离线chart,云计算大数据,k8s,docker,云原生,docker,容器,kubernetes,云计算
helm搭建离线chart,云计算大数据,k8s,docker,云原生,docker,容器,kubernetes,云计算
AWX平台地址:http://任意节点子网IP:31770/#/login
用户:admin
密码:suYNigpQ0e67FvbSls6Suz9Nzi1et5io
helm搭建离线chart,云计算大数据,k8s,docker,云原生,docker,容器,kubernetes,云计算
helm搭建离线chart,云计算大数据,k8s,docker,云原生,docker,容器,kubernetes,云计算

四、结束语

  本次离线安装awx就结束了,感谢认真读完,如果觉得还可以,那么给作者点赞、收藏、关注吧!


阿坤成立公众号啦!可以微信搜一搜「 csdn阿坤 」第一时间阅读,关注后回复【AWX】可获得AWX1.0.0离线镜像包网盘下载链接,不用再为了awx镜像下载发愁,本人 GitHub https://github.com/csdnak/shell已经收录各种 运维脚本,欢迎Star。文章来源地址https://www.toymoban.com/news/detail-807581.html

到了这里,关于【Harbor作为Chart仓库】Helm离线部署AWX1.0.0的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Devops系列二(使用helm chart,将java应用发布部署至k8s的示例)

    docker镜像已经有了,本文我们将接着演示如何使用helm部署应用到k8s。 分为两大部分: 制作helm chart,推送到私有仓库nexus helm拉取chart,部署到k8s 要求你先安装helm,随便一台linux机器即可,不要求你要有k8s或者docker环境。 这里,我删除了没用到的一些文件,最后保留的见下:

    2024年02月12日
    浏览(36)
  • 麒麟V10 ARM 离线生成RabbitMQ docker镜像并上传Harbor私有仓库

    第一步在外网主机执行: docker pull arm 64 v 8 / rabbitmq: 3.8.9 -management 将下载的镜像打包给离线主机集群使用 在指定目录下执行打包命令: 执行:  docker save -o rabbitmq_arm3.8.9.tar arm64v8/rabbitmq:3.8.9-management 如果懒得打包给你飞机票下载镜像包:https://download.csdn.net/download/jiejiegua/88

    2024年02月03日
    浏览(35)
  • mac | Windows 本地部署 Seata2.0.0,Nacos 作为配置中心、注册中心,MySQL 存储信息

    系统 macOS sonama 14.1.1 MySQL 8.2.0 (官方默认是5.7版本) Seata 2.0.0 Nacos 2.2.3 默认你已经有 Nacos、MySQL,如果没有 Nacos 请参考我的文章 : Docker 部署 Nacos(单机),利用 MySQL 数据库存储配置信息 进行安装部署 Seata 下载地址:点此下载 注意:1.5版本(不记得是不是这个版本)之后没有

    2024年04月27日
    浏览(23)
  • harbor(docker仓库)仓库部署

    虽然Docker官方提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的Registry也是非常必要的。 Harbor是由VMware公司开源的企业级的Docker Registry管理项目,相比docker官方拥有更丰富的权限权利和完善的架构设计,适用大规模docker集群部署提供仓库服务。

    2024年02月14日
    浏览(32)
  • Helm & Kubernetes Offline Deploy Rancher v2.7.5 Demo (helm 离线部署 rancher 实践)

    Rancher 是一个开源容器管理平台,专为在生产环境中部署容器的组织构建。Rancher可以轻松地在任何地方运行Kubernetes,满足IT需求,并为DevOps团队提供支持。 最新版本 Latest Release v2.7 Latest - v2.7.6 - rancher/rancher:v2.7.6 / rancher/rancher:latest - Read the full release notes. Stable - v2.7.6 - rancher

    2024年02月09日
    浏览(29)
  • 本地私有仓库、harbor私有仓库部署与管理

    1.本地私有仓库简介 docker本地仓库,存放镜像,本地的机器上传和下载,pull/push。 使用私有仓库有许多优点: (1)节省网络带宽,针对于每个镜像不用每个人都去中央仓库上面去下载,只需要从私有仓库中下载即可; (2)提供镜像资源利用,针对于公司内部使用的镜像,

    2024年02月11日
    浏览(29)
  • 【kubernetes】Harbor部署及KubeSphere使用私有仓库Harbor

    https://goharbor.io/ 内容学习于马士兵云原生课程 部署docker及docker-compose 略 获取Harbor安装文件 获取TLS文件 云服务器厂商,即可申请 修改harbor配置文件 执行预备脚本 执行安装脚本 验证运行情况 测试访问 配置域名解析,使用域名访问则是安全的 修改docker daemon.json配置文件 镜像

    2024年02月10日
    浏览(26)
  • Helm Chart三分钟轻松掌握

    ​ 我们的日常工作中需创建、修改和部署Helm Chart,以管理应用程序的部署。Helm是Kubernetes的应用程序包管理器,它负责协调应用程序的下载、安装和部署。 chart就是一个描述Kubernetes相关资源的文件集合。 ​ 那么为什么会有人使用 Helm 呢? Helm 通过模板化方法在 Kubernetes 中更

    2023年04月09日
    浏览(26)
  • docker私有仓库harbor部署

    Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。 作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全。提升用户使用Registry构建和运行环境传输镜像的效率。

    2024年02月11日
    浏览(28)
  • Harbor企业镜像仓库部署(本地)

    简述: Docker 官方镜像仓库是用于管理公共镜像的地方,大家可以在上面找到想要的镜像,也可以把自己的镜像推送上去。但是有时候服务器无法访问互联网,或者不希望将自己的镜像放到互联网上,那么就需要用到 Docker Registry 私有仓库,它可以用来存储和管理自己的镜像。

    2024年02月14日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包