当前位置: 首页 > news >正文

k8s:利用kubectl部署nginx

本文介绍了在离线环境下基于Hygon C86处理器和麒麟操作系统部署HTTPS服务的完整流程。首先通过CA签发服务器证书并创建Kubernetes Secret存储证书密钥,然后配置Nginx服务(包含HTTP/HTTPS监听端口),接着创建PV/PVC存储和部署Nginx容器,最后通过NodePort服务暴露端口。关键步骤包括:1)使用ConfigMap管理Nginx配置;2)通过Secret挂载TLS证书;3)绑定本地存储路径;4)实现双端口(80/443)服务暴露。最终可通过NodePort端口同时提供HTTP和HTTPS访问。

一.离线环境


CPU:Hygon C86 7285 32-core Processor
操作系统:麒麟操作系统
containerd:1.7.27
Kubernetes:1.26.12
KubeSphere:4.1.2
kubekey:3.1.10
Harbor:2.13.1

二、CA 签发服务器证书


详见通过HTTPS访问Harbor的配置《生成服务器证书》

三、创建 Kubernetes Secret 来存储证书和密钥


kubectl create secret tls nginx-tls \
  --cert=/app/cert/172.23.123.117.crt \
  --key=/app/cert/172.23.123.117.key

四、创建 Nginx 配置文件(ConfigMap) 

apiVersion: v1

kind: ConfigMap

metadata:

  name: nginx-conf

  namespace: default

data:

  nginx.conf: |

    user  nginx;

    worker_processes  auto;

    error_log  /var/log/nginx/error.log notice;

    pid        /var/run/nginx.pid;

    events {

        worker_connections  1024;

    }

    http {

        include       /etc/nginx/mime.types;

        default_type  application/octet-stream;

        sendfile        on;

        keepalive_timeout  65;

        server {

            listen       80;

            server_name  localhost;

            location / {

                root   /usr/share/nginx/html;

                index  index.html index.htm;

            }

            error_page   500 502 503 504  /50x.html;

            location = /50x.html {

                root   /usr/share/nginx/html;

            }

        }

        server {

            listen              443 ssl;

            server_name         localhost;

            ssl_certificate     /etc/nginx/tls/tls.crt;

            ssl_certificate_key /etc/nginx/tls/tls.key;

            ssl_protocols       TLSv1.2 TLSv1.3;

            ssl_prefer_server_ciphers on;

            location / {

                root   /usr/share/nginx/html;

                index  index.html index.htm;

            }

        }

    }

这里我们定义了两个 server 块:一个监听 HTTP 请求(端口 80),另一个监听 HTTPS 请求(端口 443)。HTTPS 服务器块中指定了证书和密钥的位置。 

五、创建PV 

apiVersion: v1

kind: PersistentVolume

metadata:

  name: webapp-pv

spec:

  capacity:

    storage: 10Gi

  accessModes:

    - ReadWriteOnce

  persistentVolumeReclaimPolicy: Retain

  storageClassName: local

  local:

    path: /app/data

  nodeAffinity:

    required:

      nodeSelectorTerms:

      - matchExpressions:

        - key: kubernetes.io/hostname

          operator: In

          values:

          - node2

六、创建PVC

apiVersion: v1

kind: PersistentVolumeClaim

metadata:

  name: webapp-pvc

spec:

  volumeName: webapp-pv

  accessModes:

    - ReadWriteOnce

  storageClassName: local

  resources:

    requests:

      storage: 10Gi

七、创建Deploy

apiVersion: apps/v1

kind: Deployment

metadata:

  name: nginx

spec:

  replicas: 1

  selector:

    matchLabels:

      app: nginx

  template:

    metadata:

      labels:

        app: nginx

    spec:

      containers:

      - name: nginx

        image: 172.23.123.117:8443/library/nginx:latest

        ports:

        - containerPort: 80

        - containerPort: 443

        volumeMounts:

        - name: webapp

          mountPath: /usr/share/nginx/html

        - name: nginx-config

          mountPath: /etc/nginx/nginx.conf

          subPath: nginx.conf

        - name: nginx-tls

          mountPath: /etc/nginx/tls

          readOnly: true

      volumes:

        - name: webapp

          persistentVolumeClaim:

             claimName: webapp-pvc

        - name: nginx-config

          configMap:

              name: nginx-conf

        - name: nginx-tls

          secret:

           secretName: nginx-tls

 

将 ConfigMap 和 Secret 分别挂载到了 /etc/nginx/nginx.conf 和 /etc/nginx/tls 路径下

八、创建Service 

apiVersion: v1

kind: Service

metadata:

  name: nginx-service

spec:

  selector:

    app: nginx

  ports:

    - protocol: TCP

      port: 80

      targetPort: 80

    - protocol: TCP

      port: 443

      targetPort: 443

  type: NodePort

 九、访问

将工程放到宿主机的/app/data下

HTTP访问

http://172.23.123.118:32690/tdmp_res/vue_baidumap/5b468f1de77d5.mp4

HTTPS访问

https://172.23.123.118:32320/tdmp_res/vue_baidumap/5b468f1de77d5.mp4

http://www.dtcms.com/a/299687.html

相关文章:

  • window10和ubuntu22.04双系统之卸载ubuntu系统
  • 方案C,version2
  • Fast_Lio 修改激光雷达话题
  • 【动态规划-斐波那契数列模型】理解动态规划:斐波那契数列的递推模型
  • 【Canvas技法】绘制正N角星
  • 【机器学习-1】特征工程与KNN分类算法
  • 鲲鹏服务器logstash采集nginx日志
  • 微分方程入门之入门之入门,纯笔记
  • Android Jetpack 组件库 ->WorkManager
  • 【Keepalived】高可用集群
  • Illustrator 删除编辑记录
  • 【简述】C++11/14/17/20/23 中的关键新特性
  • MPI练习:前缀和问题
  • 泛微OA8前台SQL注入
  • GPU运维常见问题处理
  • [硬件电路-93]:模拟器件 - 晶体管的静态工作点,让晶体管工作在其放大电路舞台的中央!!!
  • 企业级 AI 工具选型报告:9 个技术平台的 ROI 对比与部署策略
  • JavaScript:现代Web开发的核心动力
  • 无刷电机行业新一代AI智能化MES系统解决方案
  • LLM参数优化算法与经典理论揭秘
  • JVM 基础架构全解析:运行时数据区与核心组件
  • flask健康减脂饮食推荐—计算机毕业设计源码—07378
  • Oracle 误删数据恢复
  • BGP路由协议-LOCAL_PREF、AS_PATH和MED等属性
  • 【科研绘图系列】R语言绘制误差连线散点图
  • 知识图谱的初步探索
  • Nuxt 4:前端开发的全新篇章
  • 不正确的 clone() 方法实现与修复方案
  • 全能扩展,经济高效| 触想新款工控机化身工业自动化应用多面帮手
  • uniapp 自定义tab栏切换