手写chart

Elasticsearch 报错 error At least one unigram is required but all tokens were ngrams 【代码】Elasticsearch 报错 error At least one unigram is required but all tokens were ngrams。 阅读详情

 欢迎关注我的公众号:

 目前刚开始写一个月,一共写了18篇原创文章,文章目录如下:

istio多集群探秘,部署了50次多集群后我得出的结论

istio多集群链路追踪,附实操视频

istio防故障利器,你知道几个,istio新手不要读,太难!

istio业务权限控制,原来可以这么玩

istio实现非侵入压缩,微服务之间如何实现压缩

不懂envoyfilter也敢说精通istio系列-http-rbac-不要只会用AuthorizationPolicy配置权限

不懂envoyfilter也敢说精通istio系列-02-http-corsFilter-不要只会vs

不懂envoyfilter也敢说精通istio系列-03-http-csrf filter-再也不用再代码里写csrf逻辑了

不懂envoyfilter也敢说精通istio系列http-jwt_authn-不要只会RequestAuthorization

不懂envoyfilter也敢说精通istio系列-05-fault-filter-故障注入不止是vs

不懂envoyfilter也敢说精通istio系列-06-http-match-配置路由不只是vs

不懂envoyfilter也敢说精通istio系列-07-负载均衡配置不止是dr

不懂envoyfilter也敢说精通istio系列-08-连接池和断路器

不懂envoyfilter也敢说精通istio系列-09-http-route filter

不懂envoyfilter也敢说精通istio系列-network filter-redis proxy

不懂envoyfilter也敢说精通istio系列-network filter-HttpConnectionManager

不懂envoyfilter也敢说精通istio系列-ratelimit-istio ratelimit完全手册

 

————————————————

manifest文件:

[root@master01 manifest]# cat ./*
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: mysql-clusterrole-binding
  labels:
    app: "mysql"
    component: "mysql"
    chart: "mysql-0.1"
    release: "mysql"
    heritage: "Helm"
roleRef:
  kind: ClusterRole
  name: mysql-clusterrole
  apiGroup: rbac.authorization.k8s.io
subjects:
- kind: ServiceAccount
  name: mysql-sa
  namespace: mysql
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: mysql-clusterrole
  labels:
    app: "mysql"
    component: "mysql"
    chart: "mysql-0.1"
    release: "mysql"
    heritage: "Helm"
rules:
- apiGroups: ['policy']
  resources: ['podsecuritypolicies']
  verbs:     ['use']
apiVersion: v1
data:
  my.cnf: |
    [mysqld]
    skip-name-resolve
    port=3306
    innodb_file_per_table = 1
kind: ConfigMap
metadata:
  name: mysql-configmap
  labels:
    app: "mysql"
    component: "mysql"
    chart: "mysql"
    release: "mysql"
    heritage: "helm"
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
  labels:
    app: mysql
    chart: "mysql-0.1"
    release: "mysql"
    heritage: "Helm"
spec:
  progressDeadlineSeconds: 600
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: mysql
      release: mysql
  replicas: 1
  template:
    metadata:
      labels:
        app: mysql
        release: mysql
    spec:
      tolerations:
      - key: "example-key"
        operator: "Exists"
        effect: "NoSchedule"
      serviceAccountName: mysql-sa
      terminationGracePeriodSeconds: 60
      containers:
      - name: mysql
        image: mysql:5.6
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 3306
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: "mysql"
        readinessProbe:
          exec:
            command:
            - sh
            - -c
            - "mysqladmin ping -u root -p${MYSQL_ROOT_PASSWORD}"
          initialDelaySeconds: 30
          periodSeconds: 10
          timeoutSeconds: 5
          successThreshold: 1
          failureThreshold: 3 
        livenessProbe:
          exec:
            command:
            - sh
            - -c
            - "mysqladmin ping -u root -p${MYSQL_ROOT_PASSWORD}"
          initialDelaySeconds: 30
          periodSeconds: 10
          timeoutSeconds: 5
          successThreshold: 1
          failureThreshold: 3
        resources:
          requests:
            cpu: 0.2
            memory: 100Mi
          limits:
            cpu: 0.5
            memory: 500Mi
        securityContext:
          allowPrivilegeEscalation: false
        volumeMounts:
        - mountPath: /var/lib/mysql 
          name: data
        - name: configurations
          mountPath: /etc/mysql/conf.d/
          subPath: mysql.cnf
      volumes:
      - name: data
        persistentVolumeClaim:
          claimName: mysql-nfs-pvc
      - name: configurations
        configMap:
          name: mysql-configmap
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: mysql-hpa
  labels:
    app: "mysql"
    component: "mysql"
    chart: "mysql-0.1"
    release: "mysql"
    heritage: "Helm"
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: mysql
  minReplicas: 1
  maxReplicas: 5
  targetCPUUtilizationPercentage: 50

apiVersion: policy/v1beta1  
kind: PodDisruptionBudget  
metadata:  
  name: mysql-pdb
  labels:
    app: "mysql"
    component: "mysql"
    chart: "mysql-0.1"
    release: "mysql"
    heritage: "Helm"  
spec:  
 minAvailable: 1
 selector:  
   matchLabels:  
     app: mysql
     release: mysql
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: mysql-psp
  labels:
    app: "mysql"
    component: "mysql"
    chart: "mysql-0.1"
    release: "mysql"
    heritage: "Helm"
spec:
  runAsUser:
    rule: 'RunAsAny'
  seLinux:
    rule: 'RunAsAny'
  supplementalGroups:
    rule: 'MustRunAs'
    ranges:
      - min: 1
        max: 65535
  fsGroup:
    rule: 'MustRunAs'
    ranges:
      - min: 1
        max: 65535
  volumes:
    - 'configMap'
    - 'emptyDir'
    - 'projected'
    - 'secret'
    - 'downwardAPI'
    - 'persistentVolumeClaim'
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-nfs-pvc
  labels:
    app: "mysql"
    component: "mysql"
    chart: "mysql-0.1"
    release: "mysql"
    heritage: "Helm"
spec:
  storageClassName: mysql-sc
  accessModes:
  - ReadWriteMany
  resources:
    requests:
      storage: 500Mi
apiVersion: v1
kind: ServiceAccount
metadata:
  name: mysql-sa
  labels:
    app: mysql
    chart: mysql-0.1
    release: mysql
    heritage: helm
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: mysql-sc
  labels:
    app: "mysql"
    component: "mysql"
    chart: "mysql-0.1"
    release: "mysql"
    heritage: "Helm"
provisioner: fuseim.pri/ifs
reclaimPolicy: Retain

apiVersion: v1
kind: Service
metadata:
  name: mysql-svc
  labels:
    app: "mysql"
    component: "mysql"
    chart: "mysql-0.1"
    release: "mysql"
    heritage: "Helm"
spec:
 selector:  
   app: mysql
   release: mysql
 type: NodePort
 ports:
 -  name: tcp
    port: 3306      
    targetPort: 3306

template文件:

[root@master01 templates]# cat ./*
{{- if .Values.rbac.create}}
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: {{include "mysql.fullname" .}}-binding
  labels:{{include "mysql.labels" .|nindent 4}}
roleRef:
  kind: ClusterRole
  name: {{include "mysql.fullname" .}}-clusterrole
  apiGroup: rbac.authorization.k8s.io
subjects:
- kind: ServiceAccount
  name: {{include "mysql.fullname" .}}-sa
  namespace: {{.Release.Namespace}}
{{- end}}
{{- if .Values.rbac.create}}
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: {{include "mysql.fullname" .}}-clusterrole
  labels:{{include "mysql.labels" .|nindent 4}}
rules:
- apiGroups: ['policy']
  resources: ['podsecuritypolicies']
  verbs:     ['use']
{{- end}}
apiVersion: v1
data:
  my.cnf: |
    [mysqld]
    skip-name-resolve
    port=3306
    innodb_file_per_table = 1
kind: ConfigMap
metadata:
  name: {{include "mysql.fullname" .}}-configmap
  labels:{{include "mysql.labels" .|nindent 4}}
apiVersion: {{include "deployment.apiVersion" .}}
kind: Deployment
metadata:
  name: {{include "mysql.fullname" .}}
  labels:{{include "mysql.labels" .|nindent 4}}
spec:
  progressDeadlineSeconds: {{.Values.deployment.progressDeadlineSeconds}}
  {{- if .Values.deployment.strategy}}
  strategy:{{toYaml .Values.deployment.strategy|nindent 4}}
  {{- end}}
  revisionHistoryLimit: {{.Values.deployment.revisionHistoryLimit}}
  selector:
    matchLabels: {{include "mysql.selectorLabels" .|nindent 6}}
  replicas: {{.Values.deployment.replicaCount}}
  template:
    metadata:
      labels: {{include "mysql.labels" .|nindent 8}}
    spec:
     {{- if .Values.deployment.tolerations}}
      tolerations:{{toYaml .Values.deployment.tolerations|nindent 8}}
     {{- end}}
      serviceAccountName: {{include "mysql.serviceAccountName" .}}
      terminationGracePeriodSeconds: {{.Values.deployment.terminationGracePeriodSeconds}}
      containers:
      - name: mysql
        image: {{.Values.deployment.image.repository}}:{{.Values.deployment.image.tag}}
        imagePullPolicy: {{.Values.deployment.image.pullPolicy}}
        ports:
        - containerPort: 3306
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: {{.Values.deployment.mysql_root_password|quote}}
        {{- if .Values.deployment.readinessProbe}}
        readinessProbe:
          exec:
            command:
            - sh
            - -c
            - "mysqladmin ping -u root -p${MYSQL_ROOT_PASSWORD}"
          initialDelaySeconds: {{.Values.deployment.readinessProbe.initialDelaySeconds}}
          periodSeconds: {{.Values.deployment.readinessProbe.periodSeconds}}
          timeoutSeconds: {{.Values.deployment.readinessProbe.timeoutSeconds}}
          successThreshold: {{.Values.deployment.readinessProbe.successThreshold}}
          failureThreshold: {{.Values.deployment.readinessProbe.failureThreshold}}
        {{- end}}
        {{- if .Values.deployment.livenessProbe}}
        livenessProbe:
          exec:
            command:
            - sh
            - -c
            - "mysqladmin ping -u root -p${MYSQL_ROOT_PASSWORD}"
          initialDelaySeconds: {{.Values.deployment.livenessProbe.initialDelaySeconds}}
          periodSeconds: {{.Values.deployment.livenessProbe.periodSeconds}}
          timeoutSeconds: {{.Values.deployment.livenessProbe.timeoutSeconds}}
          successThreshold: {{.Values.deployment.livenessProbe.successThreshold}}
          failureThreshold: {{.Values.deployment.livenessProbe.failureThreshold}}
        {{- end}}
        {{- if .Values.deployment.resources}}
        resources:{{toYaml .Values.deployment.resources|nindent 10}}
        {{- end}}
        {{- if .Values.deployment.securityContext}}
        securityContext:{{toYaml .Values.deployment.securityContext|nindent 10}}
        {{- end}}
        volumeMounts:
        - mountPath: /var/lib/mysql 
          name: data
        - name: configurations
          mountPath: /etc/mysql/conf.d/
          subPath: mysql.cnf
      volumes:
      - name: data
        persistentVolumeClaim:
          claimName: {{include "mysql.fullname" .}}-pvc
      - name: configurations
        configMap:
          name: {{include "mysql.fullname" .}}-configmap
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "mysql.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
{{- end -}}

{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "mysql.fullname" -}}
{{- if .Values.fullnameOverride -}}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- if contains $name .Release.Name -}}
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{- end -}}
{{- end -}}

{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "mysql.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
{{- end -}}

{{/*
Common labels
*/}}
{{- define "mysql.labels" -}}
helm.sh/chart: {{ include "mysql.chart" . }}
{{ include "mysql.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end -}}

{{/*
Selector labels
*/}}
{{- define "mysql.selectorLabels" -}}
app.kubernetes.io/name: {{ include "mysql.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end -}}

{{/*
Create the name of the service account to use
*/}}
{{- define "mysql.serviceAccountName" -}}
{{- if .Values.serviceAccount.create -}}
    {{ default (include "mysql.fullname" .) .Values.serviceAccount.name }}
{{- else -}}
    {{ default "default" .Values.serviceAccount.name }}
{{- end -}}
{{- end -}}

{{/*
Return the appropriate apiVersion for deployment.
*/}}
{{- define "deployment.apiVersion" -}}
{{- if semverCompare ">=1.9-0" .Capabilities.KubeVersion.GitVersion -}}
{{- print "apps/v1" -}}
{{- else -}}
{{- print "extensions/v1beta1" -}}
{{- end -}}
{{- end -}}

{{/*
Return the appropriate apiGroup for PodSecurityPolicy.
*/}}
{{- define "podSecurityPolicy.apiGroup" -}}
{{- if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}}
{{- print "policy" -}}
{{- else -}}
{{- print "extensions" -}}
{{- end -}}
{{- end -}}

{{/*
Return the appropriate apiVersion for podSecurityPolicy.
*/}}
{{- define "podSecurityPolicy.apiVersion" -}}
{{- if semverCompare ">=1.10-0" .Capabilities.KubeVersion.GitVersion -}}
{{- print "policy/v1beta1" -}}
{{- else -}}
{{- print "extensions/v1beta1" -}}
{{- end -}}
{{- end -}}
{{- if .Values.hpa.create}}
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: {{include "mysql.fullname" .}}-hpa
  labels:{{include "mysql.labels" .|nindent 4}}
spec:
  scaleTargetRef:
    apiVersion: {{include "deployment.apiVersion" .}}
    kind: Deployment
    name: {{include "mysql.fullname" .}}
  minReplicas: {{.Values.hpa.minReplicas}}
  maxReplicas: {{.Values.hpa.maxReplicas}}
  targetCPUUtilizationPercentage: {{.Values.hpa.targetCPUUtilizationPercentage}}
{{- end}}
1. Get the application URL by running these commands:
{{-  if contains "NodePort" .Values.service.type }}
  export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "mysql.fullname" . }})
  export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
  echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.service.type }}
     NOTE: It may take a few minutes for the LoadBalancer IP to be available.
           You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "mysql.fullname" . }}'
  export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "mysql.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
  echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
  export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "mysql.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
  echo "Visit http://127.0.0.1:8080 to use your application"
  kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:80
{{- end }}
{{- if and .Values.pdb.create (or (gt (.Values.deployment.replicaCount|int) 1) .Values.hpa.create )}}
apiVersion: policy/v1beta1  
kind: PodDisruptionBudget  
metadata:  
  name: {{include "mysql.fullname" .}}-pdb
  labels: {{include "mysql.labels" .|nindent 4}}
spec:  
  minAvailable: {{.Values.pdb.minAvailable}}
  selector:  
    matchLabels:{{include "mysql.selectorLabels" .|nindent 6}}  
{{- end}}
{{- if .Values.psp.create}}
apiVersion: {{include "podSecurityPolicy.apiVersion" .}}
kind: PodSecurityPolicy
metadata:
  name: {{include "mysql.fullname" .}}-psp
  labels: {{include "mysql.labels" .|nindent 4}}
spec:
  runAsUser:
    rule: 'RunAsAny'
  seLinux:
    rule: 'RunAsAny'
  supplementalGroups:
    rule: 'MustRunAs'
    ranges:
      - min: 1
        max: 65535
  fsGroup:
    rule: 'MustRunAs'
    ranges:
      - min: 1
        max: 65535
  volumes:
    - 'configMap'
    - 'emptyDir'
    - 'projected'
    - 'secret'
    - 'downwardAPI'
    - 'persistentVolumeClaim'
{{- end}}
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: {{include "mysql.fullname" .}}-pvc
  labels: {{include "mysql.labels" .|nindent 4}}
spec:
  storageClassName: {{include "mysql.fullname" .}}-sc
  accessModes:{{toYaml .Values.pvc.accessModes|nindent 2}}
  resources:
    requests:
      storage: {{.Values.pvc.storage}}
{{- if .Values.serviceAccount.create}}
apiVersion: v1
kind: ServiceAccount
metadata:
  name: {{include "mysql.fullname" .}}-sa
  labels: {{include "mysql.labels" .|nindent 4}}
{{- end}}
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: {{include "mysql.fullname" .}}-sc
  labels: {{include "mysql.labels" .|nindent 4}}
provisioner: {{.Values.sc.provisioner}}
reclaimPolicy: {{.Values.sc.reclaimPolicy}}

apiVersion: v1
kind: Service
metadata:
  name: {{include "mysql.fullname" .}}-svc
  labels: {{include "mysql.labels" .|nindent 4}}
spec:
 selector:{{include "mysql.selectorLabels" .|nindent 4}}
 {{- if eq .Values.service.type "NodePort"}}  
 type: NodePort
 ports:
 -  name: tcp
    port: 3306      
    targetPort: 3306
    {{- if .Values.service.nodePort}}
    nodePort: {{.Values.service.nodePort}}
    {{- end}}
 {{- else if eq .Values.service.type "ClusterIP"}}
 ports:
 -  name: tcp
    port: 3306
    targetPort: 3306
 {{- end}}

k8s use-context是什么 kubectl的命令用于在 Kubernetes 集群中切换上下文(context),从而方便地在多个集群或命名空间之间进行操作。一个上下文定义了kubectl使用的和的组合。 阅读详情

相关推荐

Kubernetes部署Jenkins核心避坑指南:PVC权限、RBAC与Ingress实战

Jenkins作为经典CI/CD工具,在Kubernetes上运行并非简单容器化,而是需适配云原生基础设施的有状态应用治理过程。其本质涉及持久化存储(PersistentVolumeClaim)的权限控制、基于ServiceAccount与RoleBinding的最小化RBAC授权、以及通过Ingress实现的安全暴露机制。技术价值在于保障构建稳定性、提升多租户隔离性与企业级安全合规能力。典型应用场景包括金融行业灰度发布流水线、混合云CI集群统一纳管、以及GitOps驱动的自动化交付链路。本文聚焦Jenki

weixin_34160277的博客 468

k8s实战之kubectl

本课程将详细介绍k8s所有命令,以及命令的go源码分析,学习知其然,知其所以然

Kubernetes Kubectl top 命令

kubectl top命令可显⽰节点和Pod对象的资源使⽤信息,它依赖于集群中的资源指标API来收集各项指标数据。它包含有node和pod两个⼦命令,可分别⽤于显⽰Node对象和Pod对象的相关资源占⽤率。,例如下⾯显⽰所有节点的资源占⽤状况的结果中显⽰了各节点累计CPU资源占⽤时长及百分⽐,以及内容空间占⽤量及占⽤⽐例。⽽名称空间级别的Pod对象资源占⽤率的使⽤⽅式会略有不同,使⽤时,⼀般应该限定名称空间及使⽤标签选择器过滤出⽬标Pod对象。列出Node资源占⽤率命令的语法格式为。

专注基础架构领域 2551

helm源码分析之pull

发布一个k8s部署视频:https://edu.csdn.net/course/detail/26967 课程内容:各种k8s部署方式。包括minikube部署,kubeadm部署,kubeasz部署,rancher部署,k3s部署。包括开发测试环境部署k8s,和生产环境部署k8s。 腾讯课堂连接地址https://ke.qq.com/course/478827?taid=4373109931462251&tuin=ba64518 第二个视频发布https://edu.csdn.net/c..

mark's technic world 1370

Windows下用Anaconda安装d2l库避坑指南(附PermissionError解决方案)

本文详细介绍了在Windows系统下使用Anaconda安装d2l库的完整指南,特别针对常见的PermissionError问题提供了多种解决方案。从环境准备到库安装,再到VSCode配置和数据路径处理,帮助读者顺利搭建深度学习环境并运行《动手学深度学习》的代码示例。

3a9bq4r8t2y的博客 226

Android逆向进阶篇 Charles + Drony Vpn绕过代理检测方案 获取猫眼App数据

Android逆向进阶篇 Charles + Drony Vpn绕过代理检测方案 获取猫眼App数据

曾用名:极客柒 1853

Helm 下篇:手写 Chart —— 从模板到生产实践

上篇我会用现成的 Chart 装、升、回滚了。但说实话,那感觉像"会用 npm install 但没写过 package.json"。真正要用好 Helm,得自己会写 Chart。这篇把我从"会装"到"会写"的过程记下来,顺便把几个之前含糊的机制彻底抠清楚。

Zoeww_0319的博客 384

MATLAB打开.m文件乱码解决办法

Matlab打开.m文件出现中文乱码问题,是因为Matlab存在两种编码格式:GBK和UTF-8,而不同版本的Matlab编码格式可能不统一,因此在不同版本的Matlab打开文件,由于编码格式的改变,会导致注释乱码。 1.查看你的Matlab的文件编码方式,在Matlab的命令行窗口输入feature('locale') ,如下图,可以看到默认编码为GBK,那问题就变成了将Matlab的文件编码方式GBK修改成UTF-8; 2.找到你的Matlab安装目录bin文件夹下的lcdata_utf.

zhugby的博客 4万+

Helm 3 从零手写 Redis 高可用 Chart 实战指南

Kubernetes 应用部署中,YAML 配置管理复杂且易错,Helm 作为包管理工具通过 Chart 模板化、Values 参数化和 Release 版本化,显著提升部署效率与可维护性。其核心原理是将一组资源对象打包,实现依赖管理、一键升级回滚。在微服务与中间件场景下,Helm 能快速部署 Redis 高可用集群,结合 StatefulSet 与 Sentinel 实现自动故障转移。本文围绕 Helm Chart 编写,深入讲解 Redis 高可用集群的模板设计、部署验证与避坑实践。

weixin_32466193的博客 300

解决 PyInstaller 与 `pathlib` 包不兼容的问题

为了避免 PyInstaller 和pathlib包的兼容性问题,最简单的解决办法就是卸载不必要的pathlib包。只需在命令行中运行卸载命令,然后重新打包即可。

Winfredzhang的博客 3227

揭秘Synopsys EDA中的AI黑科技:DSO.ai如何改变传统芯片设计流程

本文深入探讨了Synopsys EDA中的AI黑科技DSO.ai如何革新传统芯片设计流程。通过数据驱动的方法论、功耗优化革命和时序收敛智能加速,DSO.ai显著提升了设计效率和质量,实现了从经验驱动到AI驱动的范式转变。文章还提供了实战指南,帮助团队跨越AI EDA的实施鸿沟。

weixin_29296241的博客 527

从手写 YAML 到一键发布:Helm 包管理与应用发布实战(Chart 编写、values 覆盖、版本回滚、私有仓库完整记录)

事情是这样来的。用 K3s 把集群搭起来、证书也自动签好之后,我以为部署这块已经顺了。集群是好用了,但我的部署方式还停留在“手写一堆 YAML 然后”的阶段。一开始不觉得有什么。架个服务嘛,写个 Deployment、再来个 Service、要外网访问就加个 Ingress,三四个文件,一下,完事。同一个应用,一堆文件。Deployment、Service、Ingress、ConfigMap、Secret……散在一个目录里,改个镜像版本要翻好几个文件。改一处配置,要动好几个地方。

uxuuid的博客 187

RK3568平台开发系列讲解(UBOOT篇)u-boot启动流程

U-Boot(Universal Bootloader)是一种开源的引导加载程序,广泛用于嵌入式系统中。它的主要功能是初始化硬件设备,加载操作系统内核,并将控制权交给操作系统。U-Boot的启动流程可以分为多个阶段,以下是典型的U-Boot启动流程:

内核笔记 1237

Cursor AI图表生成:为什么你的团队还在手写Chart.js?这7个隐藏指令让交付效率翻3倍

Cursor AI图表生成帮你告别手写Chart.js,7个隐藏指令一键生成动态可视化图表。适用于前端开发、数据看板与敏捷交付场景,支持自然语言描述转代码,提升图表开发效率3倍。减少重复编码,增强团队协作一致性,值得收藏。

InitFlow的博客 138

SAP HANA CDS View Syntax Options 全解:从语法到工程实践

本文面向SAP HANA工程师,深入解析CDS视图的语法与应用场景。文章涵盖XS Advanced环境下的CDS视图设计要点,包括SELECT基础语法、聚合函数与分组约束、参数化视图实现以及常见连接操作。特别强调工程实践中的注意事项:GROUP BY禁用表达式、原生表名大小写规范、结果集裁剪方式选择等。通过两个真实案例(办公室占用率统计和客户画像分析)展示CDS视图在实际业务中的应用,并提供性能优化建议。全文采用中英文混排规范,技术术语使用反引号标注,旨在为开发者提供清晰的CDS视图开发指南。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 215

3大绝招!MySQL如何轻松搞定文本、图像和视频的多模态数据分析?

首先,让我们来了解一下“多模态”到底是什么意思。简单来说,多模态指的是能够同时处理不同类型数据(如文本、图像、音频等)的能力。传统的数据库往往只能专注于一种或几种特定类型的数据,比如关系型数据库主要处理结构化数据,而文档型数据库则更适合非结构化数据。但是现在,随着技术的进步,像MySQL这样的数据库也开始支持更加复杂的数据模型,允许我们在同一个系统内处理多种格式的数据。通过上述五个部分的详细介绍,相信你现在应该对如何利用MySQL进行多模态数据分析有了更清晰的认识。

java专栏 2116

如何手写代码以生成Composite图表?

  前段写的博文介绍了用图表向导创建ColumnLineChart的整个过程,ColumnLineChart归属于简单图表,用类似的向导步骤可创建出复合图表,相关步骤可参考:Chart_Creating_a_Composite_Chart_Using_the_ Chart_Wizard既然可通过向导全程定制Composite Chart,那么用书写代码的方式来生成Composite Chart

lijigang1982的专栏 1207

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Helm实践指南:从YAML部署管理到企业私有Chart仓库搭建

在Kubernetes集群规模不断扩大的背景下,大量YAML文件的维护与版本同步成为运维效率的瓶颈。Helm作为Kubernetes生态的包管理工具,通过Chart打包、模板渲染与Release版本管理三大核心机制,将分散的资源文件转化为可配置、可复用、可回滚的部署单元,有效解决多环境配置差异和发布失控问题。其模板语法支持动态注入镜像地址、副本数等参数,使同一套Chart轻松适配测试、预发、生产环境;配合版本记录与一键回滚,显著降低线上变更风险。在企业落地场景中,Helm还常与CI/CD流水线集成,并借助C

weixin_31412781的博客 235

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Meshery 实战指南:可视化编排 Jira Service Desk Operator,彻底告别手写 YAML

要同时管十个 Jira 服务台项目,过去你得手写十几份 YAML,翻 REST API 文档,对着字段表逐格填空。用 **Meshery** 接入 **Jira Service Desk Operator** 模型,这件事变成在**画布**上拖两个组件、填两张表单,Jira 服务台的项目和客户就这么管起来了。 ## 它到底帮你省了什么 这个模型不是 Meshery 团队从零手写的一套表单,而是

gitblog_00015的博客 233

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【限时解禁】2026奇点大会未公开议程片段流出:微软+OpenAI联合实验室现场演示AI自动修复K8s Helm Chart错误并生成合规审计报告——你还在手写YAML吗?

AI原生持续交付新范式:微软+OpenAI联合实验室将在2026奇点智能技术大会:AI原生持续交付上现场演示AI自动修复K8s Helm Chart错误并生成合规审计报告,大幅提升云原生运维效率与安全性。告别手写YAML,实现开发-部署-审计全链路智能化,值得收藏。

BreakNexus的博客 319

Simulink建模基础: 通过Stateflow调用外部C代码

本文描述通过通过Stateflow调用外部C代码调用外部C代码的方法。 文章目录1 问题引入2 调用外部C代码的过程2.1 准备外部文件2.2 搭建模型2.3 生成代码3 调用有参数和返回的函数4 总结 1 问题引入 情形1:在汽车嵌入式软件开发的过程中,通常是用模型生成代码的方式开发应用层软件,用手写代码的方式开发底层软件和接口函数。应用层经常需要调用到底层的函数,比如应用层通过接口函数获取底层...

u013288925的博客 1万+

html-anything 的 NYT 风数据图表帧技能(frame-data-chart-nyt):一段结论 + CSV 数据,生成《纽约时报》级编辑图表

本篇文章围绕 html-anything 仓库内置技能 **frame-data-chart-nyt(NYT 风数据图表帧)** 展开,以该技能自带的示例输入文档 [example.md](https://link.gitcode.com/i/6aecc36fc5d496224a519d7631d039b3) 为主线,结合同目录的 [SKILL.md](https://link.gitcode.c

gitblog_00128的博客 169

当Dify遇上可视化图表MCP(AntV),数据展示像呼吸一样简单——用mcp-server-chart让AI动态生成图表不再是难题

用mcp-server-chart让Dify工作流动态出图:先配TaoToken模型供应商,再注册AntV的MCP图表服务,三步验证连通性与多轮更新。含可复制JSON配置与401、local proxy failed等报错排查,官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 。

weixin_42581003的博客 5

数据可视化实战指南:Cursor + MCP Server Chart + Netlify 从图表生成到部署上线

在 Cursor 中接入 MCP Server Chart,用自然语言把 CSV 生成饼图、柱状图并拼成 HTML 报告,再拖到 Netlify 上线,十分钟拿到可分享链接。文中给出 Windows/Mac 配置、401 与 local proxy failed 等报错排查,模型端点可配 TaoToken,官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 。

weixin_42613018的博客 180

ToolJet 十分钟从零搭建低代码内部工具

后台表单、数据报表、管理面板,每次有需求都得现写一套增删改查,排期常常拖到两周。ToolJet 是一个开源低代码平台:60 多个现成组件拖放组合,连上数据库和 API 就能出应用,专门吃内部工具这块肉。 ## 🏃 从零启动 只需装好 Docker,跑一个容器: ```bash docker run \ --name tooljet \ -p 80:80 \ -v tooljet

gitblog_00289的博客 439

数据可视化仪表盘:一个 option,一张专业图表

geejing WebBuilder 快速开发平台的答案是:图表就是一个组件(Wb.Chart),往页面里一放,把 ECharts 的配置粘进去,图就出来了。几乎每个新手都会遇到这个需求:"给领导做个数据看板,有图表、有数字、能刷新。打开示例,你会看到一张深色背景的数据看板:面积图、折线图、柱状图、环形百分比图、仪表盘、玫瑰图、饼图,中间还嵌着一张可以翻页的员工数据表格。配合窗口组件做"钻取"也很自然:给图表加一个点击事件,用户点了饼图的某一块,就弹窗显示那部分的明细表格——事件、窗口、表格。

m0_60539919的博客 274
上一篇: helm chart函数
下一篇: kubectl源码分析之总体
hxpjava1
博客等级 码龄19年 1365粉丝 511原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

hxpjava1

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

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

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

打赏作者

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

抵扣说明:

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

余额充值