Update Standard OneChart Helm Values
จากที่ได้กล่าวไปในหัวข้อ Using CD ที่ Application ที่นำมา Deploy ผ่าน Opstella จะใช้ OneChart เป็นค่าเริ่มต้น
ในหัวข้อนี้จะอธิบาย Helm Values ที่ Opstella จะจัดเตรียมไว้ให้ เพื่อนำ Application ขึ้น Deploy กับ ArgoCD ด้วย Helm Chart ได้
nameOverride: <component>-developfullnameOverride: <company>-<platform>-<service>-<component>-developreplicas: 1image: repository: registry.CHANGEME.com/<company>-<platform>-<service>-<component>/<component> tag: develop-abc123de pullPolicy: AlwaysimagePullSecrets: - image-<company>-<platform>-<service>containerPort: 3000resources: requests: cpu: 10m memory: 10Mi limits: cpu: 500m memory: 500Miingress: tlsEnabled: true secretName: <tls-secret-name> host: <application-domain> ingressClassName: nginxpodSecurityContext: {}existingFileSecrets: - name: <component> path: /etc/config/secret/opstella.txt subPath: opstella.txtsecretName: <component>Commonly Used Helm Values
Section titled “Commonly Used Helm Values”nameOverride
Section titled “nameOverride”เป็นการตั้งชื่อของ Resource แทนชื่อ Chart แต่ยังมี Release ซึ่งจะกลายเป็นชื่อของ Kubernetes Pod, Service, Deployment และ ReplicaSet
ตัวอย่าง
กำหนด nameOverride ชื่อ my-custom-name
... (deducted)
nameOverride: my-custom-name
... (deducted)นำไป Deploy และ ดู Resource ที่เกิดขึ้น
kubectl get allnameOverride ที่กำหนดจะกลายเป็นชื่อต่อจาก Release
NAME READY STATUS RESTARTS AGEpod/release-my-custom-name-<hash> 1/1 Running 0 5m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEservice/release-my-custom-name ClusterIP 10.0.0.1 <none> 80/TCP 5m
NAME READY UP-TO-DATE AVAILABLE AGEdeployment.apps/release-my-custom-name 1/1 1 1 5m
NAME DESIRED CURRENT READY AGEreplicaset.apps/release-my-custom-name-<hash> 1 1 1 5mfullnameOverride
Section titled “fullnameOverride”เป็นการตั้งชื่อของ Resource แทนชื่อ chart และ release ซึ่งจะกลายเป็นชื่อของ pod, service, deployment และ replicaset เช่น
ตัวอย่าง
กำหนด fullnameOverride ชื่อ my-custom-name
... (deducted)
fullnameOverride: my-custom-name
... (deducted)นำไป Deploy และ ดู Resource ที่เกิดขึ้น
kubectl get allfullnameOverride ที่กำหนดจะกลายเป็นชื่อแทน Release
NAME READY STATUS RESTARTS AGEpod/my-custom-name-<hash> 1/1 Running 0 5m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEservice/my-custom-name ClusterIP 10.0.0.1 <none> 80/TCP 5m
NAME READY UP-TO-DATE AVAILABLE AGEdeployment.apps/my-custom-name 1/1 1 1 5m
NAME DESIRED CURRENT READY AGEreplicaset.apps/my-custom-name-<hash> 1 1 1 5mreplicas
Section titled “replicas”จำนวน Pods ที่ต้องการให้สร้างขึ้น โดยกำหนดเป็นตัวเลข
replicaCount: 3
... (deducted)นำไป Deploy และ ดู Resource ที่เกิดขึ้น
kubectl get allNAME READY STATUS RESTARTS AGEpod/my-custom-name-<hash> 3/3 Running 0 Xm ... (deducted)
image: repository: registry.CHANGEME.com/<company>-<platform>-<service>-<component>/<component> tag: develop-abc123de pullPolicy: Always
... (deducted)ส่วนสำหรับระบุชื่อ Image สำหรับสร้าง Container ขึ้นมา
repositoryดึง Image อะไร สามารถใช้เป็นชื่อ หรือ Path ที่เก็บ Imagetagให้ดึง Image จาก Tag อะไร ในกรณีที่ Image มีหลาย Tag หรือหลายเวอร์ชั่น Tag จะช่วยให้ระบุเฉพาะเจาะจงได้ กรณีที่ไม่ใส่ Tag จะดึง Image ที่ Tag ล่าสุดมา (latest)pullPolicyกำหนดคุณลักษณะการ Pull Image (IfNotPresent, Always, Never)IfNotPresent: ทำการดึง Image เมื่อไม่พบ Image บน Worker Node เท่านั้นAlways: ทำการดึง Image ทุกครั้งNever: ไม่ทำการดึง Image เลย
imagePullSecrets
Section titled “imagePullSecrets” ... (deducted)
imagePullSecrets: - image-<company>-<platform>-<service>
... (deducted)สำหรับระบุ Kubernetes Secret ของที่ใช้สำหรับเข้าถึง Private Registry เพื่อใช้ในการ Pull Container Image
containerPort
Section titled “containerPort” ... (deducted)
containerPort: 3000
... (deducted)ใช้กำหนดว่าเชื่อมกับ Port ใดของ Container
resources
Section titled “resources” ... (deducted)
resources: requests: cpu: 10m memory: 10Mi limits: cpu: 500m memory: 500Mi
... (deducted)กำหนด Resources request และ Resources limit สำหรับ container ใน pod
requestsกำหนด Resources ต้องการใช้cpuระบุปริมาณ CPU ที่ Container ต้องการใช้memoryระบุปริมาณ RAM ที่ Container ต้องการใช้
limitsกำหนด Resources สามารถใช้ได้สูงสุดcpuระบุปริมาณ CPU ที่ Container สามารถใช้ได้สูงสุดmemoryระบุปริมาณ RAM ที่ Container สามารถใช้ได้สูงสุด
ingress
Section titled “ingress” ... (deducted)
ingress: tlsEnabled: true host: <application-domain> secretName: <tls-secret-name> ingressClassName: nginx
... (deducted)tlsEnabledเปิดการใช้ TLS กับ IngresssecretNameชื่อ Kubernetes Secret ที่เก็บ TLS Certificatehostกำหนดโดเมนที่จะให้เข้าสู่ ApplicationingrssClassNameกำหนด Class ของ Ingress (ค่าเริ่มต้น ให้ใช้nginx)- เปลี่ยนแปลงก็ต่อเมื่อ Ingress Controller บน Kubernetes มีมากกว่า 1 Controller หรือ ไม่ใช่/ไม่มี
nginx
- เปลี่ยนแปลงก็ต่อเมื่อ Ingress Controller บน Kubernetes มีมากกว่า 1 Controller หรือ ไม่ใช่/ไม่มี
podSecurityContext
Section titled “podSecurityContext”กำหนดคุณสมบัติความปลอดภัยของ pod เช่น fsGroup, runAsUser หรือ supplementalGroups เช่น
... (deducted)
podSecurityContext: runAsUser: 1000 fsGroup: 2000 supplementalGroups: - 3000
... (deducted)runAsUser: กำหนด user ID ที่จะใช้ในการรัน Container ภายใน Pod (เช่น 1000)fsGroup: กำหนด group ID ที่จะใช้ในการกำหนด file system group ใน Container ภายใน Pod (เช่น 2000)supplementalGroups: กำหนด supplemental groups ที่เพิ่มเติมสำหรับ Pod (เช่น [3000])
Other Helm Values
Section titled “Other Helm Values”สามารถดูการตั้งค่า Helm Values อื่นๆ ได้ที่ Helm Charts/OneChart References
Finished?
Use the below navigation to proceed