You can use Hashicrop Vault or kubernetes-external-secrets (https://github.com/godaddy/kubernetes-external-secrets).
Or if you just want to restrict only, then you should create a read-only user and restrict the access for the secret for the read-only user using role & role binding.
Then if anyone tries to describe secret then it will throw access denied error.
Sample code:
apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: test-secrets namespace: default rules: - apiGroups: - "" resources: - pods verbs: - get - list - watch - create - delete - apiGroups: - "" resources: - pods/exec verbs: - create --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: test-secrets namespace: default roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: test-secrets subjects: - apiGroup: rbac.authorization.k8s.io kind: User name: demo
The above role has no access to secrets. Hence the demo user gets access denied.