首页
学习
活动
专区
圈层
工具
发布

helm安装ingress

一、安装helm

代码语言:javascript
复制
wget https://get.helm.sh/helm-v3.8.0-linux-amd64.tar.gz
tar -xvf helm-v3.8.0-linux-amd64.tar.gz
cp linux-amd64/helm /usr/local/bin/
chmod 755 /usr/local/bin/helm
​
# 验证
helm version

ingress-nginx安装使用

一、安装配置

代码语言:javascript
复制
# helm安装ingress-nginx
# 添加repo
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo list

# 列出所有版本
helm search repo ingress-nginx -l

# 查看版本对应关系
https://github.com/kubernetes/ingress-nginx

# 下载对应版本
helm pull ingress-nginx/ingress-nginx --version 4.0.18

# 解压
tar -xvf ingress-nginx-4.0.18.tgz

# 修改配置
# controller配置段修改
cd ingress-nginx
vim values.yaml

dnsPolicy: ClusterFirstWithHostNet

hostNetwork: true

# 增加额外nodeSelector,指定节点部署
  nodeSelector:
    kubernetes.io/os: linux
    ingress: "true"

type: ClusterIP

kind: DaemonSet

# 创建namespace
kubectl create ns ingress-nginx

# 对应节点打标签
kubectl label nodes k8s-node01 ingress="true"
kubectl label nodes k8s-node02 ingress="true"

# 安装
helm install ingress-nginx -n ingress-nginx .

二、补充说明

代码语言:javascript
复制
# 补充
# 官方文档地址:https://kubernetes.github.io/ingress-nginx/
​
# 卸载
helm uninstall ingress-nginx -n ingress-nginx
​
# 部署以及暴露方式
# DaemonSet+HostNetwork+nodeSelector
# 用DaemonSet结合nodeselector来部署ingress-controller到特定的node上,然后使用HostNetwork直接把该pod与宿主机node的网络打通,直接使用宿主机的80/433端口就能访问服务。这时,ingress-controller所在的node机器就很类似传统架构的边缘节点,比如机房入口的nginx服务器。该方式整个请求链路最简单,性能相对NodePort模式更好。缺点是由于直接利用宿主机节点的网络和端口,一个node只能部署一个ingress-controller pod。比较适合大并发的生产环境使用。

三、部署样例

代码语言:javascript
复制
# ingress暴露k8s dashbaord
# 创建https秘钥对
kubectl create secret tls test-secret --cert=www.test.com.crt --key=www.test.com.key -n kubernetes-dashboard

# ingress 配置
cat > dashboard-ingress.yaml << EOF
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: kubernetes-dashboard-ingress
  annotations:
    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"

spec:
  ingressClassName: nginx
  tls:
    - hosts:
      - k8s.test.com
      secretName: test-secret
  rules:
  - host: k8s.test.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: kubernetes-dashboard
            port:
              number: 443
EOF

# 创建ingress,注意namespace
kubectl create -f dashboard-ingress.yaml -n kubernetes-dashboard

# 测试
# 访问https://k8s.test.com
# 获取访问token
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')
下一篇
举报
领券