OpenUnison Operator为在Kubernetes和OpenShift上运行的OpenUnison实例提供运维自动化机制。该Operator会生成运行OpenUnison所需的密钥和对象,包括证书密钥生成、Kubernetes/OpenShift资源创建、SAML2元数据导入、数据库初始化及ActiveMQ部署等,旨在简化OpenUnison的运维管理流程。
keytool 即可生成证书和密钥Secret、Deployment、Service和Ingress规则Route、DeploymentConfig、ImageStream和BuildOperators有助于自动化常见任务。对于OpenUnison,最常见的任务与证书管理和服务账户相关。例如,当与远程SAML2身份提供商(如Active Directory Federation Services)配合使用时,OpenUnison可以检查可信证书是否已轮换,如有需要则自动重新部署,无需管理员干预。
!OpenUnison Operator与SAML2
除了自动化常见运维任务外,Operator还提供了Kubernetes原生方式更新OpenUnison配置。现在更新配置只需更新Kubernetes中的对象,无需手动生成密钥库或网络配置。
在OCP4内部,进入Operator Hub并搜索OpenUnison认证Operator:
!OpenUnison Operator在OCP4 OperatorHub中
OpenUnison Operator在OpenUnison将要运行的命名空间中以最小权限运行。部署Operator前,需要以具有部署CRD对象权限的身份安装OpenUnison的CRD:
kubectl create -f [***]
CRD部署完成后,作为命名空间管理员,需要创建RBAC规则和ServiceAccount:
kubectl create -f [***] -n openunison
最后部署Operator。在OpenShift上运行时,使用OpenShift原生对象:
kubectl create -f XXXXXXX
在Kubernetes上:
kubectl create -f [***] -n openunison
部署完成后,将运行一个pod,等待OpenUnison自定义资源的部署。
OpenUnison Operator会定期更新以修复已知CVE。升级Operator的最简单方法是终止Operator的pod,使其拉取最新版本。
使用转换器工具生成OpenUnison CR - TODO
OpenUnison自定义资源用于配置以下内容:
keytool)Secret(OpenUnison允许将参数集成到配置中,使配置可安全存储在源代码控制中并跨环境使用,这些数据现在来自Kubernetes对象,无需嵌入到单个大型密钥中)以下是Kubernetes的简单OpenUnison CR示例:
yamlapiVersion: openunison.tremolo.io/v1 kind: OpenUnison metadata: name: test-openunison namespace: openunison spec: image: tremolosecurity/openunison-simple replicas: 1 enable_activemq: false dest_secret: openunison source_secret: openunison-secrets-source hosts: - names: - name: test.apps.mydomain.com env_var: OU_HOST ingress_name: openunison secret_name: ou-tls-certificate secret_data: - unisonKeystorePassword - TEST_USER_PASSWORD - REG_CRED_PASSWORD non_secret_data: - name: REG_CRED_USER value: rh_user - name: TEST_USER_NAME value: testuser - name: MYVD_CONFIG_PATH value: WEB-INF/myvd.conf - name: unisonKeystorePath value: /etc/openunison/unisonKeyStore.p12 openunison_network_configuration: open_port: 8080 open_external_port: 80 secure_port: 8443 secure_external_port: 443 secure_key_alias: unison-tls force_to_secure: true activemq_dir: /tmp/amq quartz_dir: /tmp/quartz client_auth: none allowed_client_names: [] ciphers: - TLS_RSA_WITH_RC4_128_SHA - TLS_RSA_WITH_AES_128_CBC_SHA - TLS_RSA_WITH_AES_256_CBC_SHA - TLS_RSA_WITH_3DES_EDE_CBC_SHA - TLS_RSA_WITH_AES_128_CBC_SHA256 - TLS_RSA_WITH_AES_256_CBC_SHA256 path_to_deployment: /usr/local/openunison/work path_to_env_file: /etc/openunison/ou.env key_store: static_keys: - name: session-unison version: 1 trusted_certificates: - name: trusted-adldaps pem_data: |- -----BEGIN CERTIFICATE----- MIIDNDCCAhygAwIBAgIQbRNj6RKqtqVPvW65qZxXXjANBgkqhkiG9w0BAQUFADAi MSAwHgYDVQQDDBdBREZTLkVOVDJLMTIuRE9NQUlOLkNPTTAeFw0xNDAzMjgwMTA1 MzNaFw0yNDAzMjUwMTA1MzNaMCIxIDAeBgNVBAMMF0FERlMuRU5UMksxMi5ET01B SU4uQ09NMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2s9JkeNAHOkQ 1QYJgjefUwcaogEMcaW/koA+bu9xbr4rHy/2gN/kc8OkoPuwJ/nNlOIO+s+MbnXS L9mUTC4OK7trkEjiKXB+D+VSYy6imXh6zpBtNbeZyx+rdBnaOv3ByZRnnEB8LmhM vHA+4f/t9fx/2vt6wPx//VgIq9yuYYUQRLm1WjyUBFrZeGoSpPm0Kewm+B0bhmMb dyC+3fhaKC+Uk1NPodE2973jLBZJelZxsZY40Ww8zYQwdGYIbXqoTc+1a/x4f1En m4ANqggHtw+Nq8zhss3yTtY+UYKDRBILdLVZQhHJExe0kAeisgMxI/bBwO1HbrFV +zSnk+nvgQIDAQABo2YwZDAzBgNVHSUELDAqBggrBgEFBQcDAQYIKwYBBQUHAwIG CisGAQQBgjcUAgIGCCsGAQUFBwMDMB0GA1UdDgQWBBTyJUfY66zYbm9i0xeYHuFI 4MN7uDAOBgNVHQ8BAf8EBAMCBSAwDQYJKoZIhvcNAQEFBQADggEBAM5kz9OKNSuX 8w4NOgnfIFdazd0nPlIUbvDVfQoNy9Q0S1SFUVMekIPNiVhfGzya9IwRtGb1VaBQ AQ2ORIzHr8A2r5UNLx3mFjpJmeOxQwlV0X+g8s+253KVFxOpRE6yyagn/BxxptTL a1Z4qeQJLD42ld1qGlRwFtVRmVFZzVXVrpu7NuFd3vlnnO/qKWXU+uMsfXtsl13n ec1kw1Ewq2jnK8WImKTQ7/9WbaIY0gx8mowCJSOsRq0TE7zK/N55drN1wXJVxWe5 4N32eCqotXy9j9lzdkNa7awb9q38nWVxP+va5jqNIDlljB6tExy5n3s7t6KK6g5j TZgVqrZ3+ms= -----END CERTIFICATE----- key_pairs: create_keypair_template: - name: ou value: k8s - name: o value: Tremolo Security - name: l value: Alexandria - name: st value: Virginia - name: c value: US keys: - name: unison-tls tls_secret_name: unison-tls-secret import_into_ks: keypair create_data: sign_by_k8s_ca: false server_name: test-openunison.openunison.svc.cluster.local subject_alternative_names: [] key_size: 2048 ca_cert: true - name: unison-ca tls_secret_name: ou-tls-certificate import_into_ks: certificate create_data: sign_by_k8s_ca: false server_name: test.apps.mydomain.com subject_alternative_names: [] key_size: 2048 ca_cert: false
hostshosts部分告知Operator在Kubernetes中创建哪些Ingress对象或在OpenShift中创建哪些Route。每个主机的主机名存储在环境密钥中,以便在OpenUnison配置中使用。在Kubernetes上,单个Ingress对象可包含多个主机名;在OpenShift上,每个Route只能有一个主机名。在Kubernetes上,需指定用于Ingress对象的密钥对名称。
secret_data此部分列出source_secret中应导入到OpenUnison环境密钥的data元素。
non_secret_data使用此部分定义不被视为机密的参数,例如环境参数、主机名等。切勿在此部分存储密码。
openunison_network_configurationOpenUnison的网络配置,通常可直接使用默认值。
key_store此部分定义OpenUnison使用的密钥库内容,包含以下子部分:
static_keysOpenUnison广泛使用静态AES-256密钥。此部分定义要创建的密钥。列出的每个密钥都会添加到存储这些密钥的Secret中。当version更改时,Operator将生成新密钥并添加到密钥库。
trusted_certificates此列表中的每个证书都会作为受信任证书添加到密钥库,例如需要信任的远程LDAPS服务证书。
key_pairsOpenUnison Operator可以生成自签名证书或包含存储在Kubernetes中的TLS密钥对作为Secret。
create_keypair_template此部分定义生成的密钥对主题的组成部分(主机名除外)。
keys列出的每个密钥要么从tls_secret_name指定的Secret导入(如果存在),要么生成并存储在tls_secret_name中。生成证书时为自签名,主题基于create_data部分生成。生成的证书将使用server_name作为主题,并生成包含server_name的主题备用名称列表。
OpenUnison Operator将使用OpenShift原生对象部署到OpenShift。如果Operator部署在OpenShift上,image选项将被忽略,而是使用openshift部分驱动Source-to-Image流程。
以下是在OpenShift中启动仅包含测试用户的OpenUnison实例的简单OpenUnison CR示例:
yamlapiVersion: openunison.tremolo.io/v1 kind: OpenUnison metadata: name: test-openunison namespace: openunison spec: openshift: git: repo: '[***] branch: master dir: / builder_image: registry.connect.redhat.com/tremolosecurity/openunison-s2i-10 replicas: 1 enable_activemq: false dest_secret: openunison source_secret: openunison-secrets-source hosts: - names: - name: test.apps.mydomain.com env_var: OU_HOST ingress_name: openunison secret_data: - unisonKeystorePassword - TEST_USER_PASSWORD - REG_CRED_PASSWORD non_secret_data: - name: REG_CRED_USER value: rh_user - name: TEST_USER_NAME value: testuser - name: MYVD_CONFIG_PATH value: WEB-INF/myvd.conf - name: unisonKeystorePath value: /etc/openunison/unisonKeyStore.p12 openunison_network_configuration: open_port: 8080 open_external_port: 80 secure_port: 8443 secure_external_port: 443 secure_key_alias: unison-tls force_to_secure: true activemq_dir: /tmp/amq quartz_dir: /tmp/quartz client_auth: none allowed_client_names: [] ciphers: - TLS_RSA_WITH_RC4_128_SHA - TLS_RSA_WITH_AES_128_CBC_SHA - TLS_RSA_WITH_AES_256_CBC_SHA - TLS_RSA_WITH_3DES_EDE_CBC_SHA - TLS_RSA_WITH_AES_128_CBC_SHA256 - TLS_RSA_WITH_AES_256_CBC_SHA256 path_to_deployment: /usr/local/openunison/work path_to_env_file: /etc/openunison/ou.env key_store: static_keys: - name: session-unison version: 1 trusted_certificates: [] key_pairs: create_keypair_template: - name: ou value: k8s - name: o value: Tremolo Security - name: l value: Alexandria - name: st value: Virginia - name: c value: US keys: - name: unison-tls tls_secret_name: unison-tls-secret import_into_ks: keypair create_data: sign_by_k8s_ca: false server_name: test-openunison.openunison.svc.cluster.local subject_alternative_names: [] key_size: 2048 ca_cert: true
openshift此部分特定于OpenShift部署(3.x和4.x),通过Source-to-Image系统控制OpenUnison容器的构建过程。git部分告知构建器从何处获取OpenUnison源代码,builder_image指向要使用的s2i镜像。此处指向Red Hat认证镜像,上游CentOS版本可从tremolosecurity/openunisons2idocker:latest获取。
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429