[kubernetes]-k8s通过设置yaml中env的值动态调整nginx端口

导语:通过yaml中设置env的值 动态更新nginx的端口信息,以便一个镜像可以在不同环境使用。

测试的文件 /etc/nginx/conf.d/nginx.conf.template


upstream backend {
  server ${BACKEND_HOST}:${BACKEND_PORT};
}

upstream backend2 {
  server ${BACKEND_HOST}:${SVRSHELL_PORT};
}
#设定虚拟主机配置
server {
  listen    80;
  server_name  _;
  root /var/html;

  client_max_body_size 8g;
  proxy_send_timeout 600s;
  proxy_read_timeout 600s;
  proxy_redirect off;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header REMOTE-HOST $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  client_body_buffer_size 256k;
  proxy_buffering off;

  location ~ .*globalConfig.js$ {
    add_header Cache-Control "private, no-store, no-cache, must-revalidate, proxy-revalidate";
  }

  location ~ .*\.(?:js|css)$ {
    expires 30d;
  }

  location ~ .*\.(?:htm|html)$ {
    add_header Cache-Control "private, no-store, no-cache, must-revalidate, proxy-revalidate";
  }

  location ~ .*?\.(js|css|jpg|png|jpeg|less|sass) {
    root /var/html;
  }

  location ^~ /chrome {
    return 301 ./49chrome.exe;
  }

  location / {
    try_files $uri $uri/ /index.html;
    index index.html;
  }

  location ${FRONT_END_PREFIX}/ {
    proxy_set_header Host ${BACKEND_HOST};

    proxy_pass  http://backend/;
    #client_max_body_size 40m;
  }

  error_page   500 502 503 504 /50x.html;
    location = /50x.html {
  }

  location ~ /.ht {
    deny all;
  }
}

修改配置的脚本run.sh

echo "################################## Run nginx"
# 不加export DOLLAR='$'执行会把$remote_addr这些替换成空。
# 注意DOLLAR='$'的用法,并用${DOLLAR}PATH转义$ PATH以避免将$ PATH替换为来自"错误"主机的值。
export DOLLAR='$'

# 这里如果使用envsubst < /etc/nginx/conf.d/nginx.conf.template > /etc/nginx/conf.d/nginx.conf # /etc/nginx/conf.d/default.conf 会导致nginx自带的参数为空
envsubst '${SVRSHELL_PORT}' < /etc/nginx/conf.d/nginx.conf.template > /etc/nginx/conf.d/nginx.conf # /etc/nginx/conf.d/default.conf
#envsubst '${BACKEND_HOST}','${BACKEND_PORT}','${FRONT_END_PREFIX}' < /etc/nginx/conf.d/nginx.conf.template > /etc/nginx/conf.d/nginx.conf # /etc/nginx/conf.d/default.conf
#envsubst '${VERSION}' < /var/html/index.html.template > /var/html/index.html

echo "Generate nginx.conf"

把上述文件上传到容器中后 设置env

export SVRSHELL_PORT='8123'
./run.sh

脚本执行完成之后查看生成的文件。已经替换对应的参数成功。

关于DOLLAR='$'我理解应该是如下面所说。不存在的参数$Par会变成${DOLLAR}Par,env中能够获取到的的变量会替换进去。

export DOLLAR='$'
export THIS=THAT
echo '${DOLLAR}THIS' | envsubst

部署时helm的yaml env为SVRSHELL_PORT

# svrshell-dep.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: svrshell-dp
spec:
  replicas: 1
  selector:
    matchLabels:
      app: svrshell
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: svrshell
    spec:
      restartPolicy: Always
#        - command: ['sh', '-c', "until nslookup platform-headless.$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace).svc.cluster.local; do echo waiting for platform; sleep 2; done"]
#          image: 10.10.3.246/cta/busybox-curl:01
#          name: wait-for-platform
      containers:
      - name: svrshell
        image: {{ .Values.images.svrshell }}
        env:
        - name: TZ
          value: Asia/Shanghai
        - name: LANG
          value: en_US.UTF-8
        - name: SVRSHELL_PORT
          value: "81"
        volumeMounts:
        - name: dicom-pvc
          mountPath: /data1/inputdata
      volumes:
      - name: dicom-pvc
        hostPath:
          path: /data1/inputdata
          type: DirectoryOrCreate

参考

https://www.cnblogs.com/mailaidedt/p/12527090.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Kubernetes,可以使用YAML格式来编写资源对象的配置文件。YAML是一种简洁的非标记性语言,以数据为心,使用空白、缩进和换行来组织数据。以下是一些关于YAML文件编写的详细信息: 1. 大小写敏感:YAML是大小写敏感的,因此在编写YAML文件时需要注意大小写的正确使用。 2. 使用缩进表示层级关系:YAML使用缩进来表示数据的层级关系,一般使用空格键进行缩进。Tab键是不被允许的。 3. 缩进的空格数目不重要:相同层级的元素只需要左侧对齐即可,一般情况下使用两个空格进行缩进。 4. 使用#表示注释:在YAML文件,可以使用#符号来添加注释,注释内容从#字符开始一直到行尾都会被解析器忽略。 5. 特殊字符的使用:在YAML,一些特殊字符如冒号、逗号、短横杠等需要进行特殊处理,通常在这些字符后面会缩进一个空格。 6. 对象的表示:对象使用键对的方式表示,使用冒号结构进行分隔,例如`animal: pets`。 7. 另一种对象的写法:YAML还支持将所有键对写在一行内的行内对象表示法,例如`hash: {name: Steve, foo: bar}`。 8. 数组的表示:数组使用连词线开头的行来表示,每个元素占据一行,例如: ``` - Cat - Dog - Goldfish ``` 9. 子成员是数组:如果数据结构的子成员是一个数组,可以在该项下面缩进一个空格,例如: ``` - - Cat - Dog - Goldfish ``` 10. 文件示例:下面是一个KubernetesYAML文件的示例,用于创建一个名为"kubernetes-dashboard"的命名空间: ``` apiVersion: v1 kind: Namespace metadata: name: kubernetes-dashboard ``` 以上是关于KubernetesYAML文件编写的一些详细信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [kubernetes-----YAML文件编写详解](https://blog.csdn.net/qq_42761527/article/details/105897465)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [k8s集成kubernetes-dashboard可视化界面](https://blog.csdn.net/crazy1013/article/details/126575777)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爷来辣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值