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.