Я работаю над развертыванием в GKE, это мое первое развертывание, поэтому я новичок в этих концепциях, но я понимаю, куда они идут с инструментами, просто нужен опыт, чтобы быть уверенным.
Во-первых, у меня есть кластер с пятью службами, две из которых я хочу предоставить через внешний балансировщик нагрузки. Я определил аннотацию для Gcloud, чтобы настроить их при балансировке нагрузки, и, похоже, она работает. Я также установил аннотацию для настройки групп конечных точек сети для служб. Вот как он настроен, как в манифестах развертывания и обслуживания.
---
#api-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
kompose.cmd: kompose convert -f ./docker-compose.yml
kompose.version: 1.21.0 ()
creationTimestamp: null
labels:
io.kompose.service: api
name: api
spec:
replicas: 1
selector:
matchLabels:
io.kompose.service: api
strategy:
type: Recreate
template:
metadata:
annotations:
kompose.cmd: kompose convert -f ./docker-compose.yml
kompose.version: 1.21.0 ()
creationTimestamp: null
labels:
io.kompose.service: api
spec:
containers:
- args:
- bash
- -c
- node src/server.js
env:
- name: NODE_ENV
value: production
- name: TZ
value: America/New_York
image: gcr.io/<PROJECT_ID>/api
imagePullPolicy: Always
name: api
ports:
- containerPort: 8087
resources: {}
restartPolicy: Always
serviceAccountName: ""
status: {}
---
#api-service.yaml
apiVersion: v1
kind: Service
metadata:
annotations:
cloud.google.com/load-balancer-type: "Internal"
cloud.google.com/neg: '{"ingress": true}'
creationTimestamp: null
labels:
io.kompose.service: api
name: api
spec:
type: LoadBalancer
ports:
- name: "8087"
port: 8087
targetPort: 8087
status:
loadBalancer: {}
Я думаю, что здесь может отсутствовать какая-то конфигурация, но я не уверен.
Я также видел, где я могу определить проверки живучести в yaml, добавив
livenessProbe:
httpGet:
path: /healthz
port: 8080
У меня также мой вход настроен следующим образом:
---
# master-ingress.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: master-application-ingress
annotations:
ingress.kubernetes.io/secure-backends: "true"
spec:
rules:
- http:
paths:
- path: /api
backend:
serviceName: api
servicePort: 8087
- http:
paths:
- path: /ui
backend:
serviceName: ui
servicePort: 80
и я видел это там, где ему просто нужен порт для проверок TCP, но я уже определил их в своем приложении и в балансировщике нагрузки. Думаю, я хочу знать, где мне следует определять эти проверки.
Кроме того, у меня проблема с NEG, созданным пустой аннотацией, или это нормально с NEG, созданным в манифесте?