feat: Switch authentication provider to pinniped
Some checks failed
continuous-integration/drone/push Build is failing
Some checks failed
continuous-integration/drone/push Build is failing
This commit is contained in:
parent
455a2e14be
commit
05b271214c
@ -1,4 +1,4 @@
|
|||||||
- name: Parse manifests for container images
|
- name: Parse Cluster-API manifests for container images
|
||||||
ansible.builtin.shell:
|
ansible.builtin.shell:
|
||||||
# This set of commands is necessary to deal with multi-line scalar values
|
# This set of commands is necessary to deal with multi-line scalar values
|
||||||
# eg.:
|
# eg.:
|
||||||
@ -9,11 +9,19 @@
|
|||||||
cat {{ item.dest }} | yq --no-doc eval '.. | .image? | select(.)' | awk '!/ /';
|
cat {{ item.dest }} | yq --no-doc eval '.. | .image? | select(.)' | awk '!/ /';
|
||||||
cat {{ item.dest }} | yq eval '.data.data' | yq --no-doc eval '.. | .image? | select(.)';
|
cat {{ item.dest }} | yq eval '.data.data' | yq --no-doc eval '.. | .image? | select(.)';
|
||||||
cat {{ item.dest }} | yq --no-doc eval '.. | .files? | with_entries(select(.value.path == "*.yaml")).[0].content' | awk '!/null/' | yq eval '.. | .image? | select(.)'
|
cat {{ item.dest }} | yq --no-doc eval '.. | .files? | with_entries(select(.value.path == "*.yaml")).[0].content' | awk '!/null/' | yq eval '.. | .image? | select(.)'
|
||||||
register: parsedmanifests
|
register: clusterapi_parsedmanifests
|
||||||
loop: "{{ clusterapi_manifests.results }}"
|
loop: "{{ clusterapi_manifests.results }}"
|
||||||
loop_control:
|
loop_control:
|
||||||
label: "{{ item.dest | basename }}"
|
label: "{{ item.dest | basename }}"
|
||||||
|
|
||||||
|
- name: Parse pinniped manifests for container images
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: cat {{ item.dest }} | yq --no-doc eval '.. | .image? | select(.)' | awk '!/ /'
|
||||||
|
register: pinniped_parsedmanifests
|
||||||
|
loop: "{{ pinniped_manifests.results }}"
|
||||||
|
loop_control:
|
||||||
|
label: "{{ item.dest | basename }}"
|
||||||
|
|
||||||
- name: Parse metacluster helm charts for container images
|
- name: Parse metacluster helm charts for container images
|
||||||
ansible.builtin.shell:
|
ansible.builtin.shell:
|
||||||
cmd: "{{ item.value.helm.parse_logic }}"
|
cmd: "{{ item.value.helm.parse_logic }}"
|
||||||
@ -41,8 +49,10 @@
|
|||||||
results: "{{ (chartimages_metacluster | json_query('results[*].stdout_lines')) + (chartimages_workloadcluster | json_query('results[*].stdout_lines')) | select() | flatten | list }}"
|
results: "{{ (chartimages_metacluster | json_query('results[*].stdout_lines')) + (chartimages_workloadcluster | json_query('results[*].stdout_lines')) | select() | flatten | list }}"
|
||||||
- source: kubeadm
|
- source: kubeadm
|
||||||
results: "{{ kubeadmimages.stdout_lines }}"
|
results: "{{ kubeadmimages.stdout_lines }}"
|
||||||
- source: manifests
|
- source: clusterapi
|
||||||
results: "{{ parsedmanifests | json_query('results[*].stdout_lines') | select() | flatten | list }}"
|
results: "{{ clusterapi_parsedmanifests | json_query('results[*].stdout_lines') | select() | flatten | list }}"
|
||||||
|
- source: pinniped
|
||||||
|
results: "{{ pinniped_parsedmanifests | json_query('results[*].stdout_lines') | select() | flatten | list }}"
|
||||||
loop_control:
|
loop_control:
|
||||||
label: "{{ item.source }}"
|
label: "{{ item.source }}"
|
||||||
|
|
||||||
@ -64,4 +74,4 @@
|
|||||||
docker://{{ item }} \
|
docker://{{ item }} \
|
||||||
docker-archive:./{{ ( item | regex_findall('[^/:]+'))[-2] }}_{{ lookup('ansible.builtin.password', '/dev/null length=5 chars=ascii_lowercase,digits seed={{ item }}') }}.tar:{{ item }}
|
docker-archive:./{{ ( item | regex_findall('[^/:]+'))[-2] }}_{{ lookup('ansible.builtin.password', '/dev/null length=5 chars=ascii_lowercase,digits seed={{ item }}') }}.tar:{{ item }}
|
||||||
chdir: /opt/metacluster/container-images
|
chdir: /opt/metacluster/container-images
|
||||||
loop: "{{ (containerimages_charts + containerimages_kubeadm + containerimages_manifests + dependencies.container_images) | flatten | unique | sort }}"
|
loop: "{{ (containerimages_charts + containerimages_kubeadm + containerimages_clusterapi + containerimages_pinniped + dependencies.container_images) | flatten | unique | sort }}"
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
- /opt/metacluster/helm-charts
|
- /opt/metacluster/helm-charts
|
||||||
- /opt/metacluster/k3s
|
- /opt/metacluster/k3s
|
||||||
- /opt/metacluster/kube-vip
|
- /opt/metacluster/kube-vip
|
||||||
|
- /opt/metacluster/pinniped
|
||||||
- /opt/workloadcluster/git-repositories/gitops/charts
|
- /opt/workloadcluster/git-repositories/gitops/charts
|
||||||
- /opt/workloadcluster/git-repositories/gitops/values
|
- /opt/workloadcluster/git-repositories/gitops/values
|
||||||
- /opt/workloadcluster/helm-charts
|
- /opt/workloadcluster/helm-charts
|
||||||
|
@ -16,7 +16,8 @@
|
|||||||
{ 'components': (
|
{ 'components': (
|
||||||
metacluster_chartvalues |
|
metacluster_chartvalues |
|
||||||
combine({ 'clusterapi': components.clusterapi }) |
|
combine({ 'clusterapi': components.clusterapi }) |
|
||||||
combine({ 'kubevip' : components.kubevip }) ),
|
combine({ 'kubevip' : components.kubevip }) |
|
||||||
|
combine({ 'pinniped' : components.pinniped }) ),
|
||||||
'appliance': {
|
'appliance': {
|
||||||
'version': (applianceversion)
|
'version': (applianceversion)
|
||||||
}
|
}
|
||||||
@ -39,7 +40,7 @@
|
|||||||
} | to_nice_yaml(indent=2, width=4096)
|
} | to_nice_yaml(indent=2, width=4096)
|
||||||
}}
|
}}
|
||||||
|
|
||||||
- name: Download ClusterAPI manifests
|
- name: Download Cluster-API manifests
|
||||||
ansible.builtin.get_url:
|
ansible.builtin.get_url:
|
||||||
url: "{{ item.url }}"
|
url: "{{ item.url }}"
|
||||||
dest: /opt/metacluster/cluster-api/{{ item.dest }}
|
dest: /opt/metacluster/cluster-api/{{ item.dest }}
|
||||||
@ -99,6 +100,29 @@
|
|||||||
delay: 5
|
delay: 5
|
||||||
until: kubevip_manifest is not failed
|
until: kubevip_manifest is not failed
|
||||||
|
|
||||||
|
- name: Download pinniped manifests
|
||||||
|
ansible.builtin.get_url:
|
||||||
|
url: "{{ item.url }}"
|
||||||
|
dest: /opt/metacluster/pinniped/{{ item.dest }}
|
||||||
|
register: pinniped_manifests
|
||||||
|
loop:
|
||||||
|
# The 'supervisor' runs in the metacluster and handles authentication
|
||||||
|
- url: https://github.com/vmware-tanzu/pinniped/releases/download/{{ components.pinniped.version }}/install-pinniped-supervisor.yaml
|
||||||
|
dest: pinniped-supervisor.yaml
|
||||||
|
# The 'local-user-authenticator' can be used to run a simple OIDC provider based on useraccounts defined in secrets.
|
||||||
|
- url: https://github.com/vmware-tanzu/pinniped/releases/download/{{ components.pinniped.version }}/install-local-user-authenticator.yaml
|
||||||
|
dest: local-user-authenticator.yaml
|
||||||
|
# The 'concierge' runs in downstream clusters and forwards authentication requests
|
||||||
|
- url: https://github.com/vmware-tanzu/pinniped/releases/download/{{ components.pinniped.version }}/install-pinniped-concierge-crds.yaml
|
||||||
|
dest: pinniped-concierge-crds.yaml
|
||||||
|
- url: https://github.com/vmware-tanzu/pinniped/releases/download/{{ components.pinniped.version }}/install-pinniped-concierge-resources.yaml
|
||||||
|
dest: pinniped-concierge-resources.yaml
|
||||||
|
loop_control:
|
||||||
|
label: "{{ item.dest }}"
|
||||||
|
retries: 5
|
||||||
|
delay: 5
|
||||||
|
until: pinniped_manifests is not failed
|
||||||
|
|
||||||
# - name: Inject manifests
|
# - name: Inject manifests
|
||||||
# ansible.builtin.template:
|
# ansible.builtin.template:
|
||||||
# src: "{{ item.type }}.j2"
|
# src: "{{ item.type }}.j2"
|
||||||
|
@ -0,0 +1 @@
|
|||||||
|
#
|
@ -1,11 +1,12 @@
|
|||||||
- import_tasks: init.yml
|
- import_tasks: init.yml
|
||||||
- import_tasks: k3s.yml
|
- import_tasks: k3s.yml
|
||||||
- import_tasks: assets.yml
|
- import_tasks: assets.yml
|
||||||
- import_tasks: kube-vip.yml
|
- import_tasks: virtualip.yml
|
||||||
- import_tasks: json-server.yml
|
- import_tasks: metadata.yml
|
||||||
- import_tasks: storage.yml
|
- import_tasks: storage.yml
|
||||||
- import_tasks: ingress.yml
|
- import_tasks: ingress.yml
|
||||||
- import_tasks: certauthority.yml
|
- import_tasks: certauthority.yml
|
||||||
- import_tasks: registry.yml
|
- import_tasks: registry.yml
|
||||||
- import_tasks: git.yml
|
- import_tasks: git.yml
|
||||||
- import_tasks: gitops.yml
|
- import_tasks: gitops.yml
|
||||||
|
- import_tasks: authentication.yml
|
||||||
|
@ -33,8 +33,6 @@ platform:
|
|||||||
helm_repositories:
|
helm_repositories:
|
||||||
- name: argo
|
- name: argo
|
||||||
url: https://argoproj.github.io/argo-helm
|
url: https://argoproj.github.io/argo-helm
|
||||||
- name: authentik
|
|
||||||
url: https://charts.goauthentik.io
|
|
||||||
- name: gitea-charts
|
- name: gitea-charts
|
||||||
url: https://dl.gitea.io/charts/
|
url: https://dl.gitea.io/charts/
|
||||||
- name: harbor
|
- name: harbor
|
||||||
@ -69,32 +67,6 @@ components:
|
|||||||
hosts:
|
hosts:
|
||||||
- gitops.{{ vapp['metacluster.fqdn'] }}
|
- gitops.{{ vapp['metacluster.fqdn'] }}
|
||||||
|
|
||||||
authentik:
|
|
||||||
helm:
|
|
||||||
version: 2023.3.1
|
|
||||||
chart: authentik/authentik
|
|
||||||
parse_logic: helm template . --set postgresql.enabled=true,redis.enabled=true | yq --no-doc eval '.. | .image? | select(.)' | sort -u | awk '!/ /'
|
|
||||||
chart_values: !unsafe |
|
|
||||||
authentik:
|
|
||||||
avatars: none
|
|
||||||
secret_key: "{{ lookup('ansible.builtin.password', '/dev/null length=64 chars=ascii_lowercase,digits seed=' ~ vapp['guestinfo.hostname']) }}"
|
|
||||||
postgresql:
|
|
||||||
password: "{{ lookup('ansible.builtin.password', '/dev/null length=32 chars=ascii_lowercase,digits seed=' ~ vapp['guestinfo.hostname']) }}"
|
|
||||||
env:
|
|
||||||
AUTHENTIK_BOOTSTRAP_PASSWORD: "{{ vapp['metacluster.password'] }}"
|
|
||||||
ingress:
|
|
||||||
enabled: true
|
|
||||||
hosts:
|
|
||||||
- host: auth.{{ vapp['metacluster.fqdn'] }}
|
|
||||||
paths:
|
|
||||||
- path: "/"
|
|
||||||
pathType: Prefix
|
|
||||||
postgresql:
|
|
||||||
enabled: true
|
|
||||||
postgresqlPassword: "{{ lookup('ansible.builtin.password', '/dev/null length=32 chars=ascii_lowercase,digits seed=' ~ vapp['guestinfo.hostname']) }}"
|
|
||||||
redis:
|
|
||||||
enabled: true
|
|
||||||
|
|
||||||
cert-manager:
|
cert-manager:
|
||||||
helm:
|
helm:
|
||||||
version: 1.11.0
|
version: 1.11.0
|
||||||
@ -225,6 +197,10 @@ components:
|
|||||||
persistence:
|
persistence:
|
||||||
defaultClassReplicaCount: 1
|
defaultClassReplicaCount: 1
|
||||||
|
|
||||||
|
pinniped:
|
||||||
|
# Must match the version referenced at `dependencies.static_binaries[.filename==pinniped].url`
|
||||||
|
version: v0.25.0
|
||||||
|
|
||||||
step-certificates:
|
step-certificates:
|
||||||
helm:
|
helm:
|
||||||
version: 1.23.0
|
version: 1.23.0
|
||||||
@ -282,6 +258,8 @@ dependencies:
|
|||||||
- filename: kubectl-slice
|
- filename: kubectl-slice
|
||||||
url: https://github.com/patrickdappollonio/kubectl-slice/releases/download/v1.2.5/kubectl-slice_linux_x86_64.tar.gz
|
url: https://github.com/patrickdappollonio/kubectl-slice/releases/download/v1.2.5/kubectl-slice_linux_x86_64.tar.gz
|
||||||
archive: compressed
|
archive: compressed
|
||||||
|
- filename: pinniped
|
||||||
|
url: https://github.com/vmware-tanzu/pinniped/releases/download/v0.25.0/pinniped-cli-linux-amd64
|
||||||
- filename: skopeo
|
- filename: skopeo
|
||||||
url: https://code.spamasaurus.com/api/packages/djpbessems/generic/skopeo/v1.12.0/skopeo_linux_amd64
|
url: https://code.spamasaurus.com/api/packages/djpbessems/generic/skopeo/v1.12.0/skopeo_linux_amd64
|
||||||
- filename: step
|
- filename: step
|
||||||
|
Loading…
Reference in New Issue
Block a user