Adds support for webhook token auth. (#3939)
Webhook token auth: https://kubernetes.io/docs/reference/access-authn-authz/authentication/#webhook-token-authentication Fixes #3063.
This commit is contained in:
parent
100d972cea
commit
16715adfa0
7 changed files with 63 additions and 4 deletions
|
@ -100,6 +100,7 @@ kube_api_runtime_config:
|
||||||
kube_basic_auth: false
|
kube_basic_auth: false
|
||||||
kube_token_auth: false
|
kube_token_auth: false
|
||||||
kube_oidc_auth: false
|
kube_oidc_auth: false
|
||||||
|
kube_webhook_token_auth: false
|
||||||
|
|
||||||
## Variables for OpenID Connect Configuration https://kubernetes.io/docs/admin/authentication/
|
## Variables for OpenID Connect Configuration https://kubernetes.io/docs/admin/authentication/
|
||||||
## To use OpenID you have to deploy additional an OpenID Provider (e.g Dex, Keycloak, ...)
|
## To use OpenID you have to deploy additional an OpenID Provider (e.g Dex, Keycloak, ...)
|
||||||
|
@ -113,6 +114,9 @@ kube_oidc_auth: false
|
||||||
# kube_oidc_groups_claim: groups
|
# kube_oidc_groups_claim: groups
|
||||||
# kube_oidc_groups_prefix: oidc:
|
# kube_oidc_groups_prefix: oidc:
|
||||||
|
|
||||||
|
## Variables for webhook token auth https://kubernetes.io/docs/reference/access-authn-authz/authentication/#webhook-token-authentication
|
||||||
|
# kube_webhook_token_auth_url: https://...
|
||||||
|
|
||||||
## Variables for custom flags
|
## Variables for custom flags
|
||||||
apiserver_custom_flags: []
|
apiserver_custom_flags: []
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,12 @@
|
||||||
when:
|
when:
|
||||||
- kube_basic_auth|default(true)
|
- kube_basic_auth|default(true)
|
||||||
|
|
||||||
|
- name: Create webhook token auth config
|
||||||
|
template:
|
||||||
|
src: webhook-token-auth-config.yaml.j2
|
||||||
|
dest: "{{ kube_config_dir }}/webhook-token-auth-config.yaml"
|
||||||
|
when: kube_webhook_token_auth|default(false)
|
||||||
|
|
||||||
- import_tasks: encrypt-at-rest.yml
|
- import_tasks: encrypt-at-rest.yml
|
||||||
when:
|
when:
|
||||||
- kube_encrypt_secret_data
|
- kube_encrypt_secret_data
|
||||||
|
|
|
@ -99,6 +99,9 @@ apiServerExtraArgs:
|
||||||
oidc-groups-claim: {{ kube_oidc_groups_claim }}
|
oidc-groups-claim: {{ kube_oidc_groups_claim }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% if kube_webhook_token_auth|default(false) %}
|
||||||
|
authentication-token-webhook-config-file: {{ kube_config_dir }}/webhook-token-auth-config.yaml
|
||||||
|
{% endif %}
|
||||||
{% if kube_encrypt_secret_data %}
|
{% if kube_encrypt_secret_data %}
|
||||||
experimental-encryption-provider-config: {{ kube_cert_dir }}/secrets_encryption.yaml
|
experimental-encryption-provider-config: {{ kube_cert_dir }}/secrets_encryption.yaml
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -152,7 +155,7 @@ schedulerExtraArgs:
|
||||||
{{ key }}: "{{ kube_kubeadm_scheduler_extra_args[key] }}"
|
{{ key }}: "{{ kube_kubeadm_scheduler_extra_args[key] }}"
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if kube_basic_auth|default(true) or kube_token_auth|default(true) %}
|
{% if kube_basic_auth|default(true) or kube_token_auth|default(true) or kube_webhook_token_auth|default(false) %}
|
||||||
apiServerExtraVolumes:
|
apiServerExtraVolumes:
|
||||||
{% if cloud_provider is defined and cloud_provider in ["openstack", "azure", "vsphere", "aws", "external"] %}
|
{% if cloud_provider is defined and cloud_provider in ["openstack", "azure", "vsphere", "aws", "external"] %}
|
||||||
- name: cloud-config
|
- name: cloud-config
|
||||||
|
@ -169,6 +172,11 @@ apiServerExtraVolumes:
|
||||||
hostPath: {{ kube_token_dir }}
|
hostPath: {{ kube_token_dir }}
|
||||||
mountPath: {{ kube_token_dir }}
|
mountPath: {{ kube_token_dir }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% if kube_webhook_token_auth|default(false) %}
|
||||||
|
- name: webhook-token-auth-config
|
||||||
|
hostPath: {{ kube_config_dir }}/webhook-token-auth-config.yaml
|
||||||
|
mountPath: {{ kube_config_dir }}/webhook-token-auth-config.yaml
|
||||||
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
apiServerCertSANs:
|
apiServerCertSANs:
|
||||||
{% for san in apiserver_sans.split() | unique %}
|
{% for san in apiserver_sans.split() | unique %}
|
||||||
|
|
|
@ -84,6 +84,9 @@ apiServerExtraArgs:
|
||||||
oidc-groups-claim: {{ kube_oidc_groups_claim }}
|
oidc-groups-claim: {{ kube_oidc_groups_claim }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% if kube_webhook_token_auth|default(false) %}
|
||||||
|
authentication-token-webhook-config-file: {{ kube_config_dir }}/webhook-token-auth-config.yaml
|
||||||
|
{% endif %}
|
||||||
{% if kube_encrypt_secret_data %}
|
{% if kube_encrypt_secret_data %}
|
||||||
experimental-encryption-provider-config: {{ kube_cert_dir }}/secrets_encryption.yaml
|
experimental-encryption-provider-config: {{ kube_cert_dir }}/secrets_encryption.yaml
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -146,7 +149,7 @@ controllerManagerExtraVolumes:
|
||||||
mountPath: {{ kube_config_dir }}/cloud_config
|
mountPath: {{ kube_config_dir }}/cloud_config
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if kubernetes_audit or kube_basic_auth|default(true) or kube_token_auth|default(true) %}
|
{% if kubernetes_audit or kube_basic_auth|default(true) or kube_token_auth|default(true) or kube_webhook_token_auth|default(false) %}
|
||||||
apiServerExtraVolumes:
|
apiServerExtraVolumes:
|
||||||
{% if kube_basic_auth|default(true) %}
|
{% if kube_basic_auth|default(true) %}
|
||||||
- name: basic-auth-config
|
- name: basic-auth-config
|
||||||
|
@ -158,6 +161,11 @@ apiServerExtraVolumes:
|
||||||
hostPath: {{ kube_token_dir }}
|
hostPath: {{ kube_token_dir }}
|
||||||
mountPath: {{ kube_token_dir }}
|
mountPath: {{ kube_token_dir }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% if kube_webhook_token_auth|default(false) %}
|
||||||
|
- name: webhook-token-auth-config
|
||||||
|
hostPath: {{ kube_config_dir }}/webhook-token-auth-config.yaml
|
||||||
|
mountPath: {{ kube_config_dir }}/webhook-token-auth-config.yaml
|
||||||
|
{% endif %}
|
||||||
{% if kubernetes_audit %}
|
{% if kubernetes_audit %}
|
||||||
- name: {{ audit_policy_name }}
|
- name: {{ audit_policy_name }}
|
||||||
hostPath: {{ audit_policy_hostpath }}
|
hostPath: {{ audit_policy_hostpath }}
|
||||||
|
|
|
@ -94,6 +94,9 @@ apiServerExtraArgs:
|
||||||
oidc-groups-claim: {{ kube_oidc_groups_claim }}
|
oidc-groups-claim: {{ kube_oidc_groups_claim }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% if kube_webhook_token_auth|default(false) %}
|
||||||
|
authentication-token-webhook-config-file: {{ kube_config_dir }}/webhook-token-auth-config.yaml
|
||||||
|
{% endif %}
|
||||||
{% if kube_encrypt_secret_data %}
|
{% if kube_encrypt_secret_data %}
|
||||||
experimental-encryption-provider-config: {{ kube_cert_dir }}/secrets_encryption.yaml
|
experimental-encryption-provider-config: {{ kube_cert_dir }}/secrets_encryption.yaml
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -147,7 +150,7 @@ schedulerExtraArgs:
|
||||||
{{ key }}: "{{ kube_kubeadm_scheduler_extra_args[key] }}"
|
{{ key }}: "{{ kube_kubeadm_scheduler_extra_args[key] }}"
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if kubernetes_audit or kube_basic_auth|default(true) or kube_token_auth|default(true) or ( cloud_provider is defined and cloud_provider in ["openstack", "azure", "vsphere", "aws"] ) or apiserver_extra_volumes %}
|
{% if kubernetes_audit or kube_basic_auth|default(true) or kube_token_auth|default(true) or kube_webhook_token_auth|default(false) or ( cloud_provider is defined and cloud_provider in ["openstack", "azure", "vsphere", "aws"] ) or apiserver_extra_volumes %}
|
||||||
apiServerExtraVolumes:
|
apiServerExtraVolumes:
|
||||||
{% if cloud_provider is defined and cloud_provider in ["openstack", "azure", "vsphere", "aws", "external"] %}
|
{% if cloud_provider is defined and cloud_provider in ["openstack", "azure", "vsphere", "aws", "external"] %}
|
||||||
- name: cloud-config
|
- name: cloud-config
|
||||||
|
@ -164,6 +167,11 @@ apiServerExtraVolumes:
|
||||||
hostPath: {{ kube_token_dir }}
|
hostPath: {{ kube_token_dir }}
|
||||||
mountPath: {{ kube_token_dir }}
|
mountPath: {{ kube_token_dir }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% if kube_webhook_token_auth|default(false) %}
|
||||||
|
- name: webhook-token-auth-config
|
||||||
|
hostPath: {{ kube_config_dir }}/webhook-token-auth-config.yaml
|
||||||
|
mountPath: {{ kube_config_dir }}/webhook-token-auth-config.yaml
|
||||||
|
{% endif %}
|
||||||
{% if kubernetes_audit %}
|
{% if kubernetes_audit %}
|
||||||
- name: {{ audit_policy_name }}
|
- name: {{ audit_policy_name }}
|
||||||
hostPath: {{ audit_policy_hostpath }}
|
hostPath: {{ audit_policy_hostpath }}
|
||||||
|
|
|
@ -92,6 +92,9 @@ apiServer:
|
||||||
oidc-groups-claim: {{ kube_oidc_groups_claim }}
|
oidc-groups-claim: {{ kube_oidc_groups_claim }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% if kube_webhook_token_auth|default(false) %}
|
||||||
|
authentication-token-webhook-config-file: {{ kube_config_dir }}/webhook-token-auth-config.yaml
|
||||||
|
{% endif %}
|
||||||
{% if kube_encrypt_secret_data %}
|
{% if kube_encrypt_secret_data %}
|
||||||
encryption-provider-config: {{ kube_cert_dir }}/secrets_encryption.yaml
|
encryption-provider-config: {{ kube_cert_dir }}/secrets_encryption.yaml
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -119,7 +122,7 @@ apiServer:
|
||||||
{% elif cloud_provider is defined and cloud_provider in ["external"] %}
|
{% elif cloud_provider is defined and cloud_provider in ["external"] %}
|
||||||
cloud-config: {{ kube_config_dir }}/cloud_config
|
cloud-config: {{ kube_config_dir }}/cloud_config
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if kubernetes_audit or kube_basic_auth|default(true) or kube_token_auth|default(true) or ( cloud_provider is defined and cloud_provider in ["openstack", "azure", "vsphere", "aws"] ) or apiserver_extra_volumes %}
|
{% if kubernetes_audit or kube_basic_auth|default(true) or kube_token_auth|default(true) or kube_webhook_token_auth|default(false) or ( cloud_provider is defined and cloud_provider in ["openstack", "azure", "vsphere", "aws"] ) or apiserver_extra_volumes %}
|
||||||
extraVolumes:
|
extraVolumes:
|
||||||
{% if cloud_provider is defined and cloud_provider in ["openstack", "azure", "vsphere", "aws", "external"] %}
|
{% if cloud_provider is defined and cloud_provider in ["openstack", "azure", "vsphere", "aws", "external"] %}
|
||||||
- name: cloud-config
|
- name: cloud-config
|
||||||
|
@ -136,6 +139,11 @@ apiServer:
|
||||||
hostPath: {{ kube_token_dir }}
|
hostPath: {{ kube_token_dir }}
|
||||||
mountPath: {{ kube_token_dir }}
|
mountPath: {{ kube_token_dir }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% if kube_webhook_token_auth|default(false) %}
|
||||||
|
- name: webhook-token-auth-config
|
||||||
|
hostPath: {{ kube_config_dir }}/webhook-token-auth-config.yaml
|
||||||
|
mountPath: {{ kube_config_dir }}/webhook-token-auth-config.yaml
|
||||||
|
{% endif %}
|
||||||
{% if kubernetes_audit %}
|
{% if kubernetes_audit %}
|
||||||
- name: {{ audit_policy_name }}
|
- name: {{ audit_policy_name }}
|
||||||
hostPath: {{ audit_policy_hostpath }}
|
hostPath: {{ audit_policy_hostpath }}
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
# clusters refers to the remote service.
|
||||||
|
clusters:
|
||||||
|
- name: webhook-token-auth-cluster
|
||||||
|
cluster:
|
||||||
|
server: {{ kube_webhook_token_auth_url }}
|
||||||
|
|
||||||
|
# users refers to the API server's webhook configuration.
|
||||||
|
users:
|
||||||
|
- name: webhook-token-auth-user
|
||||||
|
|
||||||
|
# kubeconfig files require a context. Provide one for the API server.
|
||||||
|
current-context: webhook-token-auth
|
||||||
|
contexts:
|
||||||
|
- context:
|
||||||
|
cluster: webhook-token-auth-cluster
|
||||||
|
user: webhook-token-auth-user
|
||||||
|
name: webhook-token-auth
|
Loading…
Reference in a new issue