gpt4 book ai didi

sslCertificateCouldNotParseCert - 同步到 GCP 时出错 :

转载 作者:行者123 更新时间:2023-12-04 07:51:13 26 4
gpt4 key购买 nike

我有一个 terraform 代码,它将部署前端应用程序并具有 ingress.yaml Helm chart 。
ingress.yaml

{{- if .Values.ingress.enabled -}}
{{- if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}}
apiVersion: networking.k8s.io/v1beta1
{{- else -}}
apiVersion: extensions/v1beta1
{{- end }}
kind: Ingress
metadata:
name: {{ .Values.global.namespace }}-ingress
namespace: {{ .Values.global.namespace }}
labels:
{{- include "test-frontend.labels" . | nindent 4 }}
annotations:
kubernetes.io/ingress.class: "gce-internal"
kubernetes.io/ingress.allow-http: "false"
spec:
{{- if .Values.ingress.tls }}
tls:
{{- range .Values.ingress.tls }}
- hosts:
{{- range .hosts }}
- {{ . | quote }}
{{- end }}
secretName: {{ .secretName }}
{{- end }}
{{- end }}
rules:
{{- range .Values.ingress.hosts }}
- host: {{ .host | quote }}
http:
paths:
{{- range .paths }}
- path: {{ .path }}
backend:
serviceName: {{ .servicename }}
servicePort: {{ .serviceport }}
{{- end }}
{{- end }}
{{- end }}
值.yaml
ingress:
enabled: true
annotations:
kubernetes.io/ingress.class: "gce-internal"
kubernetes.io/ingress.regional-static-ip-name : "ingress-internal-static-ip"
kubernetes.io/ingress.allow-http: "false"
hosts:
- host: test-dev.test.com
paths:
- path: "/*"
servicename: test-frontend-service
serviceport: 80
- path: "/api/*"
servicename: test-backend-service
serviceport: 80
tls:
- hosts:
- test-dev.test.com
secretName: ingress-tls-credential-file
type: kubernetes.io/tls
crt: <<test.pem value>>
key: <<test.key value>>
terraform apply命令运行成功。在 GCP 中,证书也被接受,并在 GCP 中的 Kubernetes 服务中启动和运行。但是如果我将 .crt 和 .key 作为文件传递到 values.yaml在地形代码中
ingress:
enabled: true
annotations:
kubernetes.io/ingress.class: "gce-internal"
kubernetes.io/ingress.regional-static-ip-name : "ingress-internal-static-ip"
kubernetes.io/ingress.allow-http: "false"
hosts:
- host: test-dev.test.com
paths:
- path: "/*"
servicename: test-frontend-service
serviceport: 80
- path: "/api/*"
servicename: test-backend-service
serviceport: 80
tls:
- hosts:
- test-dev.test.com
secretName: ingress-tls-credential-file
type: kubernetes.io/tls
crt: file(../../.secret/test.crt)
key: file(../../.secret/test.key)
values.yaml将证书发送到 helm->template->secret.yaml 将创建 secret (ingress-tls-credential-file)
secret .yaml
{{- if .Values.ingress.tls }}
{{- $namespace := .Values.global.namespace }}
{{- range .Values.ingress.tls }}
apiVersion: v1
kind: Secret
metadata:
name: {{ .secretName }}
namespace: {{ $namespace }}
labels:
{{- include "test-frontend.labels" $ | nindent 4 }}
type: {{ .type }}
data:
tls.crt: {{ toJson .crt | b64enc | quote }}
tls.key: {{ toJson .key | b64enc | quote }}
{{- end }}
{{- end }}
我们在 GCP -> Kubernetes Engine -> Service & Ingress 中遇到错误。如何将文件传递给 values.yaml 文件。

Error syncing to GCP: error running load balancer syncing routine:loadbalancer 6370cwdc-isp-isp-ingress-ixjheqwi does not exist: Certcreation failures - k8s2-cr-6370cwdc-q0ndkz9m629eictm-ca5d0f56ba7fe415Error:googleapi: Error 400: The SSL certificate could not be parsed.,sslCertificateCouldNotParseCert

最佳答案

所以谷歌可以接受你的证书和 key 文件,你需要确保它们具有正确的格式,按照接下来的步骤

  • 您需要先格式化它们,创建一个 Self Managed SSL Certificate resource使用 GCP Cloud Shell 处理现有文件
  • gcloud compute ssl-certificates create CERTIFICATE_NAME \
    --certificate=CERTIFICATE_FILE \
    --private-key=PRIVATE_KEY_FILE \
    --region=REGION \
    --project=PROJECT_ID
    然后,您需要完成更多步骤,以确保您拥有 .yaml 文件中所需的所有参数,并且您已启用适当的服务来接受来自它的信息(您可能已经完成了它们):
  • 通过运行以下命令启用 Kubernetes Engine API:
  • gcloud services enable container.googleapis.com \
    --project=PROJECT_ID
  • 创建 GKE 集群:
  • gcloud container clusters create CLUSTER_NAME \
    --release-channel=rapid \
    --enable-ip-alias \
    --network=NETWORK_NAME \
    --subnetwork=BACKEND_SUBNET_NAME \
    --scopes=https://www.googleapis.com/auth/cloud-platform \
    --region=REGION --machine-type=MACHINE_TYPE \
    --project=PROJECT_ID
  • 集群创建于 BACKEND_SUBNET_NAME .
  • 集群使用 GKE 版本为 1.18.9-gke.801 或更晚。
  • 集群是使用 Cloud Platform 范围创建的。
  • 集群是使用您希望用于运行应用程序的所需服务帐户创建的。
  • 集群正在使用 n1-标准-4 机器类型或更好。
  • 通过执行以下步骤启用 IAP:
  • Configure the OAuth consent screen.
  • Create OAuth credentials.
  • 通过运行以下命令将 ID 和 Secret 转换为 base64:
  • echo -n 'CLIENT_ID' | base64
    echo -n 'CLIENT_SECRET' | base64
  • 创建一个内部静态 IP 地址,并为您的负载均衡器保留一个静态 IP 地址
  • gcloud compute addresses create STATIC_ADDRESS_NAME \
    --region=REGION --subnet=BACKEND_SUBNET_NAME \
    --project=PROJECT_ID
  • 通过运行以下命令获取静态 IP 地址:
  • gcloud compute addresses describe STATIC_ADDRESS_NAME \
    --region=REGION \
    --project=PROJECT_ID
    7. 通过复制 gke_internal_ip_config_example.yaml 并将其重命名为 PROJECT_ID_gke_config.yaml 来创建值 YAML 文件: clientIDEncoded :来自前面步骤的 Base64 编码的 CLIENT_ID。 clientSecretEncoded :来自前面步骤的 Base64 编码的 CLIENT_SECRET。 certificate.name :您之前创建的 CERTIFICATE_NAME。 initialEmail :将设置自定义治理的初始用户的 INITIAL_USER_EMAIL 电子邮件。 staticIpName :您之前创建的 STATIC_ADDRESS_NAME。
    完成上述步骤后重试部署。

    关于sslCertificateCouldNotParseCert - 同步到 GCP 时出错 :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66968287/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com