文章目录
前言
公司的 CI/CD 平台研发要告一个段落了,在此记录一下如何使用 k8s 的客户端工具 kubectl 来进行更新操作的。
更新 Deployment
要知道 kubectl 是不支持 update 操作的,假设有如下Deployment.yaml需要进行部署:
apiVersion: extensions/v1beta1kind: Deploymentmetadata: namespace: test name: hellospec: selector: matchLabels: app: hello replicas: 1 template: metadata: labels: app: hello spec: containers: - name: hello image: nginx imagePullPolicy: Always ports: - containerPort: 80 env: - name: LOGGING_LEVEL value: "INFO"
---apiVersion: v1kind: Servicemetadata: namespace: test name: hellospec: selector: app: hello ports: - protocol: TCP port: 80 targetPort: 80 type: ClusterIP只需要执行kubectl apply -f Deployment.yaml即可,可以理解为 createOrUpdate 操作。
更新 Secret
因为测试环境和预备环境的 HTTPS 证书是使用的letsencrypt的免费证书
,每过一段时间都需要续签一次生成新的证书相关文件,所以每次生成完都需要更新 k8s 中对应的 secret 信息。
执行以下命令:
kubectl create secret tls hello \ --namespace test \ --key ./privkey.pem \ --cert ./fullchain.pem \ --dry-run \ -o yaml \ | \ kubectl apply -f -主要是--dry-run配合-o yaml生成对应的 yaml 文件,然后再使用kubectl apply -f -进行更新。
- —dry-run 表示不会发生实际的操作,也就是不会对 k8s 产生影响
- kubectl apply -f - 表示拿到上一个管道的输入进行执行