首页 > 其他分享 >详解 helm 部署 traefik

详解 helm 部署 traefik

时间:2024-10-27 09:31:59浏览次数:6  
标签:-- traefik 详解 dashboard https helm ns

安装helm

下载地址

https://github.com/helm/helm/releases

安装

wget https://get.helm.sh/helm-v3.16.2-linux-amd64.tar.gz
tar -zxvf helm-v3.16.2-linux-amd64.tar.gz
cd linux-amd64/
chmod 755 helm 
mv helm /usr/local/bin/
helm version

添加traefik的helm源

helm repo add traefik https://traefik.github.io/charts
helm repo update

下载traefik charts到本地

helm search repo traefik/traefik -l

helm pull traefik/traefik --version 32.1.1

解压

tar zxvf traefik-32.1.1.tgz
cd traefik/

安装traefik

kubectl create ns traefik-ns
helm install --namespace=traefik-ns traefik .

查看启动情况

kubectl get all -n traefik-ns

因为没有替换国内镜像源,必然出现拉取镜像失败。

NAME                           READY   STATUS             RESTARTS   AGE
pod/traefik-76d7646498-wjzld   0/1     ImagePullBackOff   0          7m5s

查看具体拉取失败的镜像

kubectl describe pod traefik-76d7646498-wjzld -n traefik-ns

拉取国内镜像

docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/traefik:v3.1
docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/traefik:v3.1 docker.io/traefik:v3.1.6
docker save -o traefik.tar docker.io/traefik:v3.1.6
scp traefik.tar [email protected]:/root
ssh 10.0.2.12
docker load -i traefik.tar 

访问dashboard,参考

https://kkgithub.com/traefik/traefik-helm-chart/blob/master/EXAMPLES.md
https://doc.traefik.io/traefik/operations/dashboard/

修改values.yaml,开启dashboard规则转发

ingressRoute:
  dashboard:
    enabled: true

配置端口转发来实现

kubectl -n traefik-ns port-forward $(kubectl -n traefik-ns get pods --selector "app.kubernetes.io/name=traefik" --output=name) 9000:9000

通过http://127.0.0.1:9000/dashboard


以下内容验证时,访问 traefik 的 dashboard 总是报错误 404,有待再次验证

自定义 values.yaml

在traefik-helm-chart目录创建一个定制的 values 配置文件(备注:如果不熟悉配置可以使用官方默认的配置文件)。

vim values-custom.yaml

写入以下内容

# values-custom.yaml
# Create an IngressRoute for the dashboard
ingressRoute:
  dashboard:
    enabled: false # 禁用 helm 中渲染的 dashboard,后面手动创建

# Configure ports
ports:
  web:
    port: 8000
    nodePort: 31800 # 使用 NodePort 模式
  websecure:
    port: 8443
    nodePort: 31443

# Service
service:
  enabled: true
  type: NodePort # 使用 NodePort 模式

# Logs
logs:
  general:
    level: DEBUG

安装 traefik

helm install -n traefik-ns traefik ./ -f values-custom.yaml

查看 traefik 的运行状态

kubectl get pods,svc -n traefik-ns -o wide

查看pod的资源清单来了解Traefik的运行方式

kubectl get pods traefik-6b7d8fcc6f-lqqmp -n traefik-ns -o yaml
spec:
  automountServiceAccountToken: true
  containers:
  - args:
    - --global.checknewversion
    - --global.sendanonymoususage
    - --entryPoints.metrics.address=:9100/tcp
    - --entryPoints.traefik.address=:9000/tcp
    - --entryPoints.web.address=:8000/tcp
    - --entryPoints.websecure.address=:8443/tcp
    - --api.dashboard=true
    - --ping=true
    - --metrics.prometheus=true
    - --metrics.prometheus.entrypoint=metrics
    - --providers.kubernetescrd
    - --providers.kubernetescrd.allowEmptyServices=true
    - --providers.kubernetesingress
    - --providers.kubernetesingress.allowEmptyServices=true
    - --entryPoints.websecure.http.tls=true
    - --log.level=DEBUG

从容器参数上可以看到entryPoints定义了web和websecure两个入口,并且provider开启了kubernetescrd和kubernetesingress。也就是既可以使用Kubernetes自身的Ingress资源对象,也可以使用Traefik扩展的IngressRoute类型的CRD资源对象来定义入口。

访问dashboard

使用IngressRoute资源清单部署一个Traefik Dashboard入口。创建dashboard.yaml文件

apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: dashboard
  namespace: traefik-ns
spec:
  entryPoints: # 入口点使用 web
    - traefik
  routes:
    - match: (PathPrefix(`/dashboard`) || PathPrefix(`/api`)) # 路由匹配规则,/dashboard 对静态页,/api 对接口
      kind: Rule
      services:
        - name: api@internal
          kind: TraefikService # Helm 安装 Traefik 时创建的自定义Service

部署

kubectl apply -f dashboard.yaml

部署完成后如果你是在云厂商的机器上,就可以使用Node节点的公网 IP + Traefik 的 Service 暴露出的端口号进行访问。如果是本地环境使用内网 IP。

参考:

https://doc.traefik.io/traefik/getting-started/install-traefik/#use-the-helm-chart
https://blog.linganmin.cn/posts/2d15ed93/
https://kkgithub.com/traefik/traefik-helm-chart/blob/master/EXAMPLES.md
https://zhuanlan.zhihu.com/p/466892515

标签:--,traefik,详解,dashboard,https,helm,ns
From: https://www.cnblogs.com/happyhuangjinjin/p/18507886

相关文章

  • 详解 helm 部署 ingress-nginx
    使用Helm安装参考文档:https://kubernetes.github.io/ingress-nginx/deploy/添加ingress-nginx官方helm仓库helmrepoaddingress-nginxhttps://kubernetes.github.io/ingress-nginxhelmrepoupdate下载Chart包#查找所有的版本helmsearchrepoingress-nginx/ingress-n......
  • 【Nginx学习】Nginx configure详解:生成的文件你都了解吗?
    ......
  • 【C语言】预处理(预编译)详解(上)(C语言最终篇)
    文章目录一、预定义符号二、#define定义常量三.、#define定义宏四、带有副作用的宏参数五、宏替换的规则六、宏和函数的对比1.宏的优势2.函数的优势3.宏和函数的命名约定一、预定义符号  学习本篇文章的内容推荐先去看前面的编译和链接,才能更好地理解和吸收,文章......
  • Matplotlib保姆级详解
    1.概念Matplotlib库:是一款用于数据可视化的Python软件包,支持跨平台运行,它能够根据NumPyndarray数组来绘制2D图像,它使用简单、代码清晰易懂2.安装pipinstallmatplotlib3.应用场景数据可视化主要有以下应用场景:企业领域:利用直观多样的图表展示数据,从而为企业......
  • 【Linux探索学习】第八弹——Linux工具篇(三):Linux 中的编译器 GCC 的编译原理和使用详
    #1024程序员节|征文#Linux下的vim编辑器:【Linux探索学习】第七弹——Linux的工具(二):Linux下vim编辑器的使用详解-CSDN博客前言:在上一篇我们学习了如何在Linux环境下直接用vim编辑器来进行编辑代码,今天我们来学习如何运行我们所编辑的代码,运行代码就需要编译器,也就是我们下......
  • sed 命令详解及示例
    sed是一种流编辑器,能高效地完成各种替换、删除、插入等操作,按照文件数据行顺序,重复处理满足条件的每一行数据,然后把结果展示打印,且不会改变原文件内容。sed会逐行扫描输入的数据,并将读取的数据内容复制到临时缓冲区中,称为“模式空间”(patternspace),然后拿模式空间中的数据与给......
  • 如何利用递归和迭代构建二叉树?详解题解
    文章目录根据二叉树创建字符串思路代码二叉树的层序遍历思路代码二叉树的最近公共祖先思路代码二叉搜索树与双向链表思路代码从前序与中序遍历序列构造二叉树思路代码总结根据二叉树创建字符串题目:样例:可以看见,唯一特殊的就是左子树,当右子树存在的时候左......
  • 《面试最爱问的Spring》- IOC启动流程,实战详解
    简介Spring作为一款经典框架,并且作为Spring家族的老大哥,也是SpringBoot,SpringCloud的一个基石,在我们工作中使用频率非常高,所以深入了解Spring的实现就很有必要。IoC(或DI)是Spring框架的核心功能之一,是Spring生态系统的基础。此处有一个很重要的容器,容器的作用:用来存储对象,Bea......
  • 【Linux】线程池详解及其基本架构与单例模式实现
    目录1.关于线程池的基本理论     1.1.线程池是什么?1.2.线程池的应用场景:2.线程池的基本架构2.1.线程容器2.2.任务队列2.3.线程函数(HandlerTask)2.4.线程唤醒机制3.添加单例模式3.1.单例模式是什么?3.2.饿汉实现方式和懒汉实现方式饿汉式单例模式:懒汉式单例......
  • Windows系统架构详解
    windows系统是全球为广泛使用的操作系统之一,其在桌面、服务器、移动设备等领域都有广泛应用。而windows系统的成功,离不开其的体系结构和架构设计。本文将详细介绍windows系统采用的体系结构以及其架构设计一、windows系统采用的体系结构windows系统采用的体系结构主要包括32位体......