javascript 中 const,var,let 的区别

  • var,声明作用域为所在上下文即当前函数或全局范围的变量。
  • let,声明作用域为所在代码块的变量。
  • const,与 let 类似,但 const 声明变量的引用不能改变。

在ES6非严格模式下使用 let 声明的全局变量,不会成为window的属性。

参考资料:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/var
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/let
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/const

k3s 中 let’s encrypt 配置示例

k3s 中默认使用 traefik,默认通过 helmchart config 来配置 traefik,配置文件需要放在目录 /var/lib/rancher/k3s/server/manifests/ , 推荐在该目录中添加配置文件 traefik-config.yaml,完整目录 /var/lib/rancher/k3s/server/manifests/traefik-config.yaml,k3s 会在该文件变更后自动重新部署 traefik。

apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
  name: traefik
  namespace: kube-system
spec:
  valuesContent: |-
    securityContext: #指定traefik运行上下文以保证能正常访问 acme.json文件
      readOnlyRootFilesystem: true
      runAsGroup: 1000
      runAsNonRoot: true
      runAsUser: 1000
    deployment:
      additionalVolumes: # 添加用于保存 acme.json 的PVC
        - name: acme-storage
          persistentVolumeClaim:
            claimName: acme-pvc
    additionalVolumeMounts: # 添加用于保存 acme.json 的volumemount
      - name: acme-storage
        mountPath: /acme
    certResolvers:
      letsencrypt: #定义 letsencrpty证书resolvers
        email: example@email.com
        dnsChallenge:
          provider: tencentcloud #以dnspod为例
        storage: /acme/acme.json
    env: #用于 tencentcloud dnschallenge 所需的环境变量
      - name: TENCENTCLOUD_SECRET_ID
        value: idxxxxxxxxxxxxxxxxxxxxxxxxxxxx
      - name: TENCENTCLOUD_SECRET_KEY
        value: keyxxxxxxxxxxxxxxxxxxxxxxxxxxx

关于更多的 dnsChallenge provider 可参考该文档: Traefik Let’s Encrypt Documentation – Traefik

traefik 配置完成后只需在 ingress route 中做如下简单配置便可使用 let’s encrypt 证书

apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: argocd-websecure-ir
  namespace: xxxx
spec:
  entryPoints:
  - websecure
  tls:
    certResolver: letsencrypt # 指定certResolver

腾讯云主机遇到的 ipv6 连接问题

在使用腾讯云主机时多次碰到 ipv6 连接问题,多次在技术人员的支持下,目前比较快速稳定的解决方案是在 netplan 的配置文件中添加如下配置,针对的服务器镜像版本是 Ubuntu 22.04,配置文件为 /etc/netplan/50-cloud-init.yaml

# network: {config: disabled}
network:
    version: 2
    ethernets:
        eth0:
            dhcp4: true
            match:
                macaddress: 52:xx:00:xx:xx:12
            set-name: eth0
            nameservers:
                addresses: [183.60.83.19,183.60.82.98]
            addresses:
                - 2402:xxxx:xxxx:xxxx:0:xxxx:6e0f:xxxx/128 #实例面板中的ipv6地址
            gateway6: fe80::feee:ffff:feff:ffff #网关地址,联系技术人员获取

Visual Studio 调试 Doker 笔记

  • visual studio 在启动docker调试时不会使用dockerfile去生成镜像
  • 检查容器的环境变量是要考虑到base镜像中设置的环境变量
  • 调试时若需要设置容器环境变量可在launchSettings.json中的Docker段进行设置
    "Docker": {
      "commandName": "Docker",
      "launchBrowser": true,
      "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}",
      "environmentVariables": {
        "ASPNETCORE_URLS": "http://+:5000"
      },
      "publishAllPorts": true
    }