在 Day26 我们建立了 Ingress,使服务能透过 Domain Name 连线,但因为少了 SSL 凭证,只能使用 HTTP 连线,若要提供 HTTPS 加密连线,就需建立凭证提供 Kubernetes 使用。
建立 SSL 凭证有很多方式,可以使用 CertBot
、Acme.sh
等工具自我签发,Kubernetes 也有提供 cert-manager
凭证管理工具,而今天要介绍的是 Google 管理的 SSL 凭证,可以在 Ingress 上快速的建立、更新、管理 Certificates。
本篇参考 Using Google-managed SSL certificates ,我们会在 Helm Chart 建立相关 yaml 档案,让服务可以透过 HTTPS 连线。
进入 Cloud Shell 网站
点击倒三角形->点选专案的 PROJECT_ID
,开启专案 Terminal
certificate.yaml
以及 frontendConfig.yaml
档案cd ~/webapp && touch templates/certificate.yaml templates/frontendConfig.yaml
Explorer -> Open Folder -> 选择 webapp 资料夹 -> Open
建立 ManagedCertificate
元件,需要指定 Domain 名称,这里会从 Values 档案的参数引入。
certificate.yaml
贴上以下内容apiVersion: networking.gke.io/v1beta1
kind: ManagedCertificate
metadata:
name: {{ .Release.Name }}
spec:
domains:
- {{ .Values.ingress.domain }}
当使用者透过 HTTP 连线时,会强制转向到 HTTPS 连线已保证安全性,在 GCE Ingress 需要建立 FrontendConfig
元件启用 redirectToHttps
功能。
frontendConfig.yaml
贴上以下内容apiVersion: networking.gke.io/v1beta1
kind: FrontendConfig
metadata:
name: {{ .Release.Name }}
spec:
redirectToHttps:
enabled: true
responseCodeName: PERMANENT_REDIRECT
接着需要在 Ingress 上对 ManagedCertificate
与 FrontendConfig
元件建立关联。
ingress.yaml
的 annotations
增加以下内容 networking.gke.io/managed-certificates: {{ .Release.Name }}
networking.gke.io/v1beta1.FrontendConfig: {{ .Release.Name }}
相关 yaml 档案都设定完成,就可以更新 Dev 环境,测试看看有无问题。
cd ~/webapp
helm upgrade webapp-dev .
(输出结果)
Release "webapp-dev" has been upgraded. Happy Helming!
NAME: webapp-dev
LAST DEPLOYED: Sun Sep 26 13:59:10 2021
NAMESPACE: default
STATUS: deployed
REVISION: 4
TEST SUITE: None
Certificate 约需要 10 - 20 分钟建立,使用 kubectl get <type>
指令查看。
managedCertificate
kubectl get managedCertificate
(输出结果)
NAME AGE STATUS
webapp-dev 13m Active
当 STATUS 显示 Active 凭证就建立完成了,可以输入网址测试看看。
<your dev domain name>
凭证成功挂上去,并且强制用 HTTPS 连线。
在这几天的教学中,我们在 Helm Chart 建立了 Database 、 Ingress 、 Certificate 等元件,并且在 Dev 环境都已经完成测试,接着就可以将更新上传到 Manifests 的 Git Repo ,透过 ArgoCD 就会自动将 Helm Chart 同步到 Stage 以及 Production 环境。
cd ~/webapp
git add .
git commit -m "update helm chart"
因为之前 GitLabCI 有更新 values 档案,需要先 pull 下来合并一下。
git pull origin master
values 档案有可能会发生 Conflict ,可以在编辑器点击 Accept Current Change 来处理冲突。
处理完 Conflict 就可以 Push 到 GitLab 上面。
git push origin master
在 ArgoCD 查看,等待一段时间就会同步完成。
检查 Stage 以及 Production 网站,凭证已成功挂上去。
经过这几天的教学,专案所需的 Kubernetes 元件都已建置完成,并且已推送至所有环境,明天开始将会以开发者的角度继续建置专案。
<<: TypeScript 能手养成之旅 Day 10 物件型别-扩充型别-列举(Enum)
前言 刚开始学习在docker架设环境,因此在练习制作image跟container的时候经常漏掉一...
实作新增资料与上传档案有两种做法 开一支 API 处理新增使用者,设定成 multipart/for...
这篇主要是讲到有关 Python 中很重要的 import,因为如果後面在做大型专案时,常常需要 i...
今天的内容算是当初一时没考虑到的东西。 主要是Ptt一页的文章最多列出20篇,若要搜寻到20篇以前的...
今天学一下flask这个框架 因为django卡关所以不太想卡在那边 也没人可以问我就换框架看看 找...