版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
前序 用户 安 KubernetesKubernetes 版安装 使 插 使用 Helm命令参 库库同步 测 Repository 开发chart模介 入 Values文 5.8noteschart附录1:Yaml附录2chart最佳实介 Labels和 Podsand 相关项目和 KubernetesHelm架KubernetesHelm架 开发者指 项目 术语术语 何处寻找HelmUserGuideHelm用户指本指南是Kubernetes的库下,helm子下的文档的翻译,依照的文档架构和组织,当前非常粗糙的翻译了一版(剩余命令参考和术语表两部分还没有翻译),后续会陆续更新优化,用于给刚接触Helm这备注:(如果有朋友知道如何更好的在gitbook里面处理花括弧-模板里的值,欢迎告知我/whmz Kubernetes各版安装使用Helm库同步Repository命名模板文件noteschart和全局值1:Yaml技巧附录2:数据类型LabelsAnnotationsKubernetesHelmKubernetesHelm何处寻找Copyright© )2017-2018allright,poweredbyGitbookUpdatedat2018-06-29快速本指南介绍如何快速开始使用Helm前提需要准备以下前提条件才能成功且安全地使用HelmKubernetes安装和配置Helm和集群端服务Tiller安装Kubernetes或群必须已安装Kubernetes。对于Helm的版本,我们推荐的Kubernetes稳定版本,在大多数情况下它是次新 注意:1.6之前的Kubernetes版本对于基于角色的控制(RBAC),要么有限制,或者不支持HelmKubernetes配置文件(通常是
)Tillerkubectlconfigcurrent-要找出Tiller将安装到哪个集群,可以运 或kubectlconfigcurrent-$kubectlconfigcurrent-context如果你在完全控制的群集上使用Helm,如minikube或网络中的不考虑共享的群集,则默认安装(不采用安全配置)很合适,并且是最容易的。要在无需额外安全措施的场景下安装Helm,请参考安装Helm,然后初始化Helm。 于更大的网络中,或者集群与他人共享-生产集群属于此类别-则必须采取额外步骤来确保安装 请参阅Helm安全安装。如果群集启用了基于角色的控制(RBAC),在继续之前配置服务帐户(serviceaccount)和规则安装
,或查看发布页面有关详细信息或其他选项,请参阅安装指南初始化Helm并安装有了Helm安装文件,就可以初始化本地CLI,并将Tiller安装到Kubernetes$helmkubectlconfigcurrent-这会将Tiller安装到对应的Kubernetes群集中,集群同 提示:想要安kubectlconfigcurrent-Tiller,请运行helminitupgrade默认情况下,安装Tiller时,没有启用验证。要了解有关为Tiller配置增强TLS验证的信息,请参阅TillerTLS指南。安装示例helm要安装一个chart,可以运 命令。Helm有几种方法来查找和安装chart,但最简单的方法是helm个稳定版本的chart$helmrepo #确保我们获得的chart$helminstallstable/mysqlReleaseds-penguinNAME:wintering-LASTDEPLOYED:ThuOct1814:21:18STATUS:DEPLOYED==> wintering-rodent-mysql==>wintering-rodent-mysql-testwintering-rodent-mysql0s==>wintering-rodent-mysql==>v1beta1/Deploymentwintering-rodent-mysql0s==> READY RESTARTS Pending MySQLcanbeaccessedviaport3306onthefollowingDNSnamefromwithinyourcluster:TogetyourrootpasswordMYSQL_ROOT_PASSWORD=$(kubectlgetsecret--namespacedefaultwintering-rodent-mysql-ojsonpath="{.data.mysql-root-password}"|base64--decode;echo)ToconnecttoyourRunanUbuntupodthatyoucanuseasakubectlrun-i--ttyubuntu--image=ubuntu:16.04--restart=Never--bash-Installthemysql$apt-getupdate&&apt-getinstallmysql-client-Connectusingthemysqlcli,thenprovideyour$mysql-hwintering-rodent-mysql-ToconnecttoyourdatabasedirectlyfromoutsidetheK8scluster:#Executethefollowingcommandtoroutethemysql-h${MYSQL_HOST}-P${MYSQL_PORT}-uroot-helm在上面的例子中,stable/mysqlreleasewintering-rodent。通过运行可以简单了解这个helmchartreleasechart可以多次安装到同一个群集中。而且每个都可以独立helm命令功能非常丰富,具有很多强大功能。要了解信息,请查看使用Helm指helm了解安装的很容易通过如下命令查看已使用Helm安装的$helmAPP+wintering-1ThuOct1815:06:58mysql-卸载安装的helmhelm
$helmdeletewintering-rodentwintering-releaseKubernetesreleasewintering-$helmstatuswintering-LASTDEPLOYED:ThuOct1814:21:18STATUS:DELETEDMySQLcanbeaccessedviaport3306onthefollowingDNSnamefromwithinyourcluster:TogetyourrootpasswordMYSQL_ROOT_PASSWORD=$(kubectlgetsecret--namespacedefaultwintering-rodent-mysql-ojsonpath="{.data.mysql-root-password}"|base64--decode;echo)ToconnecttoyourRunanUbuntupodthatyoucanuseasakubectlrun-i--ttyubuntu--image=ubuntu:16.04--restart=Never--bash-Installthemysql$apt-getupdate&&apt-getinstallmysql-client-Connectusingthemysqlcli,thenprovideyour$mysql-hwintering-rodent-mysql-ToconnecttoyourdatabasedirectlyfromoutsidetheK8scluster:#Executethefollowingcommandtoroutethemysql-h${MYSQL_HOST}-P${MYSQL_PORT}-uroot-由于Helm在删除它们之后也会该release,因此可以审核群集的历史记录,甚至可以取消删除动作(使)-阅读帮助文-helm要了解有关Helm命令的信息,请使helm
标志令$helmget-Copyright© )2017-2018allright,poweredbyGitbookUpdatedat2018-11-23安Helm有两个部分:Helm客户端(helm)Helm服务端(Tiller)。本指南介绍如何安装客户端,然后继续演示两种安Tiller。有关指导,请参阅安全Helm安装。安装Helm客户Helm每一个版本releaseHelm提供多种操作系统的二进制版本。这些二进制版本可以手动和安装解压缩(tar-zxvfhelm-v2.0.0-linux-amd64.tgzmvlinux- mvlinux-)helmhelmSnapSnappackage站点$sudosnapinstallhelm--通过Kubernetes社区的成员为Homebrew贡献了Helm。这个通常是的(注意:emacs-helm也是一个软件,这是一个不同的项目。从Kubernetes社区的成员为Chocolatey贡献了Helm包。这个软件包通常是的从Helm现在有一个安装 ,将自动获取版本的Helm客户端并在本地安装$curl $od700$curl 从金丝雀(Canary)构“Canary”版本是从的主分支构建的Helm软件的版本。它们不是正式版本,可能不稳定。但是,他们提供了测试最"Canary"版本Helm二进制文件在KubernetesHelmGCS中。以下是常见构建的LinuxAMD64ExperimentalWindows源代码方式从源代码构建Helm的工作稍微多一些,但如果你想测试的(预发布)Helm版本,那么这是最好的方法。你必须有一个安装Go工作环境。$cd$mkdir-p$cd$git $cd$makebootstrap 目标将尝试安装依赖,重建vendor/树,并验证配置
。Tiller也会编译,并且被放置 安装Helm的服务器端部分Tiller通常运行在KubernetesKubernetesSpecialNoteforRBAC大多数云提供商都支持名为基于角色的控制(简称RBAC)的特性。如果您的云提供商启用了该特性,您将需要为Tiller创建一个具有资源的正确角色和权限的服务帐户(serviceaccount)。查看KubernetesDistributionGuide在云提供商中使用Helm是否还有其他点.也可以查看TillerandRole-BasedAccessControl来获取关于如何在RBAC的K8S集群中使用Tiller的信息。安
helmhelm
kube-kube-
默认连接的任何集群(kubectlconfigview)。一旦连接,它将安 kubectlgetkubectlgetpods--namespacekube-helm
Tillerhelm helm--canarycanarykubetillerkubetillertiller-用一个特定名空间(namespace)安--tillerservice-ServiceAccountRBACenabled--serviceautomount-service-accountserviceaccount--automount-service-accounthelm一旦安装了Tiller,运 会显示客户端和服务器版本。(如果它仅显示客户端版本,helm则无helmkube-服务器,使 查看是否有任何tillerPod正在运行。kubetillertiller-
参数,否则Helm将在命名空
Tiller安装TillerCanary镜像是从master分支建立的。他们可能不稳定,但他们提供测试功能的机会。安装Canary镜像最简单的方法是helminit与--canary-image参数一起使用:$helminit--canary-kube- 删kube-本地运行
Tillerdeployment对于开发而言,有时在本地运行Tiller更容易,将其配置为连接到Kubernetes群集。上面介绍了构建部署Tiller的过程。一旦tiller$TillerrunningonTiller在本地运行时,它将尝试连接到由
Kubernetes群集。(kubectlconfigview--helmTiller--
$export$helmversion#ShouldconnecttoClient:&version.Version{SemVer:"v2.0.0-alpha.4", Server:&version.Version{SemVer:"v2.0.0-alpha.4", mit:"a5...",GitTreeState:"dirty"}注意,即使在本地运行,Tiller也会将安装的release配置在Kubernetes内的ConfigMaps中升级helminit--从Helm2.2.0开始,Tillerhelminit--对于旧版本的Helm或手动升级,可以使 修改Tiller容器镜像 #Orwhateverversionyou$kubectl--namespace=kube-systemsetimagedeployments/tiller-deploytiller=gcr.io/kubernetes-helm/tiller:$TILdeployment"tiller-deploy"image设 将获得master版本的快照删除或重新安装由于Tiller将其数据在KubernetesConfigMaps中,因此可以安全地删除并重新安装Tiller,而无需担心丢失任何kubectldeletedeploymentkubectldeletedeploymenttiller-deploy--namespacekube-helmhelm然后可以从客户端重新安装$helm高级helminit提供了额外的参数,用于在安装之前修改Tillerdeploymentmanifest
--node---node-参数允许我们指定调度TillerPod所需的节点。下面的例子将在nodeSelector属性下创建指定的。--node-helminit--node-selectors已安装的deploymentmanifest将包含我们的节点选择器使用允许指定Tiller的deploymentmanifest的属性。与在Helm其他地 使用令不同,helmmanifest的指定属性("values"文件)deploymentmanifest中的任何有效属性在下面的示例中,我们使用--override添加修订版本属性并将其值设置为1helminit--overridekind:Deploymentdeployment.kubernetes.io/revision:-- -- "spec.template.spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[0].weight"="1"-- 指定的属性组合到“preferredDuringSchedulingIgnoredDuringExecution”-operator:""weight:使用TillerdeploymentmanifestJSONYAMLdeployment--stdout
helminit--outputjsonhelminit--outputTiller安装被跳过,manifest以JSON格式输出到stdout"kind":"Deployment","labels":{"app":"name":"name":"tiller-deploy",默认情况下,tiller将安装release信息 在其运行的名称空间中的ConfigMaps中。从Helm2.7.0开始,现在有一个Secrets用于安装release信息的beta 后端。添加了这个功能是为和Kubernetes的加密Secret一起,保护chart的要启用secrets后端,需要使用以下选项启动helminit--override'spec.template.spec.containers[0].command'='{/tiller,--secretsbeta版本毕业时,将会总helmhelm二进制代码和想要用helm
一旦成功安装了HelmClient和Tiller,可以继续下一步使用Helm来管理chartsCopyright© )2017-2018allright,poweredbyGitbookUpdatedat2018-11-24Kubernetes各版本指本文档描述有关在各Kubernetes版本环境中使用Helm的信息我们尝试为此文档添加详细信息。如果可以,请通过PullRequests提供Helm已经过测试并且已知可以与minikubescripts/local-cluster和通过配置Hyperkubescripts/local-cluster.sh已知可以工作。对于原始的Hyperkube已知的GKE托管Kubernetes平台默认启用RBAC.因此需要为tiller创建一个服务帐户(serviceaccount),并在初始化helm服务端时使用--service-account参数。查看Tiller和RBAC获取更详细的信息.Ubuntu与kubeadm构建的Kubernetes已知可用于以下Linux版UbuntuFedora发布exportHelm(v2.0.0-beta2exportCoreOS提供的Container
Helm要求kubelet可以socat程序的副本,以与TillerAPI的连接。在ContainerLinux上,Kubelet在具有的hyperkube容器映像中运行。因此,尽管ContainerLinux没有socat,运行kubelet的容器文件系统具有socat。要了解信息,请阅读KubeletWrapper文档。HelmOpenShiftOnline,OpenShiftDedicated,OpenShiftContainerPlatform(3.6)OpenShiftOrigin(版本>=3.6)中直接使用。要了解,请阅读此博客文章。HelmClient和HelmServer(Tiller)预装在Platform9ManagedKubernetes。Platform9通过App UI和本地KubernetesCLI提供对所有Helmcharts的。其他repo库可以手动添加。有关详细信息,请参阅Platform9AppCatalog文章。DC/Helm(客户端和服务器)已经过测试,在MesospheresDC/OS1.11Kubernetes平台工作正常,无需其他配置。Copyright©Mingo( )2017-2018allright,poweredbyGitbookUpdatedat2018-11-2322:31:49安装本节安装或开始使用Helm时遇到的一些经常遇到的问题issue或向我们发送PR问:我无法获得Helm的发布。他们在哪答:我们不再使用发布版本。二进制文件现在在GCS公共区中GCSpublicbucket。问:为什么没有Debian/Fedora/...Helm的原生的软件包?我们很乐意提供这些信息,或者指向可靠的提供商。如果你对帮助感,我们很乐意。这就是Homebrew式的开始。问:你为什么要提供一个curl...|bash?curl答:我们的repo库(scripts/get)中有一 执行。这些传输全部受HTTPS保护curl 具有任何s的所有常见我们提供它是因为它很有用,但我们建议用户先仔细阅读。并且,我们真正喜欢的是Helm的的打包版本安我正在尝试安装Helm/TillerHelm客户端文件放在~/.helmhelm设 helmhelminit--client-onlyhelmrepo注意,如果你有现有的repo库,则需要通 .重helmrepoHelm答:默认情况下,helminit将确认本地$HELM_HOME配置,然后在群集上安装Tiller。要本地配置,但不安装Tiller,请使用helminit--client-only。helminithelminit--dry-run--答:TillerKubernetesdeploymentkubectldeployment
manifest,然后通过Tiller期间报错误Errorresponsefromdaemon:targetisDocker1.13.0KubernetesTillerDocker中的一个错误,它使得一个版本与早期版本的Docker推送到Docker表的镜像不兼容。该问题在发布后不久就已修复,并在Docker1.13.1-RC1入Helm/Tiller,但我使用时碰到问题。问:使用Helm时,收到错误“客户端传输中断”E101402:26:32.885226 16143portforward.go:329]anerroroccurredforwarding37008->44134:errorforwardingport44134topodtiller-deploy- -e4lev_kube-system,uid:unabletodoportforwarding:socatnotfo2016/10/1402:26:32transport:http2Client.notifyErrorgotnotifiedthattheclienttransportwasbrokenError:transportis答:这通常表明Kubernetes通常情况下,缺少的部分是socat。如果正在运行CoreOS,我们知它可能在安装时配置错误。CoreOS团队建议阅读QHelm时,报错误"lookupXXXXXon:53:nosuchError:Errorforwardingports:errorupgradingconnection:dialtcp:lookupkube-4gb-lon1-02on:53:nosuchhostUbuntuKubeadmDNSDNS获添加条目到etc/hosts,将主机名映射到其publicdnsmasq(例如aptinstallydnsmasq删除k8sapi服务容器(kubelet会重新创建它
(或重新启动节点)请/etc/resolv.conf更改请参阅此问题以获取systemctlsystemctlrestart问:在GKE(ContainerEngine)上,报错"NoSSHtunnelscurrentlyError:Errorforwardingports:errorupgradingconnection:NoSSHtunnelscurrentlyopen.Werethetargetsabletoacceptanssh-keyforuser"gke-[redacted]"?Unabletoconnecttotheserver:x509:signedbyunknown答:这个问题是你的本地Kubernetes在GKE上创建集群时,它将提供凭证,包括SSL 颁发机构信息。这些需要在一个Kubernetes配置文
可 问:当我运行Helm命令时,出现有关隧道tunnel或proxy的错kubectl答:Helm使用Kubernetes服务连接到Tiller服务器。如果命 不适用,Helm也不行。通常,错kubectl问:Tiller
当我在Helm上运行命令时,Tiller时会出现如下错误Tillerislisteningon:44134Probesserverislisteningon:44135StoragedriverisConfigMapCannotinitializeKubernetesconnection:theserverhasaskedfortheclienttoprovidecredentials2016-12-2015:18:40.545739I|storage.go:37:Gettingrelease"bailing-chinchilla"(v1)fromstoragepanic:runtimeerror:invalidmemoryaddressornilpointerdereference[signalSIGSEGV:segmentationviolationcode=0x1addr=0x0goroutine77/usr/local/go/src/runtime/panic.go:500+0x1a1k8s.io/helm/vendor/k8s.io/kubernetes/pkg/client/unversioned.(*ConfigMaps).Get(0xc4200c6200,0xc ,0x15,0x1ca7431,0x6,:58k8s.io/helm/pkg/storage/driver.(*ConfigMaps).Get(0xc4201d6190,0xc ,0x15,0xc /home/ubuntu/.go_workspace/src/k8s.io/helm/pkg/storage/driver/cfgmaps.go:69+0x62k8s.io/helm/pkg/storage.(*Storage).Get(0xc4201d61a0,0xc c0,0x12,0xc ,0x12,0x0,0xc /home/ubuntu/.go_workspace/src/k8s.io/helm/pkg/storage/storage.go:38+0x160k8s.io/helm/pkg/tiller.(*ReleaseServer).uniqName(0xc42002a000,0x0,0x0,0xc42016b800,0xd66a13,0xc42055a040, ,0xc /home/ubuntu/.go_workspace/src/k8s.io/helm/pkg/tiller/release_server.go:577+0xd7/home/ubuntu/.go_workspace/src/k8s.io/helm/pkg/tiller/release_server.go:630+0x71,0x0,0x31a9,/home/ubuntu/.go_workspace/src/k8s.io/helm/pkg/tiller/release_server.go:604+0x78068,0xc420250c00,0xc42027c190,0x0,0x0,0x0,0x0,0x0)/home/ubuntu/.go_workspace/src/k8s.io/helm/pkg/proto/hapi/services/tiller.pb.go:747+0x27d ./grpc.(*Server).processUnaryRPC(0xc4202f3ea0,0x28610a0,0xc , ,0x288cbe8,0xc420250bd0,0x0, ./grpc/server.go:608+0xc50 ./grpc.(*Server).handleStream(0xc4202f3ea0,0x28610a0,0xc 64690,0xc420250bd0) ./grpc/server.go:766+0x6b0 , createdbyk8s.io/helm/vendor/ 答:请检查KubernetesTiller中的几乎总是由于未能与KubernetesAPI服务器进行协商而导致的结果(此时,Tiller功能不正常,因此通常,这是认证失败的结果,因为运行Tiller的Pod没有正确的令牌tokenKubernetes--service-account-private-key-filecontroller-manager--service-account-key-file从API服务器指向同一个X509RSA密钥。升我的Helm问:升级后,我收到错误“Clientversion Tiller和Helm必须协商一个通用版本,以确保他们可以安全地进行通信而不会API假设。该错误意味着版本差异太大而无法安全地继续。通常,需要为此手动升级Tiller。InstallationGuideHelmTiller的详细信息。预发布版本与其他一切不兼容。Alpha.1与Alpha.2。修补程序版本兼容:1.2.3与1.2.4兼容少量修订不兼容:1.2.01.3.0不兼容,但我们可能在未来放宽这一限制。主要版本不兼容:1.0.0与2.0.0不兼容。卸问:当我删除Tillerdeployment时,为何所有安装的release安装release信息在kube-system名称空间内的ConfigMaps中。需要手动删除它们以删除记录或使用helmdelete--问:删除我的本地Helm。它的所有文件在哪里Copyright© )2017-2018allright,poweredbyGitbookUpdatedat2018-11-23使本指南讲述使用Helm(和Tiller)来管理Kubernetes群集上的软件包的基础知识。前提是假定你已经安装了Helm客户端和Tiller服务端(通常通过helminit)。如果只是想运行一些简单命令,可以从快速入门指南开始。本章将介绍Helm三大一个Chart是一个Helm包。它包含在Kubernetes集群内部运行应用程序,工具或服务所需的所有资源定义。把它想像为一个软件,一个Aptdpkg或一个YumRPM文件的Kubernetes环境里面的等价物。RepositoryChartsPerlCPANarchiveFedorarepoFedoraPackage一个Release是处于Kubernetes集群中运行的Chart的一个实例。一个chart通常可以多次安装到同一个群集中。每次安装时,都会创建一个新release。比如像一个MySQLchart。如果希望在群集中运行两个数据库,则可以安装该chart两次。每个都有自己的release,每个release都有自己的releasename。有了这些概念,我们现在可以这样解释Helm将charts安装到Kubernetes中,每个安装创建一个新release。要找到新的chart,可以搜索Helmcharts'helmsearch':查找helm首次安装Helm时,它已预配置为使用Kuberneteschart库repo。该repo包含许多精心设计和的charts。此chartsrepo默认以stable命名。helm
charts$helm Oneofthemostversatileopensourcecontentm... AJenkinsHelmchartforKubernetes. ChartforMariaDB Chartfor如果没有使用过滤条件,helmsearch显示所有可用的charts$helmsearch ChartforChartfor
MySQL
helmhelminspect$helminspectFetchedstable/mariadbtomariadb-0.5.1.tgzdescription:ChartforMariaDBengine:home::helm helm'helminstall':安装一个软helmhelm
命令。最简单的方法,它只需要一个参数:chart$helminstallNAME:happy-pandaLASTDEPLOYED:WedSep2812:32:28STATUS:DEPLOYED==> UP-TO- happy-panda- ==> happy-panda- ==> CLUSTER- EXTERNAL- happy-panda- MariaDBcanbeaccessedviaport3306onthefollowingDNSnamefromwithinyourcluster:Toconnecttoyourdatabaserunthefollowingkubectlrunhappy-panda-mariadb-client--rm--tty-i--imagebitnami/mariadb mand--mysql-hhappy-panhappy-现在mariadbchart已安装,请注意,安装chart会创建一个新release对象。上面的release被命名 happy-(release名称,只需使用--namehelminstall。在安装过程中,helm客户端将打印有关创建哪些资源的有用信息,release的状态以及是否可以或应该采取其他的配置Helmcharts600MDocker镜像,因此可能需要很长时间才helm要release状态或重新配置信息,可以使 helm$helmstatushappy-LastDeployed:WedSep2812:32:282016Namespace:default==> CLUSTER- EXTERNAL- happy-panda- ==> UP-TO- happy-panda- ==> happy-panda- MariaDBcanbeaccessedviaport3306onthefollowingDNSnamefromwithinyourcluster:Toconnecttoyourdatabaserunthefollowingkubectlrunhappy-panda-mariadb-client--rm--tty-i--imagebitnami/mariadb mand--mysql-hhappy-pan以上显示了集群内release在安装前自定义chartcharthelminspect要查看chart上可配置的选项,helminspecthelminspectvaluesFetchedstable/mariadb-0.3.0.tgzto/Users/mattbutcher/Code/Go/src/k8s.io/helm/mariadb-##BitnamiMariaDBimage##ref:http ##Default:##Specifya##Defaultto'Always'ifimageTagis'latest',elsesetto'IfNotPresent'##ref:###Specifypasswordforroot##ref: ###Createadatabase##ref: ####Createa##ref: #然后,可以在YAML$echo'{mariadbUser:user0,mariadbDatabase:user0db}'>$helminstall-fconfig.yamlMariaDB的默认用户个chart的默认值。
数据库的权限,其他使用--values(或-f):指定一个overrides的YAML--setsetset(也包 )::在命令行上指定overrides--setset-
helmgethelmgetvalues<release
中。set可以通过使用特定的版本查看已经存在的值行helmupgrade带有--reset-values参数重置。
--set--name/value对。最简单的用法:--setname=value。YAML--name:多个值由,字符分隔。因此--seta=b,c=da:c:支持更复杂的表达式。例如,--setouter.inner=valueinner:{和}中包含值来表示。例如,--setname={a,b,c}abc从Helm2.5.0开始,可以使用数组索引语法列表项。例如,--setservers[0].port=80变成port:可以通过这种方式设置多个值。该行--setservers[0].port=80,servers[0].host=exampleport:80host:
--setname:--setchart
函数解析注释,和节点选择器时派上用场。
表达。鼓励chart设计师在设计values.yaml
--setset-stringfoo--setset-stringfoo=--
将指定的某些值转换为整数。例如,--setfootrueHelm
int64◦
set-filekey= 的另一种变体。它文件并将其内容用作值。set-filekey=本注入值而不处理YAML中的缩进。假设您要创建一个brigade项目,其中包含包含5行JavaScript const{events,Job}=require("brigadier")functionrun(e,project){}defaultScript=-set-YAMLIDEdefaultScript=-set-const{events,Job}=require("brigadier")functionrun(e,project){}helminstall命令可以从多个来源安装:chartrepository像上面看到的chart(helminstallfoo-0.1.1.tgz一个解压后的 (helminstallpath/to/foo一个完整URL(helminstall /charts/foo-1.2.3.tgz'helmupgrade'and'helmrollback':升级版本和失败时helmchartreleasehelm
releaseKuberneteschartHelm会尝试执$helmupgrade-fpanda.yamlhappy-pandahappy-pandahasbeenupgraded.HappyHelming!LastDeployed:WedSep2812:47:542016Namespace:defaultStatus:在上面的例子中,happy-pandarelease使用相同的chart进行升级,但使用新的YAMLhelmget helmget$helmgetvalueshappy-pandamariadbUser:user1helmgetreleasepanda.yaml已被部署helmhelmrollback◦$helmrollbackhappy-pandahelmhistory“happy-panda”releasehelmhistory11
安装/升级/回滚的有用选Helmcli参数的完整列表。要查看所有参数的说明,请运行helm--help。--Kubernetes命令完成的超时时间值(秒),300(5分钟Pod都处于就绪状态,PVCrelease标记为成功之前,Deployments有最小maxUnavailable)Pod处于就绪状态,并且服务具有IP地址(如果 ,则为Ingress)。它会等的值。如果达到超时,releaseFAILEDreplicas1maxUnavailable0,作为滚动更新策略的一部分的情况下,
--nonorecreate-(upgraderollback):pod(deploymentpod--recreate-'helmdelete':删除helmreleasehelm
$helmdeletehappy-这将从集群中删除该release。可以使用以下helmlist命令查看当前部署的所有$helminky-1WedSep2812:59:46alpine-从上面的输出中,我们可以看到该happy-pandareleasehelmlist--helmlist--list--显示了所有list--
⇒⇒helmlist--happy-WedSep2812:47:54mariadb-inky-1WedSep2812:59:46alpine-kindred-2TueSep2716:16:10alpineHelmreleaserelease名称。(release--
release并替换其资源。请注意,因为release'helmrepo':使用到目前为止,只从stable库repo安装chart。但是可以配置helm使用其他repo。Helm在该helmrepo命令下提供了多个repo工具。helmrepolist以下命令查看配置了哪些$helmrepo helmrepohelmrepo
$helmrepoadddev /dev-helmrepo由于chartrepo经常更改,因此可以随时通过运 确保Helm客户端处于helmrepo创建你自己的chartChartDevelopmentGuidechartshelmcreate命令快速入$helmcreatedeis-workflowCreatingdeis-workflowhelmchart./deis-workflowhelmchart
当将chart打包分发时,可以运行以下helmpackage$helmpackagedeis-workflowhelmhelm
$helminstall./deis-workflow-可以将已归档的chart加载到chartrepo中。请参阅chartrepo注意:stablerepo在HelmCharts 库HelmChartsrepository上进行管理。该项目接受chart源代码,并Tiller,Namespaces和在某些情况下,可能希望将Tiller的范围或将多个TillersTillernamespacekube-systemTillers,只要它们各自在自己的namespace中运行。TillernamespaceKubernetesRBAChelminit--service-accounthelminit--service-accountRelease名称在每个Tillerchart
向Tiller添加服务帐户。你可以在这里here.找到的不建议将多个Tillers配置为在相同名空间中管理资源总本章介绍了helmhelm helmhelm有关这些命令的信息,请查看Helm的内置帮助:helmhelp。Copyright© )2017-2018allright,poweredbyGitbookUpdatedat2018-11-24插件Helm2.1.0引入了客户端Helm插件plugin的概念。插件是一种可以通过helmCLI的工具,但它不是内置Helm代码现有的插件可以在相关部分related找到或者通过搜索。概Helm插件是与Helm无缝集成的附加工具。它们提供了扩展Helm功能集的方法,但不需要将每个新功能都通Go语言写入并添加到工具中Helm可以在Helm安装中添加和删除它们,而不会影响Helm工具。他们与Helm集成,并出现在helmhelpHelm$(helmhome)/pluginsHelm插件模型部分建模在Githelmporcelainplumbing。这是揭示Helm提供用户体验和顶级处理逻辑,而插件则是执行所需操作的“细节工作”的简略说法。安装$helmplugininstall使 命令安装插件。可以将路径设置为本地文件系统上的$helmplugininstall$(helmURL。helmplugininstall命令克隆或该插件的路径/URL到给定$(helm$helmplugin /technosophos/helm-如果你有一个插件tar分发版,只需将插件解压到$(helm helmplugin也可以通过直接从helmplugin构建在很多方面,插件类似于chart。每个插件都有一个顶
$(helm|-||-|-在上面的例子中,keybase插件包含在名为keybase
插件的是一个简单的YAML文件
YAMLKeybasename:"keybase"version:usage:"IntegrateKeybase.iotoolswithHelm"description:|-ThispluginprovidesKeybaseservicestoHelm.ignoreFlags:falseuseTunnel:command:name:Helm执行插件时,这是它将使用的名称(例如,helmNAME将调用此插件)name:应该匹 名称。在我们上面的例子中,这意味着插
应该在一个名为keybase helm_name必须限制为ASCIIaz,AZ,0- 和`-_是插件的SemVer2版本
Helm
helmhelmmyplugin--ignoreFlags:--,那ignoreFlags:--TillerTillertrueHelm
为该隧道设置正确的本地地址。不用担心:如果Helm由于Tiller 中将在执行前展开任何环境变量。$HELM_PLUGIN_DIR将指向插件 该命令本身不在s中执行。所以你不能在一个s helmmyplugin helmmyplugin器插
。helm将使用usagedescriptionhelmhelphelmhelp默认情况下,Helm可以使用HTTP/S获取图表。从Helm2.4.0开始,插件可以从任意源chart。插件应在plugin.yaml文件(顶层)中这个特殊功能:helmrepoaddfavorite如果安装了这样的插件,Helm可以通过调用helmrepoaddfavorite
库repo进行交互。特 /的规则与常 库的规则相同/Helm必须能够index.yaml文件以发现并缓存可用charts列表环境
。SSL凭证来自commandcertFilekeyFilecaFilefull-其中的repo定义, 器插件将原始内容转commandcertFilekeyFilecaFilefull-Helm类 HELM_BIN:helm命令的路径(由用户执行)。HELM_HOME:Helm的home的路径。
helm会有简helmHELMPATH*:重要Helm文件
TILLER_HOST:Tiller :port。如果创建隧道,则会指向隧道的本地端点。否则,它会指,host或默认主机(按照优先级的规则)虽 置连接时以其原始状态进行关于如果插件指定useTunnel:true,Helm将执行以下操作(按顺序关于参数标记解在执行插件时,Helmhome--host--kubehome--host--kube-
11-和help-Copyright© )2017-2018allright,poweredbyGitbookUpdatedat2018-06-29RBAC-基于角色的控Kubernetes中,确保应用程序在指定的范围内运行最佳的做法是,为特定的应用程序的服务帐户授予角色。要详细了解服务帐户权限请阅读Kubernetes文档.BitnamiRBACRBAC基础知识。本指南面向希望对Helm限制如下权限的用户:Tiller将资源安装到特定namespaceHelm客户端对Tiller实例的Tiller和基于角色的控--service-account可以在配置Helm时使 参数将服务帐户添加到Tiller。前提条件是必须创建一个--service-accountroleserviceaccounthelminit-helminit-service-accountExample:服务账户带有cluster-admin$kubectlcreateserviceaccounttiller--namespacekube-systemserviceaccount"tiller"createdrbac-文 rbac-apiVersion:v1name:tillerkubekind:ClusterRoleBindingmetadata:name:kind:ClusterRole-kind:ServiceAccountname:tillernamespace:kube-Note:cluster-admin角色是在Kubernetes$kubectlcreate-frbac-config.yamlserviceaccount"tiller"createdclusterrolebinding"tiller"$helminit--service-account在特定namespace中部署Tiller,并仅限于在该namespace在上面的例子中,我们让Tiller管理整个集群。当然,Tiller正常工作并不一定要为它设置集群管理员权限。我们可以指定Role和RoleBinding来将Tiller的范围限制为特定的namespace,而不是指定ClusterRole或$kubectlcreatenamespacetiller-worldnamespace"tiller-world"created$kubectlcreateserviceaccounttiller--namespacetiller-worldserviceaccount"tiller"createdrole-tiller-定义允许Tiller管理 中所有资源的角色,文role-tiller-kind:name:tiller-managerresources:["*"]verbs:$kubectlcreate-frole-tiller.yamlrole"tiller-manager"createdrolebinding-文 rolebinding-kind:name:tiller-binding-kind:ServiceAccountname:tillerapiGroup:$kubectlcreate-frolebinding-tiller.yamlrolebinding"tiller-binding"createdtiller-helmtiller-helm
namespace中安装Tiller$helminit--service-accounttiller--tiller-namespacetiller-$HELM_HOMEhasbeenconfiguredat/Users/awesome-Tiller(theHelmserversidecomponent)hasbeeninstalledintoyourKubernetesCluster.HappyHelming!$helminstallnginx--tiller-namespacetiller-world--namespacetiller-world LASTDEPLOYED:MonAug716:00:16STATUS:DEPLOYED==> READY RESTARTSwayfaring-yak-alpine ContainerCreating Example:在一个namespace中部署Tiller,并限制它在另一个namespace部署资在上面的例子中,我们让Tiller管理它部署所在的namespace。现在,让我们限制Tillernamespace
myorg-myorg-namespaceTillerTillermyorg-myorg-
namespace$kubectlcreatenamespacemyorg-systemnamespace"myorg-system"created$kubectlcreateserviceaccounttiller--namespacemyorg-systemserviceaccount"tiller"createdmyorg-role- 中,定义了一个允许Tillermyorg-role-
kind:name:tiller-managerresources:["*"]verbs:$kubectlcreate-frole-tiller.yamlrole"tiller-manager"createdrolebinding-将serviceaccount与那个role绑定 rolebinding-kind:name:tiller-binding-kind:ServiceAccountname:tillerapiGroup:role-$kubectlcreate-frole-myorg-我们还需要授予Tiller权限myorg-myorg-system.yaml
中的configmaps,以便它可以release信息。kind:name:tiller-manager-apiGroups:verbs:["*"]$kubectlcreate-frole-tiller-myorg-system.yamlrole"tiller-manager"createdrolebinding-tiller-myorg-相应的role绑定. rolebinding-tiller-myorg-kind:name:tiller-binding-kind:ServiceAccountname:tillerapiGroup:$kubectlcreate-frolebinding-tiller-myorg-system.yamlrolebinding"tiller-binding"createdHelm和基于角色的控在pod中运行Helm客户端时,为了让Helm客户端与Tiller实例进行通信,需要授予某些。具体来说,Helm客户端需要能够创建pods,转发端口并能够在Tiller运行的namespace中列出pod(这样它才可以找到Tiller)。Example:在一个namespace中部署Helm,与在另一个namespace中与Tiller交tiller-kube-在这个例子中,假设Tillertiller-kube-namespace中运行。默认情况下,Tiller
的namespace中运行,并且Helm客户端 helm-namespacehelm-helm- helm-apiVersion:v1kind:name:helmhelmkind:Rolename:tiller-user--kind:RoleBindingnamespace:tiller-worldkind:Rolekind:ServiceAccountname:helm$kubectlcreate-fhelm-user.yamlserviceaccount"helm"createdrole"tiller-user"createdCopyright© )2017-2018allright,poweredbyGitbookUpdatedat2018-11-23HelmTiller之间使用HelmTillerSSL/TLSCASSL的加密和身在Helm2.3.0中引入了对基于TLS的验证的支持配置SSL是一个高级,需要你已了解Helm和Tiller。概Tiller认证模型使用客户端SSL。Tiller自己使用认证验证这些。同样,客户端还通过验Tiller的从Helm2.7.2开始,Tiller要求客户端由其CA验证。在之前的版本中,Tiller使用了允许自签名的较弱创建用于为Tiller客户端和服务端颁发的私有为Tiller为Helm创建一个使用该的Tiller实配置Helm客户端以使用CA在本指南结束时,你应该有一个正在运行的Tiller实例,它只接受来自可以通过SSL进行验证的客户端的连生成认证生成SSLCA的法是通
间内准备好配置。对于生产配置,我们建议读者阅读文档theofficialation并咨询其他资源$opensslgenrsa-out./ca.key.pem$opensslreq-keyca.key.pem-new-x509-days7300-sha256-outca.cert.pem-extensionsv3_caEnterpassphraseforca.key.pem:Youareabouttobeaskedtoenterinformationthatwillbeincorporatedintoyourrequest.WhatyouareabouttoenteriswhatiscalledaDistinguishedNameoraDN.TherearequiteafewfieldsbutyoucanleavesomeblankForsomefieldstherewillbeadefaultvalue,Ifyouenter'.',thefieldwillbeleftCountryName(2lettercode)StateorProvinceName(fullname)[Some-State]:COLocalityName(eg,city)[]:BoulderOrganizationName(eg,company)[InternetWidgitsPtyOrganizationalUnitName(eg,section)CommonName(e.g.serverFQDNorYOURname)AddressCAkey文件要特别注意处理。通常,你需要生成中间签名密钥。为了简洁起见,使用我们的根CA签署密钥。生成生成两个,每个代表一种类型一个是用于Tiller的。每个tiller主机需要一个。一个是给用户的。每个helm用户需要一个。由于生成这些命令令是相同的,同时创建。名字将表明他们的目标用处。首先,Tiller密钥:$opensslgenrsa-out./tiller.key.pem4096GeneratingRSAprivatekey,4096bitlongmodulus eis65537EnterpassphraseforVerifying-Enterpassphrasefor接下来,生成Helm$opensslgenrsa-out./helm.key.pem4096GeneratingRSAprivatekey,4096bitlongmodulus eis65537EnterpassphraseforVerifying-Enterpassphrasefor同样,对于生产用途,将为每个用户生成一个客户端接下来,我们需要从这些密钥创建。对于每个,这有两个步骤,创建CSR,然后创建$opensslreq-keytiller.key.pem-new-sha256-outtiller.csr.pemEnterpassphrasefortiller.key.pem:Youareabouttobeaskedtoenterinformationthatwillbeincorporatedintoyour WhatyouareabouttoenteriswhatiscalledaDistinguishedNameoraDN.TherearequiteafewfieldsbutyoucanleavesomeblankForsomefieldstherewillbeadefaultvalue,Ifyouenter'.',thefieldwillbeleftCountryName(2lettercode)StateorProvinceName(fullname)[Some-State]:COLocalityName(eg,city)[]:BoulderOrganizationName(eg,company)[InternetWidgitsPty ]:TillerServerOrganizationalUnitName(eg,section)[]:CommonName(e.g.serverFQDNorYOURname)[]:tiller-serverAddress[]:Pleaseenterthefollowing'extra'tobesentwithyourrequestAchallengepassword[]:Anoptionalcompanyname我们为Helm客户端重复这一步骤$opensslreq-keyhelm.key.pem-new-sha256-out#Answerthequestionswithyourclientuser's- -现在我们使用我们创建的CA对每个CSR进行签名(调整days参数以满足你的要求$opensslx509-req-CAca.cert.pem-CAkeyca.key.pem-CAcreateserial-intiller.csr.pem-outtiller.ce
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业展会特装搭建服务合同 展台设计施工一体协议模板
- 直肠癌放疗便血护理查房
- 心内科精细化护理服务
- 检验检测机构监督管理办法详细解读专业培训
- 2025年河北省承德市丰宁满族自治县数学四年级下学期期中复习检测模拟试题含解析
- 常用中药测试题目及答案分享
- 2025年红色旅游消费金融产品设计
- DB43-T 3492-2025温室气体 产品碳足迹量化方法与要求 锌冶炼产品改
- DB21T 907-2026建筑地基基础技术标准
- 中级出版考试典型试题及答案
- 资产评估学教程(第八版)习题及答案 乔志敏
- GB/T 38471-2023再生铜原料
- 第二章热力学参数状态图
- 《黄帝内经》题库
- 山西幼儿园教师师德档案
- 管理学原理 教案 第四章 决策
- GB/T 28021-2011饰品有害元素的测定光谱法
- 微生物工程课件
- 婚姻财富管理及家庭财富传承课件
- 运动训练管理课件
- 中医药翻译技巧课件
评论
0/150
提交评论