9.10. Red Hat OpenShift용 cert-manager Operator와 Istio-CSR 통합
cert-manager Operator for Red Hat OpenShift는 Red Hat OpenShift Service Mesh 또는 Istio에서 워크로드 및 컨트롤 플레인 구성 요소를 보호하기 위한 향상된 지원을 제공합니다. 여기에는 cert-manager 발행자를 사용하여 서명, 전달 및 갱신되는 상호 TLS(mTLS)를 활성화하는 인증서 지원이 포함됩니다. cert-manager Operator for Red Hat OpenShift 관리 Istio-CSR 에이전트를 사용하여 Istio 워크로드 및 컨트롤 플레인 구성 요소를 보호할 수 있습니다.
이 Istio-CSR 통합을 통해 Istio는 이제 Red Hat OpenShift용 cert-manager Operator에서 인증서를 가져와 보안 및 인증서 관리를 단순화할 수 있습니다.
9.10.1. cert-manager Operator for Red Hat OpenShift를 통해 Istio-CSR 에이전트 설치 링크 복사링크가 클립보드에 복사되었습니다!
9.10.1.1. Istio-CSR 에이전트에 대한 루트 CA 발행자 생성 링크 복사링크가 클립보드에 복사되었습니다!
이 절차를 사용하여 Istio-CSR 에이전트에 대한 루트 CA 발행자를 생성합니다.
지원되지 않는 ACME 발행자를 제외하고 지원되는 다른 발급자를 사용할 수 있습니다. 자세한 내용은 "cert-manager Operator for Red Hat OpenShift issuer providers"를 참조하십시오.
프로세스
Issuer및Certificate오브젝트를 정의하는 YAML 파일을 생성합니다.issuer.yaml파일 예Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
다음 명령을 실행하여 Issuer가 생성되고 사용할 준비가 되었는지 확인합니다.
oc get issuer istio-ca -n <istio_project_name>
$ oc get issuer istio-ca -n <istio_project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME READY AGE istio-ca True 3m
NAME READY AGE istio-ca True 3mCopy to Clipboard Copied! Toggle word wrap Toggle overflow
9.10.1.2. IstioCSR 사용자 정의 리소스 생성 링크 복사링크가 클립보드에 복사되었습니다!
cert-manager Operator for Red Hat OpenShift를 통해 Istio-CSR 에이전트를 설치하려면 다음 절차를 사용하십시오.
사전 요구 사항
-
cluster-admin권한이 있는 클러스터에 액세스할 수 있습니다. - Istio-CSR 기능을 활성화했습니다.
Istio-CSR 에이전트의 인증서를 생성하는 데 필요한 발급자 또는
Cluster리소스를 생성했습니다.Issuer참고리소스를 사용하는 경우 Red Hat OpenShift Service Mesh 또는IssuerIstiod네임스페이스에서 발급자 및인증서리소스를 생성합니다. 인증서 요청은 동일한 네임스페이스에 생성되고 이에 따라 RBAC(역할 기반 액세스 제어)가 구성됩니다.
프로세스
다음 명령을 실행하여 Istio-CSR을 설치하기 위한 새 프로젝트를 생성합니다. Istio-CSR을 설치하기 위한 기존 프로젝트가 있는 경우 이 단계를 건너뜁니다.
oc new-project <istio_csr_project_name>
$ oc new-project <istio_csr_project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow IstioCSR사용자 정의 리소스를 생성하여 Istio 워크로드 및 컨트롤 플레인 인증서 서명 요청을 처리하기 위해 cert-manager Operator for Red Hat OpenShift에서 관리하는 Istio-CSR 에이전트를 활성화합니다.참고한 번에 하나의
IstioCSRCR(사용자 정의 리소스)만 지원됩니다. 여러IstioCSRCR이 생성되면 하나만 활성화됩니다.IstioCSR의status하위 리소스를 사용하여 리소스가 처리되지 않았는지 확인합니다.-
여러
IstioCSRCR이 동시에 생성되는 경우 처리되지 않습니다. -
여러
IstioCSRCR이 순차적으로 생성되는 경우 첫 번째 CSR CR만 처리됩니다. -
새 요청이 거부되지 않도록 하려면 처리되지 않은
IstioCSRCR을 삭제합니다. -
Operator는
IstioCSR용으로 생성된 오브젝트를 자동으로 제거하지 않습니다. 활성IstioCSR리소스가 삭제되고 이전 배포를 제거하지 않고 다른 네임스페이스에서 새 리소스가 생성되면 여러istio-csr배포가 활성 상태로 유지될 수 있습니다. 이 동작은 권장되지 않으며 지원되지 않습니다.
IstioCSR오브젝트를 정의하는 YAML 파일을 생성합니다.IstioCSRCR의 예Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
IstioCSR사용자 지정 리소스를 생성합니다.oc create -f IstioCSR.yaml
$ oc create -f IstioCSR.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
여러
검증
다음 명령을 실행하여 Istio-CSR 배포가 준비되었는지 확인합니다.
oc get deployment -n <istio_csr_project_name>
$ oc get deployment -n <istio_csr_project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME READY UP-TO-DATE AVAILABLE AGE cert-manager-istio-csr 1/1 1 1 24s
NAME READY UP-TO-DATE AVAILABLE AGE cert-manager-istio-csr 1/1 1 1 24sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 Istio-CSR 포드가 실행 중인지 확인합니다.
oc get pod -n <istio_csr_project_name>
$ oc get pod -n <istio_csr_project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME READY STATUS RESTARTS AGE cert-manager-istio-csr-5c979f9b7c-bv57w 1/1 Running 0 45s
NAME READY STATUS RESTARTS AGE cert-manager-istio-csr-5c979f9b7c-bv57w 1/1 Running 0 45sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 Istio-CSR Pod에서 로그에 오류를 보고하지 않는지 확인합니다.
oc -n <istio_csr_project_name> logs <istio_csr_pod_name>
$ oc -n <istio_csr_project_name> logs <istio_csr_pod_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 cert-manager Operator for Red Hat OpenShift Pod가 오류를 보고하지 않는지 확인합니다.
oc -n cert-manager-operator logs <cert_manager_operator_pod_name>
$ oc -n cert-manager-operator logs <cert_manager_operator_pod_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.10.2. IstioCSR 사용자 정의 리소스 사용자 정의 링크 복사링크가 클립보드에 복사되었습니다!
IstioCSR CR(사용자 정의 리소스)을 수정하여 Istio 워크로드가 cert-manager Operator와 상호 작용하는 방식을 정의할 수 있습니다.
9.10.2.1. istio-csr 구성 요소의 로그 수준 설정 링크 복사링크가 클립보드에 복사되었습니다!
istio-csr 구성 요소의 로그 수준을 설정하여 로그 메시지의 상세 정보 표시 및 형식을 제어할 수 있습니다.
사전 요구 사항
-
cluster-admin권한이 있는 클러스터에 액세스할 수 있습니다. -
IstioCSRCR(사용자 정의 리소스)을 생성했습니다.
프로세스
다음 명령을 실행하여
IstioCSRCR을 편집합니다.oc edit istiocsrs.operator.openshift.io default -n <istio_csr_project_name>
oc edit istiocsrs.operator.openshift.io default -n <istio_csr_project_name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- &
lt;istio_csr_project_name>을IstioCSRCR을 생성한 네임스페이스로 바꿉니다.
spec.istioCSRConfig섹션에서 로그 수준 및 형식을 구성합니다.로그 수준을 설정하기 위한 샘플 IstioCSR CR 구성
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 편집기를 저장하고 종료하여 변경 사항을 적용합니다. 변경 사항이 적용되면 cert-manager Operator에서 istio-csr 피연산자의 로그 구성을 업데이트합니다.
9.10.2.2. CA 번들 배포를 위한 네임스페이스 선택기 구성 링크 복사링크가 클립보드에 복사되었습니다!
Istio-CSR 에이전트는 CA 번들이 포함된 istio-ca-root-cert ConfigMap 을 생성하고 업데이트합니다. 서비스 메시의 워크로드는 이 CA 번들을 사용하여 Istio 컨트롤 플레인에 대한 연결을 검증합니다. Istio-CSR 에이전트가 이 ConfigMap 을 생성하는 네임스페이스를 지정하도록 네임스페이스 선택기를 구성할 수 있습니다. 선택기를 구성하지 않으면 Istio-CSR 에이전트가 모든 네임스페이스에 ConfigMap 을 생성합니다.
사전 요구 사항
-
cluster-admin권한이 있는 클러스터에 액세스할 수 있습니다. -
IstioCSRCR(사용자 정의 리소스)을 생성했습니다.
프로세스
다음 명령을 실행하여
IstioCSRCR을 편집합니다.oc edit istiocsrs.operator.openshift.io default -n <istio_csr_project_name>
oc edit istiocsrs.operator.openshift.io default -n <istio_csr_project_name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- &
lt;istio_csr_project_name>을IstioCSRCR을 생성한 네임스페이스로 바꿉니다.
spec.istioCSRConfig.istioDataPlaneNamespaceSelector섹션을 구성하여 네임스페이스 선택기를 설정합니다.네임스페이스 선택기를 사용한 IstioCSR CR 구성 샘플
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
maistra.io/member-of=istio-system을 서비스 메시의 네임스페이스를 식별하는 라벨 키와 값으로 교체합니다. <key>=<value> 형식을 사용합니다.
참고istio-csr 구성 요소는 구성된 선택기와 일치하지 않는 네임스페이스에서
ConfigMap오브젝트를 삭제하거나 관리하지 않습니다.IstioCSRCR을 배포한 후 선택기를 생성하거나 업데이트하거나 네임스페이스에서 레이블을 제거하는 경우 충돌을 방지하기 위해 이러한ConfigMap오브젝트를 수동으로 삭제해야 합니다.다음 명령을 실행하여 선택기와 일치하는 네임스페이스에 없는
ConfigMap오브젝트를 나열할 수 있습니다. 이 예에서 선택기는maistra.io/member-of=istio-system:입니다.printf "%-25s %10s\n" "ConfigMap" "Namespace"; \ for ns in $(oc get namespaces -l "maistra.io/member-of!=istio-system" -o=jsonpath='{.items[*].metadata.name}'); do \ oc get configmaps -l "istio.io/config=true" -n $ns --no-headers -o jsonpath='{.items[*].metadata.name}{"\t"}{.items[*].metadata.namespace}{"\n"}' --ignore-not-found; \ doneprintf "%-25s %10s\n" "ConfigMap" "Namespace"; \ for ns in $(oc get namespaces -l "maistra.io/member-of!=istio-system" -o=jsonpath='{.items[*].metadata.name}'); do \ oc get configmaps -l "istio.io/config=true" -n $ns --no-headers -o jsonpath='{.items[*].metadata.name}{"\t"}{.items[*].metadata.namespace}{"\n"}' --ignore-not-found; \ doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 편집기를 저장하고 종료하여 변경 사항을 적용합니다. 변경 사항을 적용한 후 cert-manager Operator for Red Hat OpenShift는 istio-csr 피연산자의 네임스페이스 선택기 구성을 업데이트합니다.
9.10.2.3. Istio 서버의 CA 인증서 구성 링크 복사링크가 클립보드에 복사되었습니다!
Istio 워크로드에서 Istio 서버 인증서를 확인하는 데 사용하는 CA 번들이 포함된 ConfigMap 을 구성할 수 있습니다. 구성되지 않은 경우 cert-manager Operator for Red Hat OpenShift는 구성된 발행자 및 Istio 인증서가 포함된 Kubernetes Secret에서 CA 인증서를 찾습니다.
사전 요구 사항
-
cluster-admin권한이 있는 클러스터에 액세스할 수 있습니다. -
IstioCSRCR(사용자 정의 리소스)을 생성했습니다.
프로세스
다음 명령을 실행하여
IstioCSRCR을 편집합니다.oc edit istiocsrs.operator.openshift.io default -n <istio_csr_project_name>
oc edit istiocsrs.operator.openshift.io default -n <istio_csr_project_name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- &
lt;istio_csr_project_name>을IstioCSRCR을 생성한 네임스페이스로 바꿉니다.
spec.istioCSRConfig.certManager섹션을 편집하여 CA 번들을 구성합니다.CA 번들 구성이 포함된 샘플
IstioCSRCRCopy to Clipboard Copied! Toggle word wrap Toggle overflow 참고CA 인증서가 교체될 때마다 최신 인증서로
ConfigMap을 수동으로 업데이트해야 합니다.-
편집기를 저장하고 종료하여 변경 사항을 적용합니다. 변경 사항이 적용되면 cert-manager Operator에서
istio-csr피연산자의 CA 번들을 업데이트합니다.
9.10.3. cert-manager Operator for Red Hat OpenShift에서 관리하는 Istio-CSR 에이전트 설치 제거 링크 복사링크가 클립보드에 복사되었습니다!
cert-manager Operator for Red Hat OpenShift에서 관리하는 Istio-CSR 에이전트를 제거하려면 다음 절차를 사용하십시오.
사전 요구 사항
-
cluster-admin권한이 있는 클러스터에 액세스할 수 있습니다. - Istio-CSR 기능을 활성화했습니다.
-
IstioCSR사용자 정의 리소스를 생성했습니다.
프로세스
다음 명령을 실행하여
IstioCSR사용자 정의 리소스를 제거합니다.oc -n <istio_csr_project_name> delete istiocsrs.operator.openshift.io default
$ oc -n <istio_csr_project_name> delete istiocsrs.operator.openshift.io defaultCopy to Clipboard Copied! Toggle word wrap Toggle overflow 관련 리소스를 제거합니다.
중요Red Hat OpenShift Service Mesh 또는 Istio 구성 요소가 중단되지 않도록 하려면 다음 리소스를 제거하기 전에 Istio-CSR 서비스 또는 Istio에 발행된 인증서를 참조하는 구성 요소가 없는지 확인합니다.
다음 명령을 실행하여 클러스터 scoped-resources를 나열하고 나중에 참조할 수 있도록 나열된 리소스의 이름을 저장합니다.
oc get clusterrolebindings,clusterroles -l "app=cert-manager-istio-csr,app.kubernetes.io/name=cert-manager-istio-csr"
$ oc get clusterrolebindings,clusterroles -l "app=cert-manager-istio-csr,app.kubernetes.io/name=cert-manager-istio-csr"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 Istio-csr 배포된 네임스페이스의 리소스를 나열하고 나중에 참조할 수 있도록 나열된 리소스의 이름을 저장합니다.
oc get certificate,deployments,services,serviceaccounts -l "app=cert-manager-istio-csr,app.kubernetes.io/name=cert-manager-istio-csr" -n <istio_csr_project_name>
$ oc get certificate,deployments,services,serviceaccounts -l "app=cert-manager-istio-csr,app.kubernetes.io/name=cert-manager-istio-csr" -n <istio_csr_project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하고 나중에 참조할 수 있도록 나열된 리소스의 이름을 저장하여 Red Hat OpenShift Service Mesh 또는 Istio 배포된 네임스페이스의 리소스를 나열합니다.
oc get roles,rolebindings -l "app=cert-manager-istio-csr,app.kubernetes.io/name=cert-manager-istio-csr" -n <istio_csr_project_name>
$ oc get roles,rolebindings -l "app=cert-manager-istio-csr,app.kubernetes.io/name=cert-manager-istio-csr" -n <istio_csr_project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이전 단계에서 나열된 각 리소스에 대해 다음 명령을 실행하여 리소스를 삭제합니다.
oc -n <istio_csr_project_name> delete <resource_type>/<resource_name>
$ oc -n <istio_csr_project_name> delete <resource_type>/<resource_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 관련 리소스가 모두 삭제될 때까지 이 프로세스를 반복합니다.