Skip to content

Using OneChart ​

ในหัวข้อนี้จะเป็นการอธิบาย helm values ของ onechart ที่ใช้ภายของ Opstella ดังตัวอย่าง

nameOverride: component-develop
fullnameOverride: consultant-cloud2-service-component-develop
replicas: 1
image:
  repository: registry.demo2.opstella.in.th/consultant-cloud2-service-component/component
  tag: develop-7232e482
  pullPolicy: Always
imagePullSecrets:
  - image-consultant-cloud2-service
containerPort: 3000
resources:
  requests:
    cpu: 10m
    memory: 10Mi
  limits:
    cpu: 500m
    memory: 500Mi
ingress:
  tlsEnabled: true
  secretName: wildcard-cert-opstella-tls
  host: consultant-cloud2-service-component.dev.demo2.opstella.in.th
  ingressClassName: nginx
podSecurityContext: {}
existingFileSecrets:
  - name: component
    path: /etc/config/secret/opstella.txt
    subPath: opstella.txt
secretName: component

รายละเอียด ​

จากรูปแต่ละพารามิเตอร์ใช้กำหนดค่าของ container ดังต่อไปนี้

nameOverride ​

เป็นการตั้งชื่อของ resource แทนชื่อ chart แต่ยังมี release ซึ่งจะกลายเป็นชื่อของ pod, service, deployment และ replicaset เช่น

ตัวอย่าง กำหนด nameOverride ชื่อ my-custom-name

replicaCount: 2

image:
  repository: my-image
  tag: "latest"
  pullPolicy: IfNotPresent

nameOverride: "my-custom-name"

ลองดู resource

kubectl get all

nameOverride ที่กำหนดจะกลายเป็นชื่อต่อจาก release

NAME                                              READY   STATUS    RESTARTS   AGE
pod/release-my-custom-name-<hash>                 1/1     Running   0          5m

NAME                                              TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
service/release-my-custom-name                    ClusterIP   10.0.0.1     <none>        80/TCP    5m

NAME                                              READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/release-my-custom-name            1/1     1            1           5m

NAME                                              DESIRED   CURRENT   READY   AGE
replicaset.apps/release-my-custom-name-<hash>     1         1         1       5m

fullnameOverride ​

เป็นการตั้งชื่อของ resource แทนชื่อ chart และ release ซึ่งจะกลายเป็นชื่อของ pod, service, deployment และ replicaset เช่น

ตัวอย่าง กำหนด fullnameOverride ชื่อ my-custom-name

replicaCount: 2

image:
  repository: my-image
  tag: "latest"
  pullPolicy: IfNotPresent

fullnameOverride: "my-custom-name"

ลองดู resource

kubectl get all

fullnameOverride ที่กำหนดจะกลายเป็นชื่อแทน release

NAME                                              READY   STATUS    RESTARTS   AGE
pod/my-custom-name-<hash>                         1/1     Running   0          5m

NAME                                              TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
service/my-custom-name                            ClusterIP   10.0.0.1     <none>        80/TCP    5m

NAME                                              READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/my-custom-name                    1/1     1            1           5m

NAME                                              DESIRED   CURRENT   READY   AGE
replicaset.apps/my-custom-name-<hash>             1         1         1       5m

ในกรณีที่มีการกำหนดทั้ง nameOverride และ fullnameOverride จะใช้ fullnameOverride โดยข้ามการใช้ nameOverride

replicas ​

จำนวน pods ที่ต้องการให้สร้างขึ้น

image ​

ส่วนสำหรับระบุชื่อ image สำหรับสร้าง container ขึ้นมา - repository ดึง image อะไร สามารถใช้เป็นชื่อ หรือ path ที่เก็บ image - tag ให้ดึง image จาก tag อะไร ในกรณีที่ image มีหลาย tag หรือหลายเวอร์ชั่น tag จะช่วยให้ระบุเฉพาะเจาะจงได้ กรณีที่ไม่ใส่ tag จะดึง image ที่ tag ล่าสุดมา - pullPolicy กำหนดคุณลักษณะการ pull image (IfNotPresent, Always, Never)

imagePullSecrets ​

สำหรับระบุ secret ของที่ใช้สำหรับเข้าถึง private image registry เพื่อใช้ในการ pull image

containerPort ​

ใช้กำหนดว่าเชื่อมกับ port ไหนของ container

resources ​

กำหนด resources request และ resources limit สำหรับ container ใน pod - requests กำหนด resources request - cpu ระบุปริมาณ CPU ที่ Container ต้องการใช้ - memory ระบุปริมาณ RAM ที่ Container ต้องการใช้ - limits กำหนด resources limit - cpu ระบุปริมาณ CPU ที่ Container สามารถใช้ได้สูงสุด - memory ระบุปริมาณ RAM ที่ Container สามารถใช้ได้สูงสุด

Ingress ​

- **tlsEnabled** เปิดการใช้ tls
- **secretName** ชื่อ Secret ที่เก็บ Cert ของ tls
- **host** กำหนดโดเมนที่จะให้เข้าสู่ application ใน pod
- **ingrssClassName** กำหนด class ของ ingress เพื่อบอกให้จัดการแบบใด

podSecurityContext ​

กำหนดคุณสมบัติความปลอดภัยของ pod เช่น fsGroup, runAsUser หรือ supplementalGroups เช่น

podSecurityContext:
  runAsUser: 1000
  fsGroup: 2000
  supplementalGroups:
    - 3000
  • runAsUser: กำหนด user ID ที่จะใช้ในการรัน Container ภายใน Pod (เช่น 1000)
  • fsGroup: กำหนด group ID ที่จะใช้ในการกำหนด file system group ใน Container ภายใน Pod (เช่น 2000)
  • supplementalGroups: กำหนด supplemental groups ที่เพิ่มเติมสำหรับ Pod (เช่น [3000])

existingFileSecrets ​

เรืยก Secret แบบไฟล์ที่มีอยู่แล้ว - name - path - subPath

secretName ​

เรียก Secret แบบชื่อ โดยจะเรียกตามชื่อที่กำหนด และอยู่ใน namespace เดียวกัน

สามารถดูพารามิเตอร์อื่นๆ ได้ที่ Onechart

We build Enterprise Platform Engineering to digitalized transform your organization into a DevSecOps culture.