我在和jx,kubernetes和helm斗争。我在执行env目录中的命令的jx上运行Jenkinsfile:
sh 'jx step helm build' sh 'jx step helm apply'
它成功完成并部署了pods /创建了部署等。但是,头盔列表为空。
当我执行类似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
然后我设置了头盔:
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"
Jose Armesto.. 6
从变更日志来看,似乎从2.0.246版本开始,无舵模式已成为默认模式。
在Helm v2中,Helm依赖于其服务器端组件Tiller。Jenkins X无耕种模式意味着,不使用Helm来安装图表,而是将Helm客户端仅用于模板化和生成Kubernetes清单。但是,这些清单通常是使用kubectl而不是helm / tiller施加的。
结果是,Helm将不知道此安装/发行版,因为它们是由kubectl制造的。因此,这就是为什么您无法获得使用Helm的版本列表的原因。正如您可以在Jenkins X docs上阅读的那样,这是预期的行为。
--no-tiller的意思是将头盔切换为使用模板模式,这意味着我们不再在内部使用头盔安装mychart来安装图表,而是实际上使用头盔模板mychart来使用相同的头盔图表和标准头盔生成YAML通过--set和values.yaml文件进行配置管理。
然后我们使用kubectl apply来应用YAML。
正如James Strachan在评论中提到的那样,当使用免耕模式时,您可以使用以下方式查看部署jx step helm list
从变更日志来看,似乎从2.0.246版本开始,无舵模式已成为默认模式。
在Helm v2中,Helm依赖于其服务器端组件Tiller。Jenkins X无耕种模式意味着,不使用Helm来安装图表,而是将Helm客户端仅用于模板化和生成Kubernetes清单。但是,这些清单通常是使用kubectl而不是helm / tiller施加的。
结果是,Helm将不知道此安装/发行版,因为它们是由kubectl制造的。因此,这就是为什么您无法获得使用Helm的版本列表的原因。正如您可以在Jenkins X docs上阅读的那样,这是预期的行为。
--no-tiller的意思是将头盔切换为使用模板模式,这意味着我们不再在内部使用头盔安装mychart来安装图表,而是实际上使用头盔模板mychart来使用相同的头盔图表和标准头盔生成YAML通过--set和values.yaml文件进行配置管理。
然后我们使用kubectl apply来应用YAML。
正如James Strachan在评论中提到的那样,当使用免耕模式时,您可以使用以下方式查看部署jx step helm list