Size: a a a

Kubernetes — русскоговорящее сообщество

2020 November 17

AL

Aleksey Lazarev in Kubernetes — русскоговорящее сообщество
Сначала почитай про helmfile а потом хардкодь то что helmfile сам умеет в helm передавать
источник

СЛ

Сергей Ладутько... in Kubernetes — русскоговорящее сообщество
Старый Хрыч
и разраб вызывая ci, будет вызывать hemlfile и будет обновляться всё что обновилось
А вообще пожешь у слерма про хельм посмотреть и все станет понятно
источник

DV

Dmitriy Vikharev in Kubernetes — русскоговорящее сообщество
всем привет, очень не понимаю как выводить сервис наружу так чтобы днс прописывался автоматические по поддомену
такой ингресс конфиг
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
 labels:
   app: nsq
   component: nsqadmin
 name: nsqadmin
 namespace: nsq
spec:
 backend:
   serviceName: nsqadmin
   servicePort: 80
 rules:
 - host: nsqadmin.host.ru
   http:
     paths:
     - backend:
         serviceName: nsqadmin
         servicePort: 80
       path: /
       pathType: Prefix
 tls:
 - hosts:
   - nsqadmin.host.ru
   secretName: tls-nsq-admin-ingress

после kk apply -f создаётся и pod для генерации сертифика, он висит и ждёт резолва
и пишет такие логи:
Waiting for HTTP-01 challenge propagation: failed to perform self check GET request 'http://nsq-admin.host.ru/.well-known/acme-challenge/1WZqlmikyW4huegg_naCcWStOC1KyrNe-swgqilGrXY': Get "http://nsq-admin.host.ru/.well-known/acme-challenge/1WZqlmikyW4huegg_naCcWStOC1KyrNe-swgqilGrXY": dial tcp: lookup nsq-admin.host.ru on 10.43.0.10:53: no such host
источник

DS

Dmitry Sergeev in Kubernetes — русскоговорящее сообщество
Старый Хрыч
а почему нельзя задать просто в values?
технически возможно, но не рекомендуется
источник

DS

Dmitry Sergeev in Kubernetes — русскоговорящее сообщество
Dmitriy Vikharev
всем привет, очень не понимаю как выводить сервис наружу так чтобы днс прописывался автоматические по поддомену
такой ингресс конфиг
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
 labels:
   app: nsq
   component: nsqadmin
 name: nsqadmin
 namespace: nsq
spec:
 backend:
   serviceName: nsqadmin
   servicePort: 80
 rules:
 - host: nsqadmin.host.ru
   http:
     paths:
     - backend:
         serviceName: nsqadmin
         servicePort: 80
       path: /
       pathType: Prefix
 tls:
 - hosts:
   - nsqadmin.host.ru
   secretName: tls-nsq-admin-ingress

после kk apply -f создаётся и pod для генерации сертифика, он висит и ждёт резолва
и пишет такие логи:
Waiting for HTTP-01 challenge propagation: failed to perform self check GET request 'http://nsq-admin.host.ru/.well-known/acme-challenge/1WZqlmikyW4huegg_naCcWStOC1KyrNe-swgqilGrXY': Get "http://nsq-admin.host.ru/.well-known/acme-challenge/1WZqlmikyW4huegg_naCcWStOC1KyrNe-swgqilGrXY": dial tcp: lookup nsq-admin.host.ru on 10.43.0.10:53: no such host
ingress-controller не управляет DNS. Относись к нему как к балансировщику, который умеет автоматически добавлять в апстримы ип адреса контейнеров
источник

DS

Dmitry Sergeev in Kubernetes — русскоговорящее сообщество
Старый Хрыч
чтобы потом сделать helm файл, при обновлении образа, и запуске хельмфайла, будет обновляться только изменившийся образ в проекте, в проекте от 6 до 40 микросервисов, все они будут записаны в хельм файл
когда устанешь от helm и go-template, взгляни на qbec.io, tanka.dev они на jsonnet, возможно зайдет
источник

СХ

Старый Хрыч... in Kubernetes — русскоговорящее сообщество
Dmitry Sergeev
когда устанешь от helm и go-template, взгляни на qbec.io, tanka.dev они на jsonnet, возможно зайдет
я теперь с ingress воюю
источник

СХ

Старый Хрыч... in Kubernetes — русскоговорящее сообщество
Dmitry Sergeev
когда устанешь от helm и go-template, взгляни на qbec.io, tanka.dev они на jsonnet, возможно зайдет
error: Ingress.extensions is invalid: spec: invalid value: []networking.IngressRule(nil): either 'backend' or 'rules' must be specified
- надо понять что в value написать для backend
источник

DS

Dmitry Sergeev in Kubernetes — русскоговорящее сообщество
Старый Хрыч
error: Ingress.extensions is invalid: spec: invalid value: []networking.IngressRule(nil): either 'backend' or 'rules' must be specified
- надо понять что в value написать для backend
для начала смотри итоговый ingress что тебе срендерил helm. Там у тебя невалидный объект для ingress получился.
kubectl explain ingress.spec
kubectl explain ingress.spec.rules
источник

СХ

Старый Хрыч... in Kubernetes — русскоговорящее сообщество
Dmitry Sergeev
для начала смотри итоговый ingress что тебе срендерил helm. Там у тебя невалидный объект для ingress получился.
kubectl explain ingress.spec
kubectl explain ingress.spec.rules
{{- if .Values.ingress.enabled -}}
{{- $fullName := include "" . -}}
{{- $svcPort := .Values.service.port -}}
{{- if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}}
apiVersion: networking.k8s.io/v1beta1
{{- else -}}
apiVersion: extensions/v1beta1
{{- end }}
kind: Ingress
metadata:
 name: {{ $fullName }}
 labels:
   {{- include "" . | nindent 4 }}
 {{- with .Values.ingress.annotations }}
 annotations:
   {{- toYaml . | nindent 4 }}
 {{- end }}
spec:
 {{- if .Values.ingress.tls }}
 tls:
   {{- range .Values.ingress.tls }}
   - hosts:
       {{- range .hosts }}
       - {{ . | quote }}
       {{- end }}
     secretName: {{ .secretName }}
   {{- end }}
 {{- end }}
 rules:
   {{- range .Values.ingress.hosts }}
   - host: {{ .host | quote }}
     http:
       paths:
         {{- range .paths }}
         - path: {{ . }}
           backend:
             serviceName: {{ $fullName }}
             servicePort: {{ $svcPort }}
         {{- end }}
   {{- end }}
 {{- end }}

вот такую хрень сделал, в результате которой нельзя сделать хельм инсталл
источник

DS

Dmitry Sergeev in Kubernetes — русскоговорящее сообщество
Старый Хрыч
{{- if .Values.ingress.enabled -}}
{{- $fullName := include "" . -}}
{{- $svcPort := .Values.service.port -}}
{{- if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}}
apiVersion: networking.k8s.io/v1beta1
{{- else -}}
apiVersion: extensions/v1beta1
{{- end }}
kind: Ingress
metadata:
 name: {{ $fullName }}
 labels:
   {{- include "" . | nindent 4 }}
 {{- with .Values.ingress.annotations }}
 annotations:
   {{- toYaml . | nindent 4 }}
 {{- end }}
spec:
 {{- if .Values.ingress.tls }}
 tls:
   {{- range .Values.ingress.tls }}
   - hosts:
       {{- range .hosts }}
       - {{ . | quote }}
       {{- end }}
     secretName: {{ .secretName }}
   {{- end }}
 {{- end }}
 rules:
   {{- range .Values.ingress.hosts }}
   - host: {{ .host | quote }}
     http:
       paths:
         {{- range .paths }}
         - path: {{ . }}
           backend:
             serviceName: {{ $fullName }}
             servicePort: {{ $svcPort }}
         {{- end }}
   {{- end }}
 {{- end }}

вот такую хрень сделал, в результате которой нельзя сделать хельм инсталл
отрендери через helm template, посмотри что вышло
источник

DS

Dmitry Sergeev in Kubernetes — русскоговорящее сообщество
Старый Хрыч
{{- if .Values.ingress.enabled -}}
{{- $fullName := include "" . -}}
{{- $svcPort := .Values.service.port -}}
{{- if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}}
apiVersion: networking.k8s.io/v1beta1
{{- else -}}
apiVersion: extensions/v1beta1
{{- end }}
kind: Ingress
metadata:
 name: {{ $fullName }}
 labels:
   {{- include "" . | nindent 4 }}
 {{- with .Values.ingress.annotations }}
 annotations:
   {{- toYaml . | nindent 4 }}
 {{- end }}
spec:
 {{- if .Values.ingress.tls }}
 tls:
   {{- range .Values.ingress.tls }}
   - hosts:
       {{- range .hosts }}
       - {{ . | quote }}
       {{- end }}
     secretName: {{ .secretName }}
   {{- end }}
 {{- end }}
 rules:
   {{- range .Values.ingress.hosts }}
   - host: {{ .host | quote }}
     http:
       paths:
         {{- range .paths }}
         - path: {{ . }}
           backend:
             serviceName: {{ $fullName }}
             servicePort: {{ $svcPort }}
         {{- end }}
   {{- end }}
 {{- end }}

вот такую хрень сделал, в результате которой нельзя сделать хельм инсталл
на перый взлгяд выглядит норм
источник

СХ

Старый Хрыч... in Kubernetes — русскоговорящее сообщество
Dmitry Sergeev
на перый взлгяд выглядит норм
ну вот нет
error: Ingress.extensions is invalid: spec: invalid value: []networking.IngressRule(nil): either 'backend' or 'rules' must be specified
источник

AL

Aleksey Lazarev in Kubernetes — русскоговорящее сообщество
подозреваю path пусто
источник

СХ

Старый Хрыч... in Kubernetes — русскоговорящее сообщество
Aleksey Lazarev
подозреваю path пусто
да я пока не понимаю что туда написать, сервис просто на порту весит 1 и всё
источник

DS

Dmitry Sergeev in Kubernetes — русскоговорящее сообщество
Старый Хрыч
ну вот нет
error: Ingress.extensions is invalid: spec: invalid value: []networking.IngressRule(nil): either 'backend' or 'rules' must be specified
У тебя он как будто rules в spec не видит, судя по ошибке. Поэтому проблема пока не в том что там в сервис прописать
источник

ВГ

Владимир Гурьянов... in Kubernetes — русскоговорящее сообщество
Всем привет. Может кто скажет, гдя я олень. https://xpaste.pro/p/gylHEgJJ
источник

AL

Aleksey Lazarev in Kubernetes — русскоговорящее сообщество
Темплейт добавь этого deploymentа
источник

AL

Aleksey Lazarev in Kubernetes — русскоговорящее сообщество
и он у тебя ругается на pdb - а не на deployment - его ты зачем вложил?)
источник

СХ

Старый Хрыч... in Kubernetes — русскоговорящее сообщество
источник