Helm 및 Terraform을 사용하여 Kubernetes에 linkerd 배포
5570 단어 kubernetesterraformhelmdevops
명령줄tool이 제대로 작동하면 CA 및 발급자 인증서가 생성됩니다. 그러나 파이프라인을 통해 배포할 때 다운로드해야 하며 실행에 작은 문제가 있습니다
linkerd check --pre
. 첫 번째 설치에서만 성공하고 linkerd가 설치된 후에는 실패합니다.그래서 linkerd-cni 및 linkerd viz 대시보드와 함께 Helm과 함께 설치하기로 했습니다. 모든 차트here를 찾을 수 있습니다. 나는 파이프라인에서 Helm 명령줄을 사용하지 않고 Terraformhelm provider을 사용하는 것을 선호합니다. 단일 Terraform 명령 세트를 사용하여 많은 Helm 릴리스를 설치하고 구성할 수 있기 때문입니다.
CA 및 발급자 인증서 생성
Helm과 함께 linkerd를 설치하도록 선택한 경우 자체 CA 및 발급자 인증서를 생성해야 합니다.
step
명령줄 유틸리티를 사용하여 생성하는 방법에 대해 알려줍니다instructions. 그러나 Terraformtls provider을 사용하여 생성할 수도 있습니다.resource "tls_private_key" "ca" {
algorithm = "ECDSA"
ecdsa_curve = "P256"
}
resource "tls_self_signed_cert" "ca" {
private_key_pem = tls_private_key.ca.private_key_pem
is_ca_certificate = true
set_subject_key_id = true
validity_period_hours = 87600
allowed_uses = [
"cert_signing",
"crl_signing"
]
subject {
common_name = "root.linkerd.cluster.local"
}
}
resource "tls_private_key" "issuer" {
algorithm = "ECDSA"
ecdsa_curve = "P256"
}
resource "tls_cert_request" "issuer" {
private_key_pem = tls_private_key.issuer.private_key_pem
subject {
common_name = "identity.linkerd.cluster.local"
}
}
resource "tls_locally_signed_cert" "issuer" {
cert_request_pem = tls_cert_request.issuer.cert_request_pem
ca_private_key_pem = tls_private_key.ca.private_key_pem
ca_cert_pem = tls_self_signed_cert.ca.cert_pem
is_ca_certificate = true
set_subject_key_id = true
validity_period_hours = 8760
allowed_uses = [
"cert_signing",
"crl_signing"
]
}
linkerd Helm 릴리스 구성
이제 필요한 것은 linkerd CNI, linkerd 및 linkerd 비주얼리제이션 대시보드용 리소스 3개
helm_release
를 추가하여 인증서 리소스의 출력을 제공하는 것뿐입니다.resource "helm_release" "linkerd_cni" {
name = "linkerd-cni"
namespace = "linkerd-helm"
repository = "https://helm.linkerd.io/stable"
chart = "linkerd2-cni"
version = "2.11.4"
create_namespace = true
}
resource "helm_release" "linkerd" {
name = "linkerd"
namespace = helm_release.linkerd_cni.namespace
repository = "https://helm.linkerd.io/stable"
chart = "linkerd2"
version = "2.11.4"
create_namespace = false
set {
name = "cniEnabled"
value = "true"
}
set {
name = "identityTrustAnchorsPEM"
value = tls_locally_signed_cert.issuer.ca_cert_pem
}
set {
name = "identity.issuer.tls.crtPEM"
value = tls_locally_signed_cert.issuer.cert_pem
}
set {
name = "identity.issuer.tls.keyPEM"
value = tls_private_key.issuer.private_key_pem
}
}
resource "helm_release" "linkerd_viz" {
name = "linkerd-viz"
namespace = helm_release.linkerd_cni.namespace
repository = "https://helm.linkerd.io/stable"
chart = "linkerd-viz"
version = "2.11.4"
create_namespace = false
}
네임스페이스
Helm에는 릴리스를 만들 네임스페이스가 필요하지만 기본 linkerd 네임스페이스를 미리 만들 수는 없습니다. Helm 차트는 적절한 주석으로 배포하고 구성합니다. 대신 Helm 릴리스만 포함하고 linkerd 리소스는 포함하지 않는
linkerd-helm
라는 새 네임스페이스를 생성하도록 Helm 리소스에 지시합니다. 또한 helm_release_linkerd_cni.namespace
에 대한 암시적 종속성을 사용하므로 linkerd 및 viz 대시보드보다 먼저 CNI가 배포됩니다.표준 terraform init, plan, apply를 실행하면 다음과 같이 끝납니다.
kubectl get namespaces
NAME STATUS AGE
<truncated>
linkerd Active 2d19h
linkerd-cni Active 2d19h
linkerd-helm Active 2d19h
linkerd-viz Active 37h
helm ls --namespace linkerd-helm
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
linkerd linkerd-helm 4 2022-07-29 09:59:38.7045481 +0000 UTC deployed linkerd2-2.11.4 stable-2.11.4
linkerd-cni linkerd-helm 1 2022-07-28 14:40:00.021646641 +0000 UTC deployed linkerd2-cni-2.11.4 stable-2.11.4
linkerd-viz linkerd-helm 1 2022-07-29 20:26:34.495285272 +0000 UTC deployed linkerd-viz-2.11.4 stable-2.11.4
추신 Azure Kubernetes Service에 대한 주의 사항: linkerd를 설치하려는 경우 추가 기능Open Service Mesh을 사용하지 마십시오. 그것은 나를 위해 계속 충돌했습니다.
Reference
이 문제에 관하여(Helm 및 Terraform을 사용하여 Kubernetes에 linkerd 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/oskarm93/deploy-linkerd-to-kubernetes-using-helm-and-terraform-461h텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)