TLS 및 TLS 이외의 인증서 및 비밀 관리
클러스터에서 인증서 및 시크릿을 사용하는 방법을 알아보십시오.
비밀 정보를 중앙에서 관리하고 자동으로 업데이트하려면 를 사용하는 Secrets Manager 것을 고려해 보십시오.
Ingress로 TLS 인증서 및 비밀 관리하기
Ingress TLS 인증서는 Kubernetes 비밀로 저장됩니다. 클러스터 내의 TLS 시크릿을 관리하려면 ibmcloud oc ingress secret 에 있는 일련의 명령어를 사용할 수 있습니다.
예를 들어, 다음 명령을 실행하여 Secrets Manager에서 클러스터의 Kubernetes 시크릿으로 인증서를 가져올 수 있습니다.
ibmcloud oc ingress secret create --cluster CLUSTER_NAME_OR_ID --cert-crn CRN --name SECRET_NAME --namespace openshift-ingress
명령어로 ibmcloud oc ingress secret create 인증서를 가져오려면 클러스터에 등록된 기본 Secrets Manager 인스턴스가 있어야 합니다. Secrets Manager 인스턴스가 없고 시크릿이 클러스터에 직접 작성된 경우, 시크릿에 필수 CRN 값이 없으므로 OpenShiftoc 플러그인 명령어를 사용하여 수동으로 복사해야 합니다.
클러스터에서 TLS 인증서의 모든 Ingress 시크릿을 보려면 다음 명령을 실행하십시오.
ibmcloud oc ingress secret ls -c CLUSTER
IBM-제공된 Ingress 하위 도메인에 대해 TLS 비밀 설정하기
IBM 는 클러스터에 Kubernetes 비밀로 저장된 기본 TLS 인증서와 인그레스 하위 도메인을 제공하며, 이 인증서는 인그레스 리소스에서 지정할 수 있습니다. IBM 제공 TLS 인증서는 LetsEncrypt에 의해 서명되고 IBM에 의해 완벽히 관리됩니다.
IBM에서 제공하는 Ingress 하위 도메인 와일드카드, *.<cluster_name>-<globally_unique_account_HASH>-0000.<region>.containers.appdomain.cloud가 클러스터에 기본적으로 등록되어 있습니다. IBM에서 제공하는 TLS 인증서는 와일드카드 인증서이며 와일드카드 하위 도메인에 사용할 수 있습니다.
IBM-제공된 인그레스 하위 도메인에 기본 TLS 인증서를 사용하려면 다음 단계를 따르세요.
-
기본 TLS 인증서가 저장되어 있는 비밀의 이름을 가져옵니다. 이는 Ingress 리소스의
spec.tls섹션에서 지정하는 시크릿 이름입니다.ibmcloud oc cluster get -c CLUSTER | grep Ingress출력 예
Ingress Subdomain: mycluster-<hash>-0000.us-south.containers.appdomain.cloud Ingress Secret: mycluster-<hash>-0000 -
시크릿 세부사항을 보고 CRN값을 기록하십시오. TLS 인증서의 CRN입니다. 클러스터에 기본 인스턴스가 없는 경우 [Secrets Manager] 인스턴스가 없는 경우, 시크릿에 CRN이 없는 것입니다. 자세한 내용은 다음 단계의 참고 사항을 확인하십시오.
ibmcloud oc ingress secret get -c CLUSTER --name SECRET_NAME --namespace openshift-ingress -
Ingress 리소스 또는 앱이 존재하는 각 네임스페이스에서 기본 TLS 인증서에 대한 비밀을 만듭니다.
--cert-crn명령 옵션으로 TLS 인증서 CRN을 지정합니다.ibmcloud oc ingress secret create --cluster CLUSTER_NAME_OR_ID --cert-crn CRN --name SECRET_NAME --namespace openshift-ingress비밀을 명령어로
ibmcloud oc ingress secret create복사하려면 클러스터에 기본 Secrets Manager 인스턴스가 등록되어 있어야 합니다. Secrets Manager 인스턴스가 없고 시크릿이 클러스터에 직접 작성된 경우, 시크릿에 필수 CRN 값이 없으므로 OpenShiftoc플러그인 명령어를 사용하여 수동으로 복사해야 합니다.
사용자 정의 하위 도메인에 대한 TLS 비밀 설정하기
Ingress 리소스에 사용자 정의 하위 도메인을 정의하는 경우에는 자체 TLS 인증서를 사용하여 TLS 종료를 관리할 수 있습니다. TLS 인증서를 저장할 Kubernetes 비밀을 만든 다음 이 비밀을 앱이 있는 각 네임스페이스로 가져와야 합니다.
에 사용자 지정 TLS 인증서를 저장하면 Secrets Manager 에 저장하면 인증서를 클러스터의 Kubernetes 시크릿으로 직접 가져올 수 있습니다.
-
인그레스 리소스가 있는 네임스페이스에서 TLS 인증서에 대한 비밀을 만들거나 가져옵니다. 예를 들어 다음 명령을 실행하여 Secrets Manager 에서 클러스터로 비밀을 가져올 수 있습니다.
--cert-crn명령 옵션으로 TLS 인증서의 CRN을 지정합니다.명령어로
ibmcloud oc ingress secret create인증서를 가져오려면 클러스터에 등록된 기본 Secrets Manager 인스턴스가 있어야 합니다. Secrets Manager 인스턴스가 없고 시크릿이 클러스터에 직접 작성된 경우, 시크릿에 필수 CRN 값이 없으므로 OpenShiftoc플러그인 명령어를 사용하여 수동으로 복사해야 합니다.ibmcloud oc ingress secret create --name SECRET_NAME --cluster CLUSTER_NAME_OR_ID --cert-crn CERTIFICATE_CRN --namespace openshift-ingress -
앱이 있는 각 네임스페이스에 대해 이전 단계를 반복하십시오.
TLS 이외의 비밀 관리
TLS 이외의 비밀을 관리하려면 ibmcloud oc ingress secret 명령을 사용할 수 있습니다.
TLS 비비밀에는 5가지 유형이 있습니다:
- 임의의 시크릿 은 하나의 문자열 값을 보유합니다.
- IAM 인증 정보 는 IAM API키를 보유합니다.
- 사용자 이름 및 비밀번호 시크릿 은 사용자 이름 및 비밀번호를 두 개의 개별 값으로 보유합니다.
- 키 값 은 JSON값을 보유합니다.
- 사용자 지정 자격 증명에는 사용자 지정(문자열) 값이 저장됩니다.
를 사용하여 TLS 이외의 비밀을 중앙에서 관리하는 방법을 알아보세요 IBM Cloud Secrets Manager. Secrets Manager 을 사용하여 관리되는 Kubernetes 비밀을 만들고, 비밀을 자동으로 업데이트하고, 클러스터에서 비밀에 액세스할 수 있는 사용자를 제어하는 비밀 그룹을 만드는 등의 작업을 할 수 있습니다.
클러스터에 TLS 비밀이 아닌 시크릿 만들기
명령에 --type Opaque 옵션을 지정하여 TLS 이외의 비밀을 만듭니다 ibmcloud oc ingress secret create 명령에 지정합니다. Opaque 유형을 사용하면 여러 개의 비인증서 CRN값을 포함할 수 있습니다. --type 옵션이 지정되지 않은 경우, 기본적으로 TLS 가 적용됩니다.
자세한 정보 및 추가 명령 옵션은 CLI 참조 를 참조하십시오.
다음 예제 명령은 Opaque 유형이 지정된 TLS 이외의 비밀을 만듭니다. TLS 이외의 비밀에는 적어도 하나의 비밀 필드가 필요합니다. --field 옵션을 지정하는 방법은 사용자가 작성하는 시크릿의 유형에 따라 다양합니다.
ibmcloud oc ingress secret create -c cluster-test --name example-secret --namespace openshift-ingress --field crn:v1:bluemix:public:secrets-manager:us-south:a/1aa111aa1a11111aaa1a1111aa1aa111:111a1111-11a1 --type Opaque
시크릿이 작성되었는지 확인하려면 네임스페이스의 모든 시크릿을 나열하십시오.
kubectl get secret -n default
다음 예제는 출력 결과를 보여줍니다.
NAME TYPE DATA AGE
all-icr-io kubernetes.io/dockerconfigjson 1 41h
default-token-8t6xw kubernetes.io/service-account-token 3 41h
example-secret Opaque 3m
TLS 이외의 비밀 필드 관리
비밀 필드는 TLS 비밀이 아닌 키-값 쌍으로 저장되는 필드입니다. TLS 이외의 비밀 필드를 확인, 추가, 업데이트 또는 제거하려면 다음 예시를 참조하세요.
필드 값 보기
시크릿의 세부사항을 가져와서 시크릿 필드의 값을 볼 수 있습니다.
kubectl get secret -n default example-secret -o yaml
다음 예제 출력은 data 섹션의 시크릿 필드 및 해당 값을 표시합니다.
apiVersion: v1
data:
arbitraryFVT: AAAaaAAaAAA1AAAaaAAa
userCredsFVT_password: aAAaa1aaaA=
userCredsFVT_username: aAAaaa==
kind: Secret
metadata:
annotations:
ingress.cloud.ibm.com/cert-source: ibm
razee.io/build-url: https://url.com
razee.io/source-url: https://url.com
creationTimestamp: "2022-11-08T19:45:05Z"
name: example-secret
namespace: default
resourceVersion: "111111"
uid: 1aaa1111-1a11-111a-a1a1-11111a1a1a1a
type: Opaque
ibmcloud oc ingress secret field ls 및 ibmcloud oc ingress secret get 명령을 사용하여 시크릿의 필드를 나열할 수도 있지만 출력에는 필드 이름만 포함되고 연관된 값은 포함되지 않습니다.
비밀 정보 필드 추가
명령어를 실행하여 TLS 비밀이 아닌 비밀 필드에 ibmcloud oc ingress secret field add 명령을 실행하여 --field 옵션과 함께 비밀 필드를 추가합니다. ibmcloud oc ingress secret create 명령으로 시크릿을 작성할 때 이 옵션을 사용하여 필드를 추가할 수도 있습니다. TLS 시크릿의 경우 이 옵션은 지원되지 않습니다.
--field 옵션을 지정하는 세 가지 방법이 있습니다. 선택하는 비밀 정보 유형 및 비밀 정보의 필드 이름 지정 방법에 따라 다릅니다.
| 옵션 | 형식 | 설명 | 지원되는 시크릿 유형 |
|---|---|---|---|
| 기본 | --field <crn> |
추가된 필드의 이름은 지정된 CRN의 시크릿 유형에 대한 기본 필드 이름 입니다. | TLS 이외의 모든 비밀 유형 |
| 이름 지정됨 | --field <name>=<crn> |
추가된 필드의 이름을 지정하려면 이 옵션을 사용하십시오. 추가된 필드의 이름은 <name> 에 지정된 값입니다. |
|
| 접두부 | --field prefix=<crn> |
추가된 필드의 이름은 지정된 CRN으로 지정된 시크릿 유형에 대한 기본 필드 이름 이며, <crn> 및 밑줄로 지정된 시크릿의 이름이 접두부로 추가됩니다. |
|
기본 필드 이름은 임의의 시크릿의 경우, IAM api_key 자격 증명의 경우, arbitrary 사용자 자격 username 증명의 password 경우, key 키-값의 경우 입니다.
다음 예제에서는 서로 다른 --field 옵션이 결과 필드 이름에 영향을 주는 방법을 설명하기 위해 동일한 IAM 인증 정보 시크릿 iam 를 사용하여 세 개의 시크릿 필드를 추가합니다. kubectl get secret 를 실행하고 출력의 data 블록을 확인하여 시크릿에 추가된 필드를 볼 수 있습니다.
ibmcloud oc ingress secret field add --cluster example-cluster --name example-iam-secret --namespace openshift-ingress --field crn:v1:bluemix:public:secrets-manager:us-south:a/1aa111aa-1a11-111a-aa1a-1111aa1aa111:secret:111a1111-11a1-11aa-a1a1-111aa12345aa --field custom_iam_name=crn:v1:bluemix:public:secrets-manager:us-south:a/1aa111aa-1a11-111a-aa1a-1111aa1aa111:secret:111a1111-11a1-11aa-a1a1-111aa12345aa --field prefix=crn:v1:bluemix:public:secrets-manager:us-south:a/1aa111aa-1a11-111a-aa1a-1111aa1aa111:secret:111a1111-11a1-11aa-a1a1-111aa12345aa
시크릿 세부사항의 data 블록에 나열된 예제 필드입니다.
data:
api_key: bmZrUHR1VS1fNVpMOExsTmIxeTdQcXFTSENMc2pTUjRsNTQyTzZkZ2ZQMkk= # Default field type using the default `api_key` field name
custom_iam_name: bmZrUHR1VS1fNVpMOExsTmIxeTdQcXFTSENMc2pTUjRsNTQyTzZkZ2ZQMkk= # Named field type using the specified `custom_iam_name` field name.
iam_api_key: bmZrUHR1VS1fNVpMOExsTmIxeTdQcXFTSENMc2pTUjRsNTQyTzZkZ2ZQMkk= # Prefixed field type using the `iam` name in Secrets Manager followed by the `api_key` default name.
비밀 정보 필드 업데이트
ingress secret update 명령을 실행하여 시크릿 필드의 값을 업데이트하십시오. 이는 CRN을 업데이트하지 않습니다. 자세한 정보 및 명령 옵션은 CLI 참조 를 참조하십시오.
ibmcloud oc ingress secret update --cluster example-cluster --name example-secret --namespace openshift-ingress
비밀 정보 필드 제거
TLS 비밀이 아닌 비밀 필드에서 비밀 필드를 제거할 수 있습니다. 자세한 정보 및 명령 옵션은 CLI 참조 를 참조하십시오.
ibmcloud oc ingress secret field rm -c example-cluster --name example-secret --namespace openshift-ingress --field-name example-Field
시크릿 세부사항의 data 블록을 확인하여 필드가 제거되었는지 확인할 수 있습니다.
kubectl get secret -n default example-secret -o yaml
비밀 정보 FAQ
클러스터에서 시크릿 관리에 대해 일반적으로 묻는 질문에 대한 응답을 검토하십시오.
- Secrets Manager 인스턴스를 작성하고 등록하지 않으면 내 시크릿이 자동으로 업데이트됩니까?
- Secrets Manager 인스턴스를 클러스터에 등록하지 않으면 기본 Ingress 시크릿은 90일마다 자동으로 계속 업데이트되며 클러스터에 적용됩니다. 그러나 기본 Ingress 시크릿을 참조 하여 작성한 시크릿은 자동으로 업데이트되지 않습니다.
- 예제 시나리오:
default네임스페이스에 기본 Ingress 인증서가 있습니다.ibmcloud oc ingress secret create명령을 실행하고 기본 Ingress 인증서의 CRN을 참조하여istio-system네임스페이스의 인증서를 미러링하십시오. Secrets Manager 인스턴스가 없으면default네임스페이스의 기본 Ingress 인증서가 자동으로 업데이트됩니다. 그러나**kubectl**명령 또는 다른 순환 메소드를 사용하여istio-system네임스페이스에서 인증서를 정기적으로 업데이트해야 합니다. - 기본 Ingress 인증서를 참조하는 시크릿을 작성했지만 Secrets Manager 인스턴스를 작성하고 등록하지 않았습니다. 내 비밀 정보를 관리하는 방법은 무엇입니까?
- Secrets Manager 인스턴스를 등록하지 않으면 Red Hat OpenShift on IBM Cloud 은 기본 Ingress 시크릿만 자동으로 업데이트합니다.
kubectl명령 또는 다른 순환 방법을 사용하여 다른 시크릿을 관리해야 합니다. 시크릿이 기본 Ingress 인증서를 참조하는 경우ibmcloud ks ingress secret rm를 사용하여 제거하십시오.