在之前的文章中,我们向你展示了如何使用Helm图表在MicroK8s上部署你喜欢的应用程序。在那篇文章中,我们使用LOGIQ Helm图作为我们在MicroK8s上部署的应用实例。本文将深入探讨我们如何在MicroK8s上为我们的客户部署LOGIQ,映射到一个自定义域并启用HTTPS。
我们在MicroK8s上的LOGIQ的典型部署包括以下步骤。
- 安装MicroK8s
- 启用附加组件
- 创建logiq命名空间
- 分配通配符证书和你的自定义域
- 在MicroK8s上安装LOGIQ
- 启用和配置入口
让我们开始吧。
安装MicroK8s
我们相信你已经知道,MicroK8s是一个轻量级的纯上游Kubernetes,旨在减少K8s和云原生应用开发的入门障碍。我们喜欢MicroK8s,因为它能让我们快速部署一个独立的Kubernetes集群,并在上面安装LOGIQ,简直不到2分钟。
我们部署的第一步是安装MicroK8s。要安装MicroK8s,请运行以下命令。
sudo apt-get -y update sudo snap install core sudo snap install microk8s --classic sudo usermod -a -G microk8s $USER sudo chown -f -R $USER ~/.kube sudo microk8s config > ~/.kube/config
你可以通过命令检查MicroK8s是否已经启动和运行。
sudo microk8s status
启用附加组件
下一步是启用所有我们需要的附加组件来支持我们的LOGIQ安装。我们将启用的附加组件是Helm 3、DNS、ingress、存储和私有注册表。这些附加组件是预先配置好的,不需要任何额外的配置,可以随意启用和禁用。
通过运行以下命令启用附加组件。
microk8s enable helm3 microk8s enable storage microk8s enable dns microk8s enable ingress microk8s enable registry microk8s.kubectl config view > $HOME/.kube/config
创建logiq命名空间
接下来,我们通过运行以下命令创建logiq命名空间。
microk8s kubectl create ns logiq
分配通配符证书和你的自定义域
你可以使用Kubernetes Secrets向MicroK8s集群提供你的通配符证书。如果你选择跳过这一步,LOGIQ服务器会自动生成一个CA证书和一对客户端和服务器证书供你使用。
使用以下模板创建一个名为logiq-erts.yaml的秘密文件。确保你用你的Base64编码的秘密文件替换这个模板中的占位符文本。
apiVersion: v1 kind: Secret metadata: name: logiq-certs type: Opaque data: ca.crt: {{ .Files.Get "certs/ca.crt.b64" }} syslog.crt: {{ .Files.Get "certs/syslog.crt.b64" }} syslog.key: {{ .Files.Get "certs/syslog.key.b64" }}
现在我们可以通过运行以下命令将这个秘密文件安装到logiq命名空间。
microk8s kubectl create -f filename.yaml -n logiq
在MicroK8s上安装LOGIQ
现在我们准备在我们带来的MicroK8s集群上安装LOGIQ。我们首先需要添加Helm repo,因为我们要使用logiq Helm图在MicroK8s上安装LOGIQ。运行下面的命令。
helm repo add logiq-repo
下面的命令会安装LOGIQ,并创建一个S3桶,用于使用AWS S3凭证存储摄取的日志。请确保将此命令模板中的占位符替换为实际值。
helm install logiq --namespace logiq --set global.domain=<your-domain-name> \ --set ingress.tlsEnabled=true \ --set kubernetes-ingress.controller.defaultTLSSecret.enabled=true \ -- set global.chart.s3gateway=false \ --set global.environment.s3_bucket= <your-bucket-name> \ --set global.environment.awsServiceEndpoint=https://s3.us-east-1.amazonaws.com \ --set global.environment.s3_region=us-east-1 \ --set global.environment.AWS_ACCESS_KEY_ID=<your-aws-s3-access-key-id> \ --set global.environment.AWS_SECRET_ACCESS_KEY=<your-aws-s3-secret-access-key> \ --set kubernetes-ingress.controller.defaultTLSSecret.secret=<secret_name> \ --set global.persistence.storageClass=microk8s-hostpath logiq-repo/logiq
启用和配置ingress
我们已经在安装MicroK8s并启动集群后为MicroK8s集群启用了ingress插件。ingress插件在你的MicroK8s集群中添加了一个NGINX ingress控制器。ingress控制器管理外部对MicroK8s集群中服务的访问。
我们现在必须使用DaemonSet规格文件来配置ingress控制器和它的端口。使用下面的daemonset.yaml文件模板,用集群的实际值来更新占位符。
**重要提示:**当使用下面的模板时,确保你将默认的SSL指向我们在上一步创建的秘密文件。
apiVersion: apps/v1
现在我们已经设置了入口控制器,让我们把ConfigMap放在一起,以存储集群中使用的所有对象的配置。使用下面的ConfigMap模板。请确保用你的集群的实际值来替换占位符。
apiVersion: v1 data: "514": logiq/logiq-flash:514 "24224": logiq/logiq-flash:24224 "7514": logiq/logiq-flash:7514 "20514": logiq/logiq-flash:20514 "9998": logiq/logiq-flash:9998 "9999": logiq/logiq-flash:9999 "8081": logiq/logiq-flash:8081 "24225": logiq/logiq-flash:24225 kind: ConfigMap metadata: name: nginx-ingress-tcp-microk8s-conf namespace: ingress annotations: kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"v1","kind":"ConfigMap","metadata":{"annotations":{},"name":"nginx-ingress-tcp-microk8s-conf","namespace":"ingress"}}
我们在MicroK8s上的LOGIQ部署现在已经准备好被访问了。检查logiq命名空间上的ingress控制器,通过运行以下命令确认自定义域是否指向127.0.0.1。
root@logiqai-ami-1626692587-g-8vcpu-32gb-nyc3-01:~/flash-kubernetes/logiq# k get ingress -n logiq NAME CLASS HOSTS ADDRESS PORTS AGE logiq-ingress public microk8s.logiq.ai 127.0.0.1 80, 443 63m
你的LOGIQ部署现在可以通过HTTPS在你配置的自定义域中被访问。
总结
通过这个部署你可以看到,使用Helm图在MicroK8s上部署复杂的应用程序是非常容易的。
原文发表于 https://logiq.ai 于2021年7月30日。
使用Helm图表在MicroK8s上部署LOGIQ最初发表在Nerd For Tech的Medium上,在那里人们通过强调和回应这个故事继续对话。