Size: a a a

2021 August 06

M

MAdMAx in jenkins_ru
это не помогает.
выключено, но всё равно спрашивает апрув
источник

I

Inetov in jenkins_ru
да, не помогает.
как я и писал - у меня значение useScriptSecurity - уже false
источник

I

Inetov in jenkins_ru
кому интересно - проблема решилась включением
Use Groovy Sandbox
в настройках джоба, секция Groovy Postbuild, где у меня был вызов.
интересно, что ранее это точно работало с выключенной галкой, вероятно что-то поменяли с обновлением
источник

I

Ilgiz in jenkins_ru
по идее она наоборот должна работать с выключенным сендбоксом
источник

I

Inetov in jenkins_ru
я и говорю - раньше именно так и было
источник

СА

Сергей Антропов... in jenkins_ru
Коллеги. Ткните меня, где я дурак?

В общем. Есть пайплайн. Забрали из гита. Собрали образ. Запушили в локальный реджистри. Зааплаили ямлики в кубер из гита.
Но. Под не хочет рестартовать.

Вот ямл.

---
apiVersion: apps/v1
kind: Deployment
metadata:
 name: app-back
 namespace: stage
spec:
 replicas: 1
 selector:
   matchLabels:
     app: app-back
 strategy:
   rollingUpdate:
     maxSurge: 1
     maxUnavailable: 1
   type: RollingUpdate
 template:
   metadata:
     labels:
       app: app-back
   spec:
     imagePullSecrets:
     - name: harbor
     containers:
     - image: harbor.server.local/app/app-backend-develop
       name: app-back
       imagePullPolicy: Always
       ports:
       - containerPort: 9000
         name: fastcgi
       env:
       - name: foo
         value: bar
       - name: DB_PASSWORD
         valueFrom:
           secretKeyRef:
             name: app-db-pass
             key: app-db-pass
       resources:
         requests:
           cpu: 100m
           memory: 128Mi
         limits:
           cpu: 100m
           memory: 128Mi

---
apiVersion: v1
kind: Service
metadata:
 name: app-back-service
 namespace: stage
spec:
 ports:
 - port: 80
   targetPort: 9000
   name: fastcgi
 selector:
   app: app-back
 type: ClusterIP

Вот кусок пайпа

      // Деплоим в Кубер                
       stage('Deploy to Kubernetes') {
           steps   {
           withKubeConfig([credentialsId: 'KubeConfig', namespace: 'stage']) {
           sh 'kubectl apply -f devops/stage-kube/'
           }
       }
 }


Вот что получаем в дженке.

15:08:20  + kubectl apply -f devops/stage-kube/
15:08:20  deployment.apps/school-back unchanged
15:08:20  service/school-back-service unchanged
15:08:20  configmap/school-cm unchanged
15:08:20  ingress.networking.k8s.io/school-back-ingress unchanged
15:08:20  deployment.apps/school-redis configured
15:08:20  service/school-redis-service unchanged

Контейнер свежий - абсолютно точно. Но под не рестартует и не применяется. Ладно, если это в дев неймспейсе. А если прод и нужен роллаут?
источник

DS

Dmitry Sergeev in jenkins_ru
почему он должен рестартовать? Его template никак не поменялся, кубер его и не будет рестартовать. Это ожидаймое и правильное поведение куба
источник

DS

Dmitry Sergeev in jenkins_ru
и вопрос к jenkins не относиться. А по кейсу - используйте тегирование образов. Либо фигачьте в аннотации template'а pod'а sha образа/коммита + imagePullPolicy: Always. Но это плохо так делать
источник

СА

Сергей Антропов... in jenkins_ru
Спасибо. А если по теме, то есть такая ситуация. Ямлики деплоя лежат в гите. Стянули. Как можно передать переменную в ямл? Ну, скажем, тэг образа новый? Сам тэг у меня есть в переменной.
источник

DS

Dmitry Sergeev in jenkins_ru
helm/kustomize/jsonnet/envsubst и так далее
источник

СА

Сергей Антропов... in jenkins_ru
Спасибо. Думал пока без хелма. Но, чую никак. Ок. Пошёл гуглить.
источник

DS

Dmitry Sergeev in jenkins_ru
Там инструментов на самом деле очень много. Вот небольшой список

Шаблоны
kubectl + bash(envsubst, sed)
ansible (https://docs.ansible.com/ansible/latest/modules/k8s_module.html)
https://helm.sh/ + (https://github.com/roboll/helmfile)
https://werf.io/ (helm внутри + трекинг ресурсов во время деплоя)
https://get-kapp.io/  (трекинг ресурсов во время деплоя) + https://get-ytt.io/ (шаблоны)

нативная работа со структурами в манифестах (не шаблоны)
yaml
kubectl -k (kustomize) (есть из коробки) https://kubectl.docs.kubernetes.io/
kpt  (https://googlecontainertools.github.io/kpt)

Jsonnet

https://qbec.io/
https://tanka.dev/


Свой DSL
Terraform (https://www.terraform.io/docs/providers/kubernetes/index.html)
waypoint (https://www.waypointproject.io/)
CUE (https://github.com/cuelang/cue)
Bazel (https://github.com/bazelbuild/rules_k8s)

Полноценный ЯП
pulumi (https://www.pulumi.com/docs/get-started/kubernetes/)
AWS Cloud Development Kit (https://cdk8s.io/)

Gitops
https://github.com/fluxcd/flux
https://github.com/argoproj/argo-cd
https://github.com/oam-dev/kubevela
источник

DS

Dmitry Sergeev in jenkins_ru
kustomize есть из коробки, вшит в kubectl (опция -k)
источник

СА

Сергей Антропов... in jenkins_ru
О как. Спасибо. Пойду изучать
источник

AL

Aleksey Lazarev in jenkins_ru
а где jsonnet? Я помню ты его оч хвалил
источник

DS

Dmitry Sergeev in jenkins_ru
qbec/tanka же
источник

AL

Aleksey Lazarev in jenkins_ru
ну просто можно ж взять просто ванильный не?
источник

DS

Dmitry Sergeev in jenkins_ru
он мне нравится да. Но с ним надо быть осторожным, слишком абстрактно может получаться. Хочу cue еще глянуть
источник

DS

Dmitry Sergeev in jenkins_ru
ванильный просто json'ы будет делать. Задачу деплоя это не покрывает. Хотя если у тебя argo то можно и ванильный.
Но в qbec есть удобные встроенные функции в jsonnet - https://qbec.io/reference/jsonnet-native-funcs/
Сренедрить helm чарт, прочитать ямлики.
Плюс еще на этапе рендера можно выполнять любые скрипты. Удобно например из vault секреты брать или как аналог lookup в helm юзать.
источник

DS

Dmitry Sergeev in jenkins_ru
а ты jenkins в итоге не выпилил? Что в этом чате делаешь? =)
источник