En esta publicación de blog, exploramos la implementación maña de utilizar Terraform en IBM Cloud para crear y tener la llave de la despensa secretos integrando a la perfección su IBM Cloud Kubernetes Service con IBM Cloud Secrets Manager.
Anteriormente, se accedía a esta funcionalidad para dirigir certificados y secretos TLS y no TLS principalmente a través de la CLI utilizando el espacio de nombres ibmcloud ks ingress secret. Esta API permite a los usuarios crear un expediente de “secreto de ingreso” pasando los CRN secretos de Secrets Manager a la API para establecer un secreto correspondiente administrado en su clúster de Kubernetes. En particular, cualquier puesta al día realizada en los secretos interiormente de la instancia de Secrets Manager se refleja automáticamente en el clúster de Kubernetes asociado, lo que garantiza la sincronización entre los dos entornos.
Obra y comportamiento
IBM Cloud Kubernetes Service reconcilia los secretos de Ingress creados de la subsiguiente modo:
El sucesor tiene una instancia existente de IBM Cloud Secrets Manager y una instancia de IBM Cloud Kubernetes Service. El sucesor registra la instancia de Secrets Manager para cerciorarse de que sus CRN secretos se sincronicen entre el secreto de Secrets Manager y los secretos de Ingress correspondientes. Luego, el sucesor crea un secreto de IBM Cloud Kubernetes Ingress que puede ser un secreto opaco o TLS con un CRN (ID) de Secrets Manager. Esto crea un expediente de respaldo en la montón que correlaciona el CRN secreto con el ClusterID/SecretName/SecretNamespace. IBM Cloud Kubernetes Service obtiene el secreto de Secrets Manager a través del CRN. IBM Cloud Kubernetes Service crea un secreto de Kubernetes en el clúster con los títulos de los CRN. IBM Cloud Kubernetes Service garantiza que los títulos de los secretos permanezcan sincronizados con el CRN secreto de Secrets Manager correspondiente.
Beneficios
Al utilizar la integración con IBM Cloud Kubernetes Service e IBM Cloud Secrets Manager, puede servirse los siguientes beneficios:
Cree y administre sin problemas los secretos de Secrets Manager con la rotación cibernética integrada para mejorar la seguridad. Aprovisione sin esfuerzo los secretos de Kubernetes utilizando el CRN secreto de cualquier instancia de Secrets Manager que posea, lo que garantiza una papeleo de secretos consistente y confiable. Sincronice automáticamente y conserve sus secretos interiormente de su clúster de Kubernetes de forma regular, eliminando la penuria de actualizaciones manuales y reduciendo el aventura de secretos obsoletos. Realice un seguimiento y controle fácilmente las fechas de caducidad de sus secretos directamente desde la consola de IBM Cloud, lo que garantiza una rotación oportuna y evita posibles vulnerabilidades de seguridad. Mantenga el control sobre el golpe a sus secretos mediante la creación de grupos secretos, lo que le permite otorgar permisos solo a los usuarios aprobados y mejorar la seguridad militar de sus aplicaciones.
ejemplo práctico
El subsiguiente ejemplo muestra una integración de IBM Cloud Kubernetes e IBM Cloud Secrets Manager a través de un script de Terraform. Para seguir la muestra completa, vaya a este ejemplo. Aprovisionará una instancia de IBM Cloud Secrets Manager, la registrará en un IBM Cloud Kubernetes Service y creará secretos de IBM Cloud Kubernetes Ingress gestionados respaldados por secretos de Secrets Manager.
requisitos previos
Para seguir este ejemplo, necesitará lo subsiguiente:
Recorriendo el raya de Terraform
1. Cree una instancia de IBM Cloud Secrets Manager
Cree una instancia de IBM Cloud Secrets Manager y un conjunto de secretos para introducir sus secretos. Obtenga más información sobre cómo crear una instancia de servicio de Secrets Manager:
expediente “ibm_resource_instance”https://www.ibm.com/blog/unleashing-terraform-for-kubernetes-secret-management-with-ibm-cloud-kubernetes-service-and-secrets-manager/”sm_instance” { nombre = var.sm_instance_name service = “secrets-manager” plan = var.sm_instance_plan ubicación = var.sm_instance_region timeouts { create = “60m” delete = “2h” } } resource “ibm_sm_secret_group”https://www.ibm.com/blog/ desatando-terraform-para-kubernetes-secret-management-with-ibm-cloud-kubernetes-service-and-secrets-manager/”sm_secret_group” { id_instancia = ibm_resource_instance.sm_instance.guid región = ibm_resource_instance.sm_instance.ubicación nombre = var. sm_secret_group_name descripción = var.sm_secret_group_descripción }
2. Configure la autorización de servicio a servicio a través de IAM
Obtenga más información sobre qué configuraciones se necesitan para habilitar la comunicación de servicio a servicio:
expediente “ibm_iam_authorization_policy”https://www.ibm.com/blog/unleashing-terraform-for-kubernetes-secret-management-with-ibm-cloud-kubernetes-service-and-secrets-manager/”sm_auth” { source_service_name = “containers-kubernetes” target_service_name = “secrets-manager” roles = [“Manager”]
}
3. Registre la instancia de Secrets Manager en el clúster de IBM Cloud Kubernetes Service
Cuando registra una instancia de Secrets Manager en su clúster como predeterminada, todos los nuevos certificados de subdominio de Ingress se almacenan en esa instancia:
expediente “ibm_container_ingress_instance”https://www.ibm.com/blog/unleashing-terraform-for-kubernetes-secret-management-with-ibm-cloud-kubernetes-service-and-secrets-manager/”instancia” { cluster = var.cluster_name_or_id secret_group_id = ibm_sm_secret_group.sm_secret_group.secret_group_id instance_crn = ibm_resource_instance.sm_instance.id is_default = true }
4. Cree secretos en Secrets Manager y habilite la rotación cibernética
Cree un secreto de credencial de nombre de sucesor infundado en Secrets Manager. Obtenga más información sobre los diferentes tipos de secretos:
expediente “ibm_sm_arbitrary_secret”https://www.ibm.com/blog/unleashing-terraform-for-kubernetes-secret-management-with-ibm-cloud-kubernetes-service-and-secrets-manager/”sm_arbitrary_secret” { id_instancia = ibm_resource_instance.sm_instance.guid region = ibm_resource_instance.sm_instance.location endpoint_type = var.sm_endpoint_type name = var.sm_arbitrary_secret_name description = var.sm_arbitrary_secret_description expiration_date = var.sm_arbitrary_secret_expiration_date etiquetas = var.sm_arbitrary_secret _labels secret_group_id = ibm_sm_secret_group.sm_secret_group.secret_group_id payload = var.sm_arbitrary_secret_payload } expediente “ibm_sm_username_password_secret”https://www.ibm.com/blog/unleashing-terraform-for-kubernetes-secret-management-with-ibm-cloud-kubernetes-service-and-secrets-manager/”sm_username_password_secret” { id_instancia = ibm_resource_instance.sm_instance.guid region = ibm_resource_instance.sm_instance.location endpoint_type = var.sm_endpoint_type name = var.sm_username_password_secret_name description = var.sm_username_password_secret_description expiration_date = var.sm_username_password_secret_expiration_date etiquetas = var.sm_username_ password_secret_labels secret_group_id = ibm_sm_secret_group.sm_secret_group.secret_group_id rotación { auto_rotate = intervalo cierto = 1 pelotón = “día” } sucesor = var.sm_username_password_secret_username contraseña = var.sm_username_password_secret_password }
5. En el clúster, cree un secreto opaco persistente respaldado por el CRN de los secretos en Secrets Manager.
Cree un secreto Ingress Opaque en el clúster. Ahora, cada vez que se actualicen los secretos en Secrets Manager, el secreto de Kubernetes Opaque correspondiente se actualizará una vez al día. El campo de persistencia garantiza que si un sucesor elimina el secreto del clúster sin darse cuenta, se volverá a crear:
expediente “ibm_container_ingress_secret_opaque”https://www.ibm.com/blog/unleashing-terraform-for-kubernetes-secret-management-with-ibm-cloud-kubernetes-service-and-secrets-manager/”secret_opaque” { cluster = var.cluster_name_or_id secret_name = var.opaque_secret_name secret_namespace = var.opaque_secret_namespace persistence = true campos { crn = ibm_sm_arbitrary_secret.sm_arbitrary_secret.crn } campos { crn = ibm_sm_username_password_secret.sm_username_password_secret.crn } }
Creando la infraestructura
Ahora que ha repasado lo que hará cada sillar del script de Terraform, creemos la infraestructura.
Ejecute terraform init en su directorio. Copie los archivos main.tf y output.tf del repositorio de ejemplo. Cree un archivo .tfvars y complete las variables correspondientes necesarias. Puede obtener más información sobre qué variables se necesitan en el archivo variables.tf. Ejecute terraform plan -var-file=
Demostración de los capital creados
Ahora que se crearon estos capital, acceda al Panel de control de IBM Cloud para ver los capital creados en la Cinta de capital:
Navegue a la instancia creada de IBM Cloud Secrets Manager y vea los secretos creados:
Navegue hasta IBM Cloud Kubernetes Service, haga clic en Ingress, luego seleccione la pestaña Secrets para ver el secreto opaco:
Contáctenos
Esta muestra sirve como punto de partida para mostrar los beneficios y la funcionalidad de integrar Terraform con IBM Cloud Kubernetes Service e IBM Cloud Secrets Manager. Siéntase vacuo de expandir y adaptar este enfoque para que se ajuste a su caso de uso.
Si tiene preguntas, involucre a nuestro equipo a través de Slack registrándose aquí y únase a la discusión en el canal #militar en nuestro IBM Cloud Kubernetes Service Slack manifiesto.