
Andrey
18.07.2018
02:25:52
надо работать с сервисами внутри кластера и общаться с сервисом через svc.namespace.cluster.local
если вдаваться в детали, есть продукт-монолит, котрый по частям перевозят в кубер. В будущем всё это будет вариться внутри кубера и проблем не будет. В промежуточный период надо несмигрированной части продукта общаться со смигрированной, которая уже в кубере.

Fike
18.07.2018
02:49:16

Andrey
18.07.2018
02:50:43
сервис для чего?

Google

Andrey
18.07.2018
02:58:40
так, для dns нарыл решение через dnsmasq: https://blog.heptio.com/configuring-your-linux-host-to-resolve-a-local-kubernetes-clusters-service-urls-a8c7bdb212a7
для роутинга наверное такое простое решение не получится

Sergey
18.07.2018
03:01:04
а то выглядит со стороны как будто вы хотите соединить из разных куб-кластеров в вебе и в локалке один и тот же сервис))

Andrey
18.07.2018
03:03:32
есть два приложения, одно в кубе, другое нет. Мне их надо связать так, чтоб приложение, которое не в кубе, сразу обращалось по svc.namespace.cluster.local. Вроде же расписал выше.

Crypt
18.07.2018
03:04:47

Andrey
18.07.2018
03:04:57
да, именно так
просто это приложение потом будет в кубе, но девелоперы его уже сейчас пишут так, как будто оно там
и оно рассчитывает на сервис дискавери и прямой доступ в сеть кубера
а поскольку переходный период затягивается, нужно относительно надёжное решение, а не тупой маршрут через IP адрес одной ноды кластера

Crypt
18.07.2018
03:07:41
не представляю как они его пишут, по завету 12-факторов, оно должно с пол-пинка и там и там заводиться, лишь конфиг должен изменяться

Andrey
18.07.2018
03:08:15
это древнее энтерпрайзнутое говно мамонта, там не всё так быстро
самые простые вещи типа ui перевезли, а ядро ещё нет, и ещё не скоро

Tatiana
18.07.2018
03:47:57
hi guys у вас можно запостить предложение о контракте? ?

Sergey
18.07.2018
04:08:54

Google

Sergey
18.07.2018
04:10:10

Dixon
18.07.2018
05:59:49
С ceph замучался, не могу его поднять на centos7
Если есть проверенное решение, поделитесь ссылочкой.
Уже все варианты перепробовал...
Ceph поднимал на виртуалках.
Сейчас буду пробовать в докере запускать

Tores
18.07.2018
06:36:30

Dixon
18.07.2018
06:37:50
закончилось както так
ceph-deploy purgedata c7gfs02 c7gfs03 c7vmw04 c7vmw05 c7vmw06
ceph-deploy forgetkeys
ceph-deploy purge c7gfs02 c7gfs03 c7vmw05 c7vmw06 c7vmw04
ceph-deploy purge $(hostname -s)
ceph-deploy purgedata $(hostname -s)
sudo rm -rf /etc/ceph/*
sudo rm -rf /var/lib/ceph/*/*
sudo rm -rf /var/log/ceph/*
sudo rm -rf /var/run/ceph/*

Sergey
18.07.2018
06:38:55
ceph в докере
да вы оптимист

Dixon
18.07.2018
06:39:59
да? опять потерянное время?
ставил эту версию, не пошла
ceph-deploy install --release mimic

Gunslinger
18.07.2018
06:45:48
всем привет, а по Helm тоже сюда можно вопросы задавать?

Sergey
18.07.2018
06:52:58

Pavel
18.07.2018
06:54:49

Sergey
18.07.2018
06:56:40

Pavel
18.07.2018
06:59:44

Sergey
18.07.2018
07:00:01

Alex Milushev
18.07.2018
07:00:10

Pavel
18.07.2018
07:00:14

Andrey
18.07.2018
07:00:41

Sergey
18.07.2018
07:01:09
Minio конкурент ceph’a
а лол, рук для кубера
я себе для петпроджектов ищу сторэдж обьектный шобы под композ поставить

Alex Milushev
18.07.2018
07:02:12
спс, посмотрю
Там правда больше про дев. Прод как правильно сказали через сервисы экспозить.

Pavel
18.07.2018
07:04:11

Alex Milushev
18.07.2018
07:04:46

Google

Pavel
18.07.2018
07:05:04

Alex Milushev
18.07.2018
07:05:15
Бесшовный remote dev env на кубере для микросервисов, и не только.

Gunslinger
18.07.2018
07:36:53
вопрос такой: пробую сварить коктейль из kafka в kubernetes (локально в minikube) через Helm согласно этой инструкции https://github.com/kubernetes/charts/tree/master/incubator/kafka
Версия без external access работает вполне успешно
Но как только меняю в values.yaml в разделе exposed на enabled: true и стартую (в новом неймспейсе этот chart) то начинается веселье. под с кафкой уходит в Init:CrashLoopBackOff
Понимаю что кейс довольно специфический, но вдруг кто-то сталкивался

Pavel
18.07.2018
07:40:16

Anton
18.07.2018
07:52:34

Gunslinger
18.07.2018
08:24:02

Pavel
18.07.2018
08:27:34

Valera
18.07.2018
08:47:49
Всем привет.
Вопрос про rollback deployment'ов: скажем у меня в deployment'е постоянно указан образ app:latest и для обновления сервиса мне нужно по сути просто спулить новый образ.
Если я хочу откатиться, то откуда кубер возьмёт предыдущий образ, если он точно такой же app:latest? Или принято прямо по версиям выкатывать?
Плюс в самом deployment'е стоит imagePullPolicy: Always. Насколько принято так делать и в чём минус Always тут в вышеописанном сценарии?
Спасибо.

Pavel
18.07.2018
08:49:56


Valera
18.07.2018
08:50:55

Pavel
18.07.2018
08:53:10


Valera
18.07.2018
08:54:16
Ещё вопрос по ingess'ам: есть ли возможность выставлять наружу сервис через clusterip, а не nodeport в стандартном ingress'е на GKE? Перехожу с Rancher/Cattle и там аналогичная возможность есть, т.е. микросервисы открывают только свои порты в их локальную 10.42.0.0/16 сеть и далее ingress Rancher'а выставляет их наружу, не открывая и не занимая никаких дополнительных портов на хосте/ноде. При этом на load balancer'е cloud provider'а (AWS) указаны только 80 и 443 порты.
Вручную, пока так удобнее, но думаю над вариантами.
Адище какой. У меня пока сделано так: на dev окружение автоматом выкатывается образ dev:latest, который собирается из master ветки. Далее в нужный момент я отрезаю release/* ветку и из неё автоматом собирается release:latest, который автоматом выкатывается на staging. Далее есть ручной таск, который берёт образ release:latest, перетэгивает его на prod:latest и это вручную деплоится в prod. Таким образом prod защищён от автодеплоя release:latest :)


Pavel
18.07.2018
09:00:03
Похоже на адище)
Когда готовы апгрейд делать, открываю в гуе и ставлю новую версию и начинается ролаут, по инстанс

Anton
18.07.2018
09:40:21
простая практика - оперется на систему контроля версий. на tag, на commit hash, что там удобнее

Salem
18.07.2018
09:41:24

Google

Pavel
18.07.2018
09:41:24

Stanislav
18.07.2018
09:42:38
Но я сделал в кластере свой локальный балансер, и GCLB смотрит только на его нодепорт.

Valera
18.07.2018
09:44:08

Admin
ERROR: S client not available

Stanislav
18.07.2018
09:44:20
Там в GCP удобство в том, что ты через именованные порты связываешь это и куда оно там в очередной раз выставится - тебя не греет
Самое сложное было в выявлении и автоматизации таргетирования на нодепулы

Valera
18.07.2018
09:45:47

Anton
18.07.2018
09:46:17

Stanislav
18.07.2018
09:47:10
А в чем небезопасность порта? В том, что голый сервис? Я вот нжинксом внутри кластера прикрыл и балансер на него приземлял. Это позволило избежать проблемы асинхронного лага между окончанием реконфигурации GCLB и реальным эффектом от изменений. Правлю только внутрикластерный балансер часто.

Valera
18.07.2018
09:49:08
--confirm-upgrade, -c Confirm that the upgrade was success and delete old containers
--rollback, -r Rollback to the previous deployed version


Stanislav
18.07.2018
09:54:17
Реализация открытости нодепортов в GKE устроена следующим образом. Там сеть Calico, ставится iptables правило которое заруливает это на нужный под.
Связность порта и пода полностью автоматически на плечах кубера
Я тестировал, работает без осечек.


Valera
18.07.2018
09:56:10
Там в GCP удобство в том, что ты через именованные порты связываешь это и куда оно там в очередной раз выставится - тебя не греет
# Например есть вот такой deployment nginx'а:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-app
labels:
app: nginx-app
spec:
replicas: 2
selector:
matchLabels:
app: nginx-app
template:
metadata:
labels:
app: nginx-app
spec:
nodeSelector:
app: '1'
containers:
- image: nginx:latest
name: nginx-app
env:
- name: test
value: '1'
ports:
- containerPort: 80
name: nginx-http
imagePullSecrets:
- name: regcred
---
apiVersion: v1
kind: Service
metadata:
name: nginx-app
spec:
type: NodePort
ports:
- port: 80
targetPort: 80
protocol: TCP
name: nginx-http
selector:
app: nginx-app
# И вот такой ingress:
apiVersion: v1
data:
tls.crt: "..."
tls.key: "..."
kind: Secret
metadata:
name: sslcerts
namespace: default
type: Opaque
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: dev-ingress
annotations:
kubernetes.io/ingress.global-static-ip-name: 'dev-ingress-ip'
spec:
tls:
- secretName: sslcerts
backend:
serviceName: 'nginx-app'
servicePort: 80
Хотя можно было сделать servicePort: nginx-http , но не обязательно.


Stanislav
18.07.2018
09:58:00
Я TLS на GCLB вынес

Google


Stanislav
18.07.2018
10:02:04
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx-ci-lb
spec:
replicas: 2
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
selector:
matchLabels:
app: nginx-ci-lb
template:
metadata:
labels:
cijobid: job-%%CI_JOB_ID%%
app: nginx-ci-lb
network-publicweb: publicweb
network-loadbalancer: loadbalancer
spec:
containers:
- name: nginx-ci-lb
image: %%IMAGE_NGINXCILB%%
imagePullPolicy: Always
ports:
- containerPort: 80
Выставление портов:
---
kind: Service
apiVersion: v1
metadata:
name: nginx-ci-lb
namespace: default
labels:
app: nginx-ci-lb
spec:
ports:
- name: http
protocol: TCP
port: 80
targetPort: 80
#- name: https
# protocol: TCP
# port: 443
# targetPort: 443
selector:
app: nginx-ci-lb
# uncomment if you need auto-GLB
#type: LoadBalancer
#externalTrafficPolicy: Local
# if you don't want to expose Nginx to the public network via an autoconfigured GCLB, you shoud use the setup below:
type: NodePort
sessionAffinity: None
---
# used only on nginx to allow ANY (including public) incoming requests!
#
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: network-publicweb
spec:
podSelector:
matchLabels:
network-publicweb: publicweb
policyTypes:
- Ingress
ingress:
- from: []
ports:
- protocol: TCP
port: 80
- protocol: TCP
port: 443
Это как сделал я у себя
Этот внутрикластерный балансер в который идет GCLB


Valera
18.07.2018
10:02:57
Ну так оно же и есть на GCLB тут. Когда его определяешь в ingress'е, то он и создаёт LB же.

Stanislav
18.07.2018
10:03:27
# uncomment if you need auto-GLB
#type: LoadBalancer
#externalTrafficPolicy: Local
Это если ты не хочешь сам менеджить GCLB
Оно тогда все само зааллоцирует и отконфигурит
Но если вдруг переделать понадобится, то придется серьезно разобраться в четырехслойной модели GCLB
Иначе оно при каждом переделывании будет порождать зажор ресов в GCLB и ты упрешься в квоты проекта
Мы это прошли и отказались от этой автофичи
Слишком много потом руками чистить приходится
В панели GCP

Valera
18.07.2018
10:12:19
Оно мне недавно регнулось на квоту бэкэндов, я просто сделал запрос на увеличение до 30 и получил автоаппрув в течении 5 минут...

Stanislav
18.07.2018
10:12:34
Это понятно, но это плохой признак