Kubernetes - การปรับใช้แอป
การทำให้ใช้งานได้คือวิธีการแปลงรูปภาพเป็นคอนเทนเนอร์แล้วจัดสรรรูปภาพเหล่านั้นให้กับพ็อดในคลัสเตอร์ Kubernetes นอกจากนี้ยังช่วยในการตั้งค่าคลัสเตอร์แอปพลิเคชันซึ่งรวมถึงการปรับใช้บริการพ็อดตัวควบคุมการจำลองและชุดการจำลอง คลัสเตอร์สามารถตั้งค่าในลักษณะที่แอปพลิเคชันที่ปรับใช้บนพ็อดสามารถสื่อสารกันได้
ในการตั้งค่านี้เราสามารถมีการตั้งค่าตัวจัดสรรภาระงานที่ด้านบนของแอปพลิเคชันหนึ่งเพื่อเปลี่ยนการรับส่งข้อมูลไปยังชุดของพ็อดและหลังจากนั้นจะสื่อสารกับพ็อดแบ็กเอนด์ การสื่อสารระหว่างพ็อดเกิดขึ้นผ่านออบเจ็กต์บริการที่สร้างขึ้นใน Kubernetes
ไฟล์ Ngnix Load Balancer Yaml
apiVersion: v1
kind: Service
metadata:
name: oppv-dev-nginx
labels:
k8s-app: omni-ppv-api
spec:
type: NodePort
ports:
- port: 8080
nodePort: 31999
name: omninginx
selector:
k8s-app: appname
component: nginx
env: dev
Ngnix Replication Controller Yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: appname
spec:
replicas: replica_count
template:
metadata:
name: appname
labels:
k8s-app: appname
component: nginx
env: env_name
spec:
nodeSelector:
resource-group: oppv
containers:
- name: appname
image: IMAGE_TEMPLATE
imagePullPolicy: Always
ports:
- containerPort: 8080
resources:
requests:
memory: "request_mem"
cpu: "request_cpu"
limits:
memory: "limit_mem"
cpu: "limit_cpu"
env:
- name: BACKEND_HOST
value: oppv-env_name-node:3000
ไฟล์ Yaml บริการส่วนหน้า
apiVersion: v1
kind: Service
metadata:
name: appname
labels:
k8s-app: appname
spec:
type: NodePort
ports:
- name: http
port: 3000
protocol: TCP
targetPort: 3000
selector:
k8s-app: appname
component: nodejs
env: dev
ไฟล์ Yaml ตัวควบคุมการจำลองส่วนหน้า
apiVersion: v1
kind: ReplicationController
metadata:
name: Frontend
spec:
replicas: 3
template:
metadata:
name: frontend
labels:
k8s-app: Frontend
component: nodejs
env: Dev
spec:
nodeSelector:
resource-group: oppv
containers:
- name: appname
image: IMAGE_TEMPLATE
imagePullPolicy: Always
ports:
- containerPort: 3000
resources:
requests:
memory: "request_mem"
cpu: "limit_cpu"
limits:
memory: "limit_mem"
cpu: "limit_cpu"
env:
- name: ENV
valueFrom:
configMapKeyRef:
name: appname
key: config-env
ไฟล์ Yaml บริการแบ็กเอนด์
apiVersion: v1
kind: Service
metadata:
name: backend
labels:
k8s-app: backend
spec:
type: NodePort
ports:
- name: http
port: 9010
protocol: TCP
targetPort: 9000
selector:
k8s-app: appname
component: play
env: dev
ไฟล์ Yaml ตัวควบคุมการจำลองที่สำรองไว้
apiVersion: v1
kind: ReplicationController
metadata:
name: backend
spec:
replicas: 3
template:
metadata:
name: backend
labels:
k8s-app: beckend
component: play
env: dev
spec:
nodeSelector:
resource-group: oppv
containers:
- name: appname
image: IMAGE_TEMPLATE
imagePullPolicy: Always
ports:
- containerPort: 9000
command: [ "./docker-entrypoint.sh" ]
resources:
requests:
memory: "request_mem"
cpu: "request_cpu"
limits:
memory: "limit_mem"
cpu: "limit_cpu"
volumeMounts:
- name: config-volume
mountPath: /app/vipin/play/conf
volumes:
- name: config-volume
configMap:
name: appname