Если применяется jx step helm, создайте / произведите релиз - PullRequest
4 голосов
/ 10 июня 2019

Я борюсь с jx, kubernetes и helm.Я запускаю Jenkinsfile на jx, выполняя команды в каталоге env:

sh 'jx step helm build'
sh 'jx step helm apply'

Он заканчивается успешно и развертывает pods / создает развертывание и т. Д., Однако список helm пуст.

Когда я выполняю что-то вроде helm install ... или helm upgrade --install ..., он создает релиз, и список руля показывает, что.

Это правильное поведение?

Подробнее:

EKS установлен с:

eksctl create cluster --region eu-west-2 --name integration --version 1.12 \
--nodegroup-name integration-nodes \
--node-type t3.large \
--nodes 3 \
--nodes-min 1 \
--nodes-max 10 \
--node-ami auto \
--full-ecr-access \
--vpc-cidr "172.20.0.0/16"

Затем я настроил входы (внешние и внутренние) с помощью некоторой команды kubectly apply (файлы не будут передаваться).Затем я настраиваю маршруты и связанные с vpc вещи.

JX, установленный с:

jx install --provider=eks --ingress-namespace='internal-ingress-nginx' \
--ingress-class='internal-nginx' \
--ingress-deployment='nginx-internal-ingress-controller' \
--ingress-service='internal-ingress-nginx' --on-premise \
--external-ip='#########' \
--git-api-token=######### \
--git-username=######### --no-default-environments=true

Подробности из установки:

? Select Jenkins installation type: Static Jenkins Server and Jenkinsfiles
? Would you like wait and resolve this address to an IP address and use it for the domain? No
? Domain ###########
? Cloud Provider eks
? Would you like to register a wildcard DNS ALIAS to point at this ELB address?  Yes
? Your custom DNS name: ###########
? Would you like to enable Long Term Storage? A bucket for provider eks will be created No
? local Git user for GitHub server: ###########
? Do you wish to use GitHub as the pipelines Git server: Yes
? A local Jenkins X versions repository already exists, pull the latest? Yes
? A local Jenkins X cloud environments repository already exists, recreate with latest? Yes
? Pick default workload build pack:  Kubernetes Workloads: Automated CI+CD with GitOps Promotion

Затем я настраиваю helm:

kubectl apply -f tiller-rbac-config.yaml
helm init --service-account tiller

где tiller-rbac-config.yaml:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: tiller
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: tiller
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: tiller
    namespace: kube-system

версия руля говорит:

Client: &version.Version{SemVer:"v2.13.1", GitCommit:"618447cbf203d147601b4b9bd7f8c37a5d39fbb4", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.13.1", GitCommit:"618447cbf203d147601b4b9bd7f8c37a5d39fbb4", GitTreeState:"clean"}

jx версия говорит:

NAME               VERSION
jx                 2.0.258
jenkins x platform 2.0.330
Kubernetes cluster v1.12.6-eks-d69f1b
helm client        Client: v2.13.1+g618447c
git                git version 2.17.1
Operating System   Ubuntu 18.04.2 LTS

Приложения были импортированы следующим образом:

jx import --branches="devel" --org ##### --disable-updatebot=true --git-api-token=##### --url git@github.com:#####.git

И среда была создана следующим образом:

jx create env --git-url=##### --name=integration --label=Integration --domain=##### --namespace=jx-integration --promotion=Auto --git-username=##### --git-private --branches="master|devel|test"

1 Ответ

5 голосов
/ 14 июня 2019

Изучая журнал изменений, кажется, что режим без румпеля стал режимом по умолчанию с версии 2.0.246 .

В Helm v2 Helm использует свой серверный компонент, называемый Tiller. Режим без руля Jenkins X означает, что вместо установки Helm для установки диаграмм клиент Helm используется только для создания шаблонов и создания манифестов Kubernetes. Но тогда эти манифесты обычно применяются с использованием kubectl, а не helm / tiller.

Следствием этого является то, что Helm не будет знать об этих установках / выпусках, потому что они были сделаны kubectl. Вот почему вы не получите список выпусков, использующих Helm. Это ожидаемое поведение, так как вы можете прочитать в документации Jenkins X .

Что означает --no-tiller, так это переключить штурвал в режим шаблона, который означает, что мы больше не используем helm install mychart для установки диаграмму, мы на самом деле используем вместо этого шаблон руля mychart, который генерирует YAML, использующий те же самые схемы рулевого управления и стандартный штурвал управление конфигурацией через файлы --set и values.yaml.

Затем мы применяем kubectl apply для применения YAML.

Как отметил Джеймс Страчан в комментариях, при использовании режима без румпеля вы можете просматривать свои развертывания, используя jx step helm list

...