教程 | K8S中使用Helm部署nginx ingress+let's encrypt
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了教程 | K8S中使用Helm部署nginx ingress+let's encrypt,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4045字,纯文字阅读大概需要6分钟。
内容图文
![教程 | K8S中使用Helm部署nginx ingress+let](/upload/InfoBanner/zyjiaocheng/931/778ef811c0174288abc420e3f3829142.jpg)
K8S技术社区正式上线啦!快快关注找到志同道合的小伙伴!
let's encrypt是一种免费SSL安全证书。
nginx ingress controller提供了一种简单的方式能够将你在kubernetes上的service暴露给外界,并通过let's encrypt提供SSL安全证书。为了简化安装这些组件,我们使用Helm。
01
首先Helm是什么?
Helm是管理kubernetes charts的工具。charts是预配置好的kubernetes资源包。
用Helm可以:
找到并且使用软件包作为kubernetes charts。
以kubernetes charts的方式分享你自己的应用。
为你的kubernetes应用创建可重复利用的builds。
清晰的管理你的kubernetes manifest文件。
管理Helm包的releases版本。
02
关于Helm的安装
如果你还没有安装Helm、macOS/homebrew 用户可以运行brew install kubernetes-helm获取到一个release。Helm使用kubectl和你的kubernetes集群通信。下一步你可以通过helm init命令安装helm的后端组件。运行helm version查看安装结果是否正常。
$ helm version
Client: &version.Version{SemVer:”v2.2.0", GitCommit:”fc315ab59850ddd1b9b4959c89ef008fef5cdf89", GitTreeState:”clean”}
Server: &version.Version{SemVer:”v2.2.0", GitCommit:”fc315ab59850ddd1b9b4959c89ef008fef5cdf89", GitTreeState:”clean”}
03
安装nginx ingress+let's encrypt
幸运地是,目前已经有了官方的helm repo让我们可以轻易的安装ingress controller, prometheus以及其他一些有趣的charts。
安装nginx-lego(nginx ingress controller + let’s encrypt go)仅仅只是运行一条helm命令:
$ helm intall stable/nginx-lego --name nginx-lego --set lego.configmap.email=<your-email>
NAME: nginx-lego
LAST DEPLOYED: Thu Feb 23 11:43:56 2017
NAMESPACE: default
STATUS: DEPLOYED
RESOURCES:
==> v1/ConfigMap
NAME DATA AGE
nginx-lego-nginx-lego 7 1s
==> v1/Service
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx-lego-nginx-lego-default-backend 10.0.0.150 <none> 80/TCP 1s
nginx-lego-nginx-lego 10.0.0.59 <pending> 80:30635/TCP,443:31385/TCP 1s
==> extensions/v1beta1/Deployment
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
nginx-lego-nginx-lego 1 1 1 0 1s
nginx-lego-nginx-lego-default-backend 1 1 1 0 1s
NOTES:
This chart runs an nginx-ingress-controller adding the ability to use ingress resources to route in your cluster.
EXAMPLE INGRESS YAML:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
namespace: foo
annotations:
# Add to route through the nginx service
kubernetes.io/ingress.class: nginx
spec:
rules:
- host: www.example.com
http:
paths:
- backend:
serviceName: exampleService
servicePort: 80
path: /
$ helm list
NAME REVISION UPDATED STATUS CHART NAMESPACE
factual-hedgehog 1 Thu Feb 23 11:28:16 2017 DEPLOYED nginx-lego-0.2.0 default
现在你可以添加一条kubernetes.io/tls-acme: "true"的annotations到ingress资源。以下是一个包含let's encrypt的举例:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: echoserver
annotations:
kubernetes.io/tls-acme: "true"
kubernetes.io/ingress.class: "nginx"
spec:
tls:
- hosts:
- example.com
secretName: example.com-tls
rules:
- host: example.com
http:
paths:
- path: /
backend:
serviceName: webserver
servicePort: 80
04
配置Helm chart
所有的nginx-lego chart配置选项在https://github.com/kubernetes/charts/blob/master/stable/nginx-lego/values.yaml描述。你可以写下你自己的配置文件或者通过helm命令的方式来覆写这些配置项。
own-values.yaml文件:
lego:
configmap:
email: <your-email>
# Production Let's Encrypt server
url: "https://acme-v01.api.letsencrypt.org/directory"
之后更新nginx controller: helm upgrade nginx-lego stable/nginx-lego --values=own-values.yaml
Note
nginx-lego将会默认使用loadbalancer。你可以将nginx.service.type的值设置为ClusterIP 或者 Nodeport。
内容总结
以上是互联网集市为您收集整理的教程 | K8S中使用Helm部署nginx ingress+let's encrypt全部内容,希望文章能够帮你解决教程 | K8S中使用Helm部署nginx ingress+let's encrypt所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。