Compare commits
67 Commits
Appliance.
...
87eb5e0dd7
Author | SHA1 | Date | |
---|---|---|---|
87eb5e0dd7 | |||
f5ed60fa38 | |||
eab5cfc688 | |||
05b271214c | |||
455a2e14be | |||
f5154f6961 | |||
4bf5121086 | |||
393b1092e5 | |||
36c30ca646 | |||
8005b172a5 | |||
13f4965278 | |||
05f085aee7 | |||
072fc56050 | |||
5363eba1a3 | |||
a245cc3d48 | |||
51c477fb07 | |||
1446cba537 | |||
0501a035f2 | |||
6e942af974 | |||
89874d57ce | |||
2b497d4653 | |||
cfa4a5379a | |||
a2c2766ff7 | |||
76d3b6c742 | |||
a5248bd54c | |||
cbedc9679f | |||
740b6b3dc9 | |||
0ba87988bc | |||
aa14a8a3a8 | |||
1f55ff7cfa | |||
ba4a0148ff | |||
c177dbd03b | |||
2e8ce6cc00 | |||
7fd1cf73db | |||
cf001cd0ce | |||
438b944011 | |||
679a9457b5 | |||
8b4a1e380c | |||
0468cd6269 | |||
b808397d47 | |||
8fd0136bb7 | |||
479d896599 | |||
263f156eb1 | |||
f1dfc83d7c | |||
5b950a3834 | |||
978f39d45b | |||
9b9ab6b784 | |||
24dca2755a | |||
0d1db2f29f | |||
cce39a5bb7 | |||
823cc467fa | |||
9cb89bf055 | |||
358cbe39ea | |||
0fee2df2a6 | |||
e4e58e4789 | |||
75158a8a5b | |||
c83d541a0d | |||
a46610f828 | |||
fe5147bd2e | |||
6d168f0517 | |||
68445ee13f | |||
48c14afd0f | |||
31b21c9b7a | |||
e03cd20d65 | |||
1c19708855 | |||
942c13dde7 | |||
439223c56e |
66
.drone.yml
66
.drone.yml
@ -10,6 +10,11 @@ volumes:
|
||||
claim:
|
||||
name: flexvolsmb-drone-scratch
|
||||
|
||||
trigger:
|
||||
event:
|
||||
exclude:
|
||||
- tag
|
||||
|
||||
steps:
|
||||
- name: Debugging information
|
||||
image: bv11-cr01.bessems.eu/library/packer-extended
|
||||
@ -21,8 +26,6 @@ steps:
|
||||
- yamllint --version
|
||||
|
||||
- name: Linting
|
||||
depends_on:
|
||||
- Debugging information
|
||||
image: bv11-cr01.bessems.eu/library/packer-extended
|
||||
pull: always
|
||||
commands:
|
||||
@ -32,9 +35,48 @@ steps:
|
||||
packer/preseed/UbuntuServer22.04/user-data \
|
||||
scripts
|
||||
|
||||
- name: Semantic Release (Dry-run)
|
||||
image: bv11-cr01.bessems.eu/proxy/library/node:20-slim
|
||||
pull: always
|
||||
commands:
|
||||
- |
|
||||
apt-get update
|
||||
- |
|
||||
apt-get install -y --no-install-recommends \
|
||||
curl \
|
||||
git-core \
|
||||
jq \
|
||||
ca-certificates
|
||||
- |
|
||||
curl -L https://api.github.com/repos/mikefarah/yq/releases/latest | \
|
||||
jq -r '.assets[] | select(.name | endswith("yq_linux_amd64")) | .browser_download_url' | \
|
||||
xargs -I {} curl -L -o /bin/yq {} && \
|
||||
chmod +x /bin/yq
|
||||
- |
|
||||
npm install \
|
||||
semantic-release \
|
||||
@semantic-release/commit-analyzer \
|
||||
@semantic-release/exec \
|
||||
- |
|
||||
export K8S_VERSION=$(yq '.components.clusterapi.workload.version.k8s' < ./ansible/vars/metacluster.yml)
|
||||
export GIT_CREDENTIALS=$${GIT_USERNAME}:$${GIT_APIKEY}
|
||||
- |
|
||||
npx semantic-release \
|
||||
--package @semantic-release/exec \
|
||||
--package semantic-release \
|
||||
--branches ${DRONE_BRANCH} \
|
||||
--tag-format "K8s_$${K8S_VERSION}-v\$${version}" \
|
||||
--dry-run \
|
||||
--plugins @semantic-release/commit-analyzer,@semantic-release/exec \
|
||||
--analyzeCommits @semantic-release/commit-analyzer \
|
||||
--verifyRelease @semantic-release/exec \
|
||||
--verifyReleaseCmd 'echo "$${nextRelease.version}" > .version'
|
||||
environment:
|
||||
GIT_APIKEY:
|
||||
from_secret: git_apikey
|
||||
GIT_USERNAME: djpbessems
|
||||
|
||||
- name: Install Ansible Galaxy collections
|
||||
depends_on:
|
||||
- Linting
|
||||
image: bv11-cr01.bessems.eu/library/packer-extended
|
||||
pull: always
|
||||
commands:
|
||||
@ -42,13 +84,8 @@ steps:
|
||||
ansible-galaxy collection install \
|
||||
-r ansible/requirements.yml \
|
||||
-p ./ansible/collections
|
||||
volumes:
|
||||
- name: scratch
|
||||
path: /scratch
|
||||
|
||||
- name: Kubernetes Bootstrap Appliance
|
||||
depends_on:
|
||||
- Install Ansible Galaxy collections
|
||||
image: bv11-cr01.bessems.eu/library/packer-extended
|
||||
pull: always
|
||||
commands:
|
||||
@ -57,6 +94,7 @@ steps:
|
||||
packer/preseed/UbuntuServer22.04/user-data
|
||||
- |
|
||||
export K8S_VERSION=$(yq '.components.clusterapi.workload.version.k8s' < ./ansible/vars/metacluster.yml)
|
||||
export APPLIANCE_VERSION=$(cat .version)
|
||||
- |
|
||||
packer init -upgrade \
|
||||
./packer
|
||||
@ -71,6 +109,7 @@ steps:
|
||||
-var ssh_password=$${SSH_PASSWORD} \
|
||||
-var vsphere_password=$${VSPHERE_PASSWORD} \
|
||||
-var k8s_version=$K8S_VERSION \
|
||||
-var appliance_version=$APPLIANCE_VERSION \
|
||||
./packer
|
||||
- |
|
||||
packer build \
|
||||
@ -84,6 +123,7 @@ steps:
|
||||
-var ssh_password=$${SSH_PASSWORD} \
|
||||
-var vsphere_password=$${VSPHERE_PASSWORD} \
|
||||
-var k8s_version=$K8S_VERSION \
|
||||
-var appliance_version=$APPLIANCE_VERSION \
|
||||
./packer
|
||||
environment:
|
||||
DOCKER_USERNAME:
|
||||
@ -106,8 +146,6 @@ steps:
|
||||
path: /scratch
|
||||
|
||||
- name: Kubernetes Upgrade Appliance
|
||||
depends_on:
|
||||
- Install Ansible Galaxy collections
|
||||
image: bv11-cr01.bessems.eu/library/packer-extended
|
||||
pull: alwaysquery(
|
||||
commands:
|
||||
@ -116,6 +154,7 @@ steps:
|
||||
packer/preseed/UbuntuServer22.04/user-data
|
||||
- |
|
||||
export K8S_VERSION=$(yq '.components.clusterapi.workload.version.k8s' < ./ansible/vars/metacluster.yml)
|
||||
export APPLIANCE_VERSION=$(cat .version)
|
||||
- |
|
||||
packer init -upgrade \
|
||||
./packer
|
||||
@ -130,6 +169,7 @@ steps:
|
||||
-var ssh_password=$${SSH_PASSWORD} \
|
||||
-var vsphere_password=$${VSPHERE_PASSWORD} \
|
||||
-var k8s_version=$K8S_VERSION \
|
||||
-var appliance_version=$APPLIANCE_VERSION \
|
||||
./packer
|
||||
- |
|
||||
packer build \
|
||||
@ -143,6 +183,7 @@ steps:
|
||||
-var ssh_password=$${SSH_PASSWORD} \
|
||||
-var vsphere_password=$${VSPHERE_PASSWORD} \
|
||||
-var k8s_version=$K8S_VERSION \
|
||||
-var appliance_version=$APPLIANCE_VERSION \
|
||||
./packer
|
||||
environment:
|
||||
DOCKER_USERNAME:
|
||||
@ -165,9 +206,6 @@ steps:
|
||||
path: /scratch
|
||||
|
||||
- name: Remove temporary resources
|
||||
depends_on:
|
||||
- Kubernetes Bootstrap Appliance
|
||||
- Kubernetes Upgrade Appliance
|
||||
image: bv11-cr01.bessems.eu/library/packer-extended
|
||||
commands:
|
||||
- |
|
||||
|
@ -1,4 +1,4 @@
|
||||
- name: Parse manifests for container images
|
||||
- name: Parse Cluster-API manifests for container images
|
||||
ansible.builtin.shell:
|
||||
# This set of commands is necessary to deal with multi-line scalar values
|
||||
# eg.:
|
||||
@ -9,11 +9,20 @@
|
||||
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 --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_control:
|
||||
label: "{{ item.dest | basename }}"
|
||||
|
||||
- name: Parse pinniped manifests for container images
|
||||
ansible.builtin.shell:
|
||||
# The pinniped manifest specify container images with *both* tag and digest; which is not supported by skopeo
|
||||
cmd: cat {{ item.dest }} | yq --no-doc eval '.. | .image? | select(.) | sub("@.*", "")' | awk '!/ /'
|
||||
register: pinniped_parsedmanifests
|
||||
loop: "{{ pinniped_manifests.results }}"
|
||||
loop_control:
|
||||
label: "{{ item.dest | basename }}"
|
||||
|
||||
- name: Parse metacluster helm charts for container images
|
||||
ansible.builtin.shell:
|
||||
cmd: "{{ item.value.helm.parse_logic }}"
|
||||
@ -41,8 +50,10 @@
|
||||
results: "{{ (chartimages_metacluster | json_query('results[*].stdout_lines')) + (chartimages_workloadcluster | json_query('results[*].stdout_lines')) | select() | flatten | list }}"
|
||||
- source: kubeadm
|
||||
results: "{{ kubeadmimages.stdout_lines }}"
|
||||
- source: manifests
|
||||
results: "{{ parsedmanifests | json_query('results[*].stdout_lines') | select() | flatten | list }}"
|
||||
- source: clusterapi
|
||||
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:
|
||||
label: "{{ item.source }}"
|
||||
|
||||
@ -64,4 +75,4 @@
|
||||
docker://{{ 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
|
||||
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/k3s
|
||||
- /opt/metacluster/kube-vip
|
||||
- /opt/metacluster/pinniped
|
||||
- /opt/workloadcluster/git-repositories/gitops/charts
|
||||
- /opt/workloadcluster/git-repositories/gitops/values
|
||||
- /opt/workloadcluster/helm-charts
|
||||
|
@ -16,14 +16,17 @@
|
||||
{ 'components': (
|
||||
metacluster_chartvalues |
|
||||
combine({ 'clusterapi': components.clusterapi }) |
|
||||
combine({ 'kubevip' : components.kubevip }) )
|
||||
combine({ 'kubevip' : components.kubevip }) |
|
||||
combine({ 'pinniped' : components.pinniped }) ),
|
||||
'appliance': {
|
||||
'version': (applianceversion)
|
||||
}
|
||||
} | to_nice_yaml(indent=2, width=4096)
|
||||
}}
|
||||
|
||||
- name: Aggregate chart_values into dict
|
||||
ansible.builtin.set_fact:
|
||||
workloadcluster_chartvalues: "{{ workloadcluster_chartvalues | default({}) | combine({ item.key: { 'chart_values': (item.value.chart_values | default('') | from_yaml) } }) }}"
|
||||
# when: item.value.chart_values is defined
|
||||
loop: "{{ query('ansible.builtin.dict', downstream.helm_charts) }}"
|
||||
loop_control:
|
||||
label: "{{ item.key }}"
|
||||
@ -37,7 +40,7 @@
|
||||
} | to_nice_yaml(indent=2, width=4096)
|
||||
}}
|
||||
|
||||
- name: Download ClusterAPI manifests
|
||||
- name: Download Cluster-API manifests
|
||||
ansible.builtin.get_url:
|
||||
url: "{{ item.url }}"
|
||||
dest: /opt/metacluster/cluster-api/{{ item.dest }}
|
||||
@ -97,6 +100,29 @@
|
||||
delay: 5
|
||||
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
|
||||
# ansible.builtin.template:
|
||||
# src: "{{ item.type }}.j2"
|
||||
|
@ -1,14 +0,0 @@
|
||||
import netaddr
|
||||
|
||||
def netaddr_iter_iprange(ip_start, ip_end):
|
||||
return [str(ip) for ip in netaddr.iter_iprange(ip_start, ip_end)]
|
||||
|
||||
class FilterModule(object):
|
||||
''' Ansible filter. Interface to netaddr methods.
|
||||
https://pypi.org/project/netaddr/
|
||||
'''
|
||||
|
||||
def filters(self):
|
||||
return {
|
||||
'netaddr_iter_iprange': netaddr_iter_iprange
|
||||
}
|
@ -0,0 +1 @@
|
||||
#
|
@ -1,14 +1,9 @@
|
||||
- block:
|
||||
|
||||
- name: Initialize tempfile
|
||||
ansible.builtin.tempfile:
|
||||
state: file
|
||||
register: values_file
|
||||
|
||||
- name: Write chart values w/ password to tempfile
|
||||
- name: Inject password into values file
|
||||
ansible.builtin.copy:
|
||||
dest: "{{ values_file.path }}"
|
||||
content: "{{ stepca_values.stdout | regex_replace('(ca_password|provisioner_password): ', '\\1: ' ~ (vapp['metacluster.password'] | b64encode)) }}"
|
||||
dest: "{{ stepconfig.path }}"
|
||||
content: "{{ lookup('ansible.builtin.file', stepconfig.path) | regex_replace('(ca_password|provisioner_password):[ ]?\n', '\\1: ' ~ (vapp['metacluster.password'] | b64encode) ~ '\n') }}"
|
||||
no_log: true
|
||||
|
||||
- name: Install step-ca chart
|
||||
@ -21,13 +16,7 @@
|
||||
wait: true
|
||||
kubeconfig: "{{ kubeconfig.path }}"
|
||||
values_files:
|
||||
- "{{ values_file.path }}"
|
||||
|
||||
- name: Cleanup tempfile
|
||||
ansible.builtin.file:
|
||||
path: "{{ values_file.path }}"
|
||||
state: absent
|
||||
when: values_file.path is defined
|
||||
- "{{ stepconfig.path }}"
|
||||
|
||||
- name: Retrieve configmap w/ root certificate
|
||||
kubernetes.core.k8s_info:
|
||||
|
@ -12,6 +12,15 @@
|
||||
- registry
|
||||
- storage
|
||||
|
||||
- name: Create step-ca config dictionary
|
||||
ansible.builtin.set_fact:
|
||||
stepconfig: "{{ { 'path': ansible_env.HOME ~ '/.step/config/values.yaml' } }}"
|
||||
|
||||
- name: Create step-ca target folder
|
||||
ansible.builtin.file:
|
||||
path: "{{ stepconfig.path | dirname }}"
|
||||
state: directory
|
||||
|
||||
- name: Initialize tempfile
|
||||
ansible.builtin.tempfile:
|
||||
state: file
|
||||
@ -36,8 +45,8 @@
|
||||
--address=:9000 \
|
||||
--provisioner=admin \
|
||||
--acme \
|
||||
--password-file={{ stepca_password.path }}
|
||||
register: stepca_values
|
||||
--password-file={{ stepca_password.path }} | tee {{ stepconfig.path }}
|
||||
creates: "{{ stepconfig.path }}"
|
||||
|
||||
- name: Cleanup tempfile
|
||||
ansible.builtin.file:
|
||||
@ -48,7 +57,7 @@
|
||||
- name: Store root CA certificate
|
||||
ansible.builtin.copy:
|
||||
dest: /usr/local/share/ca-certificates/root_ca.crt
|
||||
content: "{{ (stepca_values.stdout | from_yaml).inject.certificates.root_ca }}"
|
||||
content: "{{ (lookup('ansible.builtin.file', stepconfig.path) | from_yaml).inject.certificates.root_ca }}"
|
||||
|
||||
- name: Update certificate truststore
|
||||
ansible.builtin.command:
|
||||
|
@ -42,19 +42,30 @@
|
||||
retries: "{{ playbook.retries }}"
|
||||
delay: "{{ (storage_benchmark | int) * (playbook.delay.medium | int) }}"
|
||||
|
||||
- name: Install kubectl tab-completion
|
||||
- name: Install tab-completion
|
||||
ansible.builtin.shell:
|
||||
cmd: kubectl completion bash | tee /etc/bash_completion.d/kubectl
|
||||
cmd: |-
|
||||
{{ item }} completion bash > /etc/bash_completion.d/{{ item }}
|
||||
creates: /etc/bash_completion.d/{{ item }}
|
||||
loop:
|
||||
- kubectl
|
||||
- helm
|
||||
- step
|
||||
|
||||
- name: Initialize tempfile
|
||||
ansible.builtin.tempfile:
|
||||
state: file
|
||||
register: kubeconfig
|
||||
- name: Create kubeconfig dictionary
|
||||
ansible.builtin.set_fact:
|
||||
kubeconfig: "{{ { 'path': ansible_env.HOME ~ '/.kube/config' } }}"
|
||||
|
||||
- name: Create kubeconfig target folder
|
||||
ansible.builtin.file:
|
||||
path: "{{ kubeconfig.path | dirname }}"
|
||||
state: directory
|
||||
|
||||
- name: Retrieve kubeconfig
|
||||
ansible.builtin.command:
|
||||
cmd: kubectl config view --raw
|
||||
register: kubectl_config
|
||||
no_log: true
|
||||
|
||||
- name: Store kubeconfig in tempfile
|
||||
ansible.builtin.copy:
|
||||
|
@ -1,10 +1,12 @@
|
||||
- import_tasks: init.yml
|
||||
- import_tasks: k3s.yml
|
||||
- import_tasks: assets.yml
|
||||
- import_tasks: kube-vip.yml
|
||||
- import_tasks: virtualip.yml
|
||||
- import_tasks: metadata.yml
|
||||
- import_tasks: storage.yml
|
||||
- import_tasks: ingress.yml
|
||||
- import_tasks: certauthority.yml
|
||||
- import_tasks: registry.yml
|
||||
- import_tasks: git.yml
|
||||
- import_tasks: gitops.yml
|
||||
- import_tasks: authentication.yml
|
||||
|
@ -0,0 +1,57 @@
|
||||
- block:
|
||||
- name: Aggregate manifest-component versions into dictionary
|
||||
ansible.builtin.set_fact:
|
||||
manifest_versions: "{{ manifest_versions | default([]) + [ item | combine( {'type': 'manifest', 'id': index } ) ] }}"
|
||||
loop:
|
||||
- name: cluster-api
|
||||
versions:
|
||||
management:
|
||||
base: "{{ components.clusterapi.management.version.base }}"
|
||||
cert_manager: "{{ components.clusterapi.management.version.cert_manager }}"
|
||||
infrastructure_vsphere: "{{ components.clusterapi.management.version.infrastructure_vsphere }}"
|
||||
ipam_incluster: "{{ components.clusterapi.management.version.ipam_incluster }}"
|
||||
cpi_vsphere: "{{ components.clusterapi.management.version.cpi_vsphere }}"
|
||||
workload:
|
||||
calico: "{{ components.clusterapi.workload.version.calico }}"
|
||||
k8s: "{{ components.clusterapi.workload.version.k8s }}"
|
||||
- name: kube-vip
|
||||
version: "{{ components.kubevip.version }}"
|
||||
loop_control:
|
||||
label: "{{ item.name }}"
|
||||
index_var: index
|
||||
|
||||
- name: Install json-server chart
|
||||
kubernetes.core.helm:
|
||||
name: json-server
|
||||
chart_ref: /opt/metacluster/helm-charts/json-server
|
||||
release_namespace: json-server
|
||||
create_namespace: true
|
||||
wait: false
|
||||
kubeconfig: "{{ kubeconfig.path }}"
|
||||
values: |
|
||||
{{
|
||||
components['json-server'].chart_values |
|
||||
combine(
|
||||
{ 'jsonServer': { 'seedData': { 'configInline': (
|
||||
{ 'appliance': { "version": appliance.version }, 'components': manifest_versions, 'healthz': { 'status': 'running' } }
|
||||
) | to_json } } }
|
||||
)
|
||||
}}
|
||||
|
||||
- name: Ensure json-server API availability
|
||||
ansible.builtin.uri:
|
||||
url: https://version.{{ vapp['metacluster.fqdn'] }}/healthz
|
||||
method: GET
|
||||
# This mock REST API -ironically- does not support json encoded body argument
|
||||
body_format: raw
|
||||
register: api_readycheck
|
||||
until:
|
||||
- api_readycheck.json.status is defined
|
||||
- api_readycheck.json.status == 'running'
|
||||
retries: "{{ playbook.retries }}"
|
||||
delay: "{{ (storage_benchmark | int) * (playbook.delay.long | int) }}"
|
||||
|
||||
module_defaults:
|
||||
ansible.builtin.uri:
|
||||
validate_certs: no
|
||||
status_code: [200, 201]
|
@ -3,8 +3,8 @@ kind: Kustomization
|
||||
resources:
|
||||
- cluster-template.yaml
|
||||
|
||||
patchesStrategicMerge:
|
||||
- |-
|
||||
patches:
|
||||
- patch: |-
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
@ -32,7 +32,7 @@ patchesStrategicMerge:
|
||||
[Network]
|
||||
public-network = "${VSPHERE_NETWORK}"
|
||||
type: Opaque
|
||||
- |-
|
||||
- patch: |-
|
||||
apiVersion: controlplane.cluster.x-k8s.io/v1beta1
|
||||
kind: KubeadmControlPlane
|
||||
metadata:
|
||||
@ -42,7 +42,7 @@ patchesStrategicMerge:
|
||||
kubeadmConfigSpec:
|
||||
clusterConfiguration:
|
||||
imageRepository: registry.{{ _template.network.fqdn }}/kubeadm
|
||||
- |-
|
||||
- patch: |-
|
||||
apiVersion: bootstrap.cluster.x-k8s.io/v1beta1
|
||||
kind: KubeadmConfigTemplate
|
||||
metadata:
|
||||
@ -53,7 +53,7 @@ patchesStrategicMerge:
|
||||
spec:
|
||||
clusterConfiguration:
|
||||
imageRepository: registry.{{ _template.network.fqdn }}/kubeadm
|
||||
- |-
|
||||
- patch: |-
|
||||
apiVersion: bootstrap.cluster.x-k8s.io/v1beta1
|
||||
kind: KubeadmConfigTemplate
|
||||
metadata:
|
||||
@ -86,7 +86,7 @@ patchesStrategicMerge:
|
||||
{{ _template.rootca | indent(width=14, first=False) | trim }}
|
||||
owner: root:root
|
||||
path: /usr/local/share/ca-certificates/root_ca.crt
|
||||
- |-
|
||||
- patch: |-
|
||||
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
|
||||
kind: VSphereMachineTemplate
|
||||
metadata:
|
||||
@ -105,7 +105,7 @@ patchesStrategicMerge:
|
||||
nameservers:
|
||||
- {{ _template.network.dnsserver }}
|
||||
networkName: '${VSPHERE_NETWORK}'
|
||||
- |-
|
||||
- patch: |-
|
||||
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
|
||||
kind: VSphereMachineTemplate
|
||||
metadata:
|
||||
@ -125,132 +125,131 @@ patchesStrategicMerge:
|
||||
- {{ _template.network.dnsserver }}
|
||||
networkName: '${VSPHERE_NETWORK}'
|
||||
|
||||
patchesJson6902:
|
||||
- target:
|
||||
group: controlplane.cluster.x-k8s.io
|
||||
version: v1beta1
|
||||
kind: KubeadmControlPlane
|
||||
name: .*
|
||||
patch: |-
|
||||
- op: add
|
||||
path: /spec/kubeadmConfigSpec/files/-
|
||||
value:
|
||||
content: |
|
||||
[plugins."io.containerd.grpc.v1.cri".registry]
|
||||
config_path = "/etc/containerd/certs.d"
|
||||
append: true
|
||||
path: /etc/containerd/config.toml
|
||||
- target:
|
||||
group: controlplane.cluster.x-k8s.io
|
||||
version: v1beta1
|
||||
kind: KubeadmControlPlane
|
||||
name: .*
|
||||
patch: |-
|
||||
- op: add
|
||||
path: /spec/kubeadmConfigSpec/files/-
|
||||
value:
|
||||
content: |
|
||||
[plugins."io.containerd.grpc.v1.cri".registry]
|
||||
config_path = "/etc/containerd/certs.d"
|
||||
append: true
|
||||
path: /etc/containerd/config.toml
|
||||
{% for registry in _template.registries %}
|
||||
- op: add
|
||||
path: /spec/kubeadmConfigSpec/files/-
|
||||
value:
|
||||
content: |
|
||||
server = "https://{{ registry }}"
|
||||
- op: add
|
||||
path: /spec/kubeadmConfigSpec/files/-
|
||||
value:
|
||||
content: |
|
||||
server = "https://{{ registry }}"
|
||||
|
||||
[host."https://registry.{{ _template.network.fqdn }}/v2/library/{{ registry }}"]
|
||||
capabilities = ["pull", "resolve"]
|
||||
override_path = true
|
||||
owner: root:root
|
||||
path: /etc/containerd/certs.d/{{ registry }}/hosts.toml
|
||||
[host."https://registry.{{ _template.network.fqdn }}/v2/library/{{ registry }}"]
|
||||
capabilities = ["pull", "resolve"]
|
||||
override_path = true
|
||||
owner: root:root
|
||||
path: /etc/containerd/certs.d/{{ registry }}/hosts.toml
|
||||
{% endfor %}
|
||||
- op: add
|
||||
path: /spec/kubeadmConfigSpec/files/-
|
||||
value:
|
||||
content: |
|
||||
network: {config: disabled}
|
||||
owner: root:root
|
||||
path: /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
|
||||
- op: add
|
||||
path: /spec/kubeadmConfigSpec/files/-
|
||||
value:
|
||||
content: |
|
||||
{{ _template.rootca | indent(width=12, first=False) | trim }}
|
||||
owner: root:root
|
||||
path: /usr/local/share/ca-certificates/root_ca.crt
|
||||
- target:
|
||||
group: bootstrap.cluster.x-k8s.io
|
||||
version: v1beta1
|
||||
kind: KubeadmConfigTemplate
|
||||
name: .*
|
||||
patch: |-
|
||||
- op: add
|
||||
path: /spec/kubeadmConfigSpec/files/-
|
||||
value:
|
||||
content: |
|
||||
network: {config: disabled}
|
||||
owner: root:root
|
||||
path: /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
|
||||
- op: add
|
||||
path: /spec/kubeadmConfigSpec/files/-
|
||||
value:
|
||||
content: |
|
||||
{{ _template.rootca | indent(width=10, first=False) | trim }}
|
||||
owner: root:root
|
||||
path: /usr/local/share/ca-certificates/root_ca.crt
|
||||
- target:
|
||||
group: bootstrap.cluster.x-k8s.io
|
||||
version: v1beta1
|
||||
kind: KubeadmConfigTemplate
|
||||
name: .*
|
||||
patch: |-
|
||||
{% for cmd in _template.runcmds %}
|
||||
- op: add
|
||||
path: /spec/template/spec/preKubeadmCommands/-
|
||||
value: {{ cmd }}
|
||||
- op: add
|
||||
path: /spec/template/spec/preKubeadmCommands/-
|
||||
value: {{ cmd }}
|
||||
{% endfor %}
|
||||
- target:
|
||||
group: controlplane.cluster.x-k8s.io
|
||||
version: v1beta1
|
||||
kind: KubeadmControlPlane
|
||||
name: .*
|
||||
patch: |-
|
||||
- target:
|
||||
group: controlplane.cluster.x-k8s.io
|
||||
version: v1beta1
|
||||
kind: KubeadmControlPlane
|
||||
name: .*
|
||||
patch: |-
|
||||
{% for cmd in _template.runcmds %}
|
||||
- op: add
|
||||
path: /spec/kubeadmConfigSpec/preKubeadmCommands/-
|
||||
value: {{ cmd }}
|
||||
- op: add
|
||||
path: /spec/kubeadmConfigSpec/preKubeadmCommands/-
|
||||
value: {{ cmd }}
|
||||
{% endfor %}
|
||||
|
||||
- target:
|
||||
group: infrastructure.cluster.x-k8s.io
|
||||
version: v1beta1
|
||||
kind: VSphereMachineTemplate
|
||||
name: \${CLUSTER_NAME}
|
||||
patch: |-
|
||||
- op: replace
|
||||
path: /metadata/name
|
||||
value: ${CLUSTER_NAME}-master
|
||||
- target:
|
||||
group: controlplane.cluster.x-k8s.io
|
||||
version: v1beta1
|
||||
kind: KubeadmControlPlane
|
||||
name: \${CLUSTER_NAME}
|
||||
patch: |-
|
||||
- op: replace
|
||||
path: /metadata/name
|
||||
value: ${CLUSTER_NAME}-master
|
||||
- op: replace
|
||||
path: /spec/machineTemplate/infrastructureRef/name
|
||||
value: ${CLUSTER_NAME}-master
|
||||
- target:
|
||||
group: cluster.x-k8s.io
|
||||
version: v1beta1
|
||||
kind: Cluster
|
||||
name: \${CLUSTER_NAME}
|
||||
patch: |-
|
||||
- op: replace
|
||||
path: /spec/controlPlaneRef/name
|
||||
value: ${CLUSTER_NAME}-master
|
||||
- target:
|
||||
group: infrastructure.cluster.x-k8s.io
|
||||
version: v1beta1
|
||||
kind: VSphereMachineTemplate
|
||||
name: \${CLUSTER_NAME}
|
||||
patch: |-
|
||||
- op: replace
|
||||
path: /metadata/name
|
||||
value: ${CLUSTER_NAME}-master
|
||||
- target:
|
||||
group: controlplane.cluster.x-k8s.io
|
||||
version: v1beta1
|
||||
kind: KubeadmControlPlane
|
||||
name: \${CLUSTER_NAME}
|
||||
patch: |-
|
||||
- op: replace
|
||||
path: /metadata/name
|
||||
value: ${CLUSTER_NAME}-master
|
||||
- op: replace
|
||||
path: /spec/machineTemplate/infrastructureRef/name
|
||||
value: ${CLUSTER_NAME}-master
|
||||
- target:
|
||||
group: cluster.x-k8s.io
|
||||
version: v1beta1
|
||||
kind: Cluster
|
||||
name: \${CLUSTER_NAME}
|
||||
patch: |-
|
||||
- op: replace
|
||||
path: /spec/controlPlaneRef/name
|
||||
value: ${CLUSTER_NAME}-master
|
||||
|
||||
- target:
|
||||
group: infrastructure.cluster.x-k8s.io
|
||||
version: v1beta1
|
||||
kind: VSphereMachineTemplate
|
||||
name: \${CLUSTER_NAME}-worker
|
||||
patch: |-
|
||||
- op: replace
|
||||
path: /spec/template/spec/numCPUs
|
||||
value: {{ _template.nodesize.cpu }}
|
||||
- op: replace
|
||||
path: /spec/template/spec/memoryMiB
|
||||
value: {{ _template.nodesize.memory }}
|
||||
- target:
|
||||
group: cluster.x-k8s.io
|
||||
version: v1beta1
|
||||
kind: MachineDeployment
|
||||
name: \${CLUSTER_NAME}-md-0
|
||||
patch: |-
|
||||
- op: replace
|
||||
path: /metadata/name
|
||||
value: ${CLUSTER_NAME}-worker
|
||||
- op: replace
|
||||
path: /spec/template/spec/bootstrap/configRef/name
|
||||
value: ${CLUSTER_NAME}-worker
|
||||
- target:
|
||||
group: bootstrap.cluster.x-k8s.io
|
||||
version: v1beta1
|
||||
kind: KubeadmConfigTemplate
|
||||
name: \${CLUSTER_NAME}-md-0
|
||||
patch: |-
|
||||
- op: replace
|
||||
path: /metadata/name
|
||||
value: ${CLUSTER_NAME}-worker
|
||||
- target:
|
||||
group: infrastructure.cluster.x-k8s.io
|
||||
version: v1beta1
|
||||
kind: VSphereMachineTemplate
|
||||
name: \${CLUSTER_NAME}-worker
|
||||
patch: |-
|
||||
- op: replace
|
||||
path: /spec/template/spec/numCPUs
|
||||
value: {{ _template.nodesize.cpu }}
|
||||
- op: replace
|
||||
path: /spec/template/spec/memoryMiB
|
||||
value: {{ _template.nodesize.memory }}
|
||||
- target:
|
||||
group: cluster.x-k8s.io
|
||||
version: v1beta1
|
||||
kind: MachineDeployment
|
||||
name: \${CLUSTER_NAME}-md-0
|
||||
patch: |-
|
||||
- op: replace
|
||||
path: /metadata/name
|
||||
value: ${CLUSTER_NAME}-worker
|
||||
- op: replace
|
||||
path: /spec/template/spec/bootstrap/configRef/name
|
||||
value: ${CLUSTER_NAME}-worker
|
||||
- target:
|
||||
group: bootstrap.cluster.x-k8s.io
|
||||
version: v1beta1
|
||||
kind: KubeadmConfigTemplate
|
||||
name: \${CLUSTER_NAME}-md-0
|
||||
patch: |-
|
||||
- op: replace
|
||||
path: /metadata/name
|
||||
value: ${CLUSTER_NAME}-worker
|
||||
|
@ -5,8 +5,8 @@ resources:
|
||||
- manifests/machinedeployment-{{ _template.cluster.name }}-worker.yaml
|
||||
- manifests/vspheremachinetemplate-{{ _template.cluster.name }}-worker.yaml
|
||||
|
||||
patchesStrategicMerge:
|
||||
- |-
|
||||
patches:
|
||||
- patch: |-
|
||||
apiVersion: bootstrap.cluster.x-k8s.io/v1beta1
|
||||
kind: KubeadmConfigTemplate
|
||||
metadata:
|
||||
@ -31,7 +31,7 @@ patchesStrategicMerge:
|
||||
mounts:
|
||||
- - LABEL=blockstorage
|
||||
- /mnt/blockstorage
|
||||
- |-
|
||||
- patch: |-
|
||||
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
|
||||
kind: VSphereMachineTemplate
|
||||
metadata:
|
||||
@ -43,42 +43,41 @@ patchesStrategicMerge:
|
||||
additionalDisksGiB:
|
||||
- {{ _template.nodepool.additionaldisk }}
|
||||
|
||||
patchesJson6902:
|
||||
- target:
|
||||
group: bootstrap.cluster.x-k8s.io
|
||||
version: v1beta1
|
||||
kind: KubeadmConfigTemplate
|
||||
name: {{ _template.cluster.name }}-worker
|
||||
patch: |-
|
||||
- op: replace
|
||||
path: /metadata/name
|
||||
value: {{ _template.cluster.name }}-worker-storage
|
||||
- target:
|
||||
group: bootstrap.cluster.x-k8s.io
|
||||
version: v1beta1
|
||||
kind: KubeadmConfigTemplate
|
||||
name: {{ _template.cluster.name }}-worker
|
||||
patch: |-
|
||||
- op: replace
|
||||
path: /metadata/name
|
||||
value: {{ _template.cluster.name }}-worker-storage
|
||||
|
||||
- target:
|
||||
group: cluster.x-k8s.io
|
||||
version: v1beta1
|
||||
kind: MachineDeployment
|
||||
name: {{ _template.cluster.name }}-worker
|
||||
patch: |-
|
||||
- op: replace
|
||||
path: /metadata/name
|
||||
value: {{ _template.cluster.name }}-worker-storage
|
||||
- op: replace
|
||||
path: /spec/template/spec/bootstrap/configRef/name
|
||||
value: {{ _template.cluster.name }}-worker-storage
|
||||
- op: replace
|
||||
path: /spec/template/spec/infrastructureRef/name
|
||||
value: {{ _template.cluster.name }}-worker-storage
|
||||
- op: replace
|
||||
path: /spec/replicas
|
||||
value: {{ _template.nodepool.size }}
|
||||
- target:
|
||||
group: cluster.x-k8s.io
|
||||
version: v1beta1
|
||||
kind: MachineDeployment
|
||||
name: {{ _template.cluster.name }}-worker
|
||||
patch: |-
|
||||
- op: replace
|
||||
path: /metadata/name
|
||||
value: {{ _template.cluster.name }}-worker-storage
|
||||
- op: replace
|
||||
path: /spec/template/spec/bootstrap/configRef/name
|
||||
value: {{ _template.cluster.name }}-worker-storage
|
||||
- op: replace
|
||||
path: /spec/template/spec/infrastructureRef/name
|
||||
value: {{ _template.cluster.name }}-worker-storage
|
||||
- op: replace
|
||||
path: /spec/replicas
|
||||
value: {{ _template.nodepool.size }}
|
||||
|
||||
- target:
|
||||
group: infrastructure.cluster.x-k8s.io
|
||||
version: v1beta1
|
||||
kind: VSphereMachineTemplate
|
||||
name: {{ _template.cluster.name }}-worker
|
||||
patch: |-
|
||||
- op: replace
|
||||
path: /metadata/name
|
||||
value: {{ _template.cluster.name }}-worker-storage
|
||||
- target:
|
||||
group: infrastructure.cluster.x-k8s.io
|
||||
version: v1beta1
|
||||
kind: VSphereMachineTemplate
|
||||
name: {{ _template.cluster.name }}-worker
|
||||
patch: |-
|
||||
- op: replace
|
||||
path: /metadata/name
|
||||
value: {{ _template.cluster.name }}-worker-storage
|
||||
|
@ -1,12 +1,6 @@
|
||||
- import_tasks: service.yml
|
||||
- import_tasks: cron.yml
|
||||
|
||||
- name: Cleanup tempfile
|
||||
ansible.builtin.file:
|
||||
path: "{{ kubeconfig.path }}"
|
||||
state: absent
|
||||
when: kubeconfig.path is defined
|
||||
|
||||
# - name: Reboot host
|
||||
# ansible.builtin.shell:
|
||||
# cmd: systemctl reboot
|
||||
|
@ -1,7 +1,7 @@
|
||||
platform:
|
||||
|
||||
k3s:
|
||||
version: v1.26.4+k3s1
|
||||
version: v1.27.1+k3s1
|
||||
|
||||
packaged_components:
|
||||
- name: traefik
|
||||
@ -33,12 +33,6 @@ platform:
|
||||
helm_repositories:
|
||||
- name: argo
|
||||
url: https://argoproj.github.io/argo-helm
|
||||
- name: authentik
|
||||
url: https://charts.goauthentik.io
|
||||
# - name: codecentric
|
||||
# url: https://codecentric.github.io/helm-charts
|
||||
# - name: dex
|
||||
# url: https://charts.dexidp.io
|
||||
- name: gitea-charts
|
||||
url: https://dl.gitea.io/charts/
|
||||
- name: harbor
|
||||
@ -51,6 +45,8 @@ platform:
|
||||
url: https://prometheus-community.github.io/helm-charts
|
||||
- name: smallstep
|
||||
url: https://smallstep.github.io/helm-charts/
|
||||
- name: spamasaurus
|
||||
url: https://code.spamasaurus.com/api/packages/djpbessems/helm
|
||||
|
||||
components:
|
||||
|
||||
@ -71,32 +67,6 @@ components:
|
||||
hosts:
|
||||
- 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:
|
||||
helm:
|
||||
version: 1.11.0
|
||||
@ -115,61 +85,13 @@ components:
|
||||
infrastructure_vsphere: v1.6.0
|
||||
ipam_incluster: v0.1.0-alpha.2
|
||||
# Refer to `https://console.cloud.google.com/gcr/images/cloud-provider-vsphere/GLOBAL/cpi/release/manager` for available tags
|
||||
cpi_vsphere: v1.26.0
|
||||
cpi_vsphere: v1.26.2
|
||||
workload:
|
||||
version:
|
||||
calico: v3.25.0
|
||||
k8s: v1.26.4
|
||||
k8s: v1.27.1
|
||||
node_template:
|
||||
url: https://{{ repo_username }}:{{ repo_password }}@sn.itch.fyi/Repository/rel/ubuntu-2204-kube-v1.26.4.ova
|
||||
|
||||
# dex:
|
||||
# helm:
|
||||
# version: 0.13.0 # (= Dex 2.35.3)
|
||||
# chart: dex/dex
|
||||
# parse_logic: helm template . | yq --no-doc eval '.. | .image? | select(.)' | sort -u | awk '!/ /'
|
||||
# chart_values: !unsafe |
|
||||
# config:
|
||||
# connectors:
|
||||
# - type: ldap
|
||||
# id: ldap
|
||||
# name: "LDAP"
|
||||
# config:
|
||||
# host: "{{ vapp['ldap.fqdn'] }}:636"
|
||||
# insecureNoSSL: false
|
||||
# insecureSkipVerify: true
|
||||
# bindDN: "{{ vapp['ldap.dn'] }}"
|
||||
# bindPW: "{{ vapp['ldap.password'] }}"
|
||||
|
||||
# usernamePrompt: "Username"
|
||||
# userSearch:
|
||||
# baseDN: OU=Administrators,OU=Useraccounts,DC=bessems,DC=eu
|
||||
# filter: "(objectClass=person)"
|
||||
# username: userPrincipalName
|
||||
# idAttr: DN
|
||||
# emailAttr: userPrincipalName
|
||||
# nameAttr: cn
|
||||
|
||||
# groupSearch:
|
||||
# baseDN: OU=Roles,OU=Groups,DC=bessems,DC=eu
|
||||
# filter: "(objectClass=group)"
|
||||
# userMatchers:
|
||||
# - userAttr: DN
|
||||
# groupAttr: member
|
||||
# nameAttr: cn
|
||||
# enablePasswordDB: true
|
||||
# issuer: https://oidc.{{ vapp['metacluster.fqdn'] }}
|
||||
# storage:
|
||||
# type: kubernetes
|
||||
# config:
|
||||
# inCluster: true
|
||||
# ingress:
|
||||
# enabled: true
|
||||
# hosts:
|
||||
# - host: oidc.{{ vapp['metacluster.fqdn'] }}
|
||||
# paths:
|
||||
# - path: /
|
||||
# pathType: Prefix
|
||||
url: https://{{ repo_username }}:{{ repo_password }}@sn.itch.fyi/Repository/rel/ubuntu-2204-kube-v1.27.1.ova
|
||||
|
||||
gitea:
|
||||
helm:
|
||||
@ -225,37 +147,24 @@ components:
|
||||
registry:
|
||||
size: 25Gi
|
||||
|
||||
# keycloakx:
|
||||
# helm:
|
||||
# version: 2.1.1 # (= Keycloak 20.0.3)
|
||||
# chart: codecentric/keycloakx
|
||||
# parse_logic: helm template . | yq --no-doc eval '.. | .image? | select(.)' | sort -u | awk '!/ /'
|
||||
# chart_values: !unsafe |
|
||||
# command:
|
||||
# - "/opt/keycloak/bin/kc.sh"
|
||||
# - "start"
|
||||
# - "--http-enabled=true"
|
||||
# - "--http-port=8080"
|
||||
# - "--hostname-strict=false"
|
||||
# - "--hostname-strict-https=false"
|
||||
# extraEnv: |
|
||||
# - name: KEYCLOAK_ADMIN
|
||||
# value: admin
|
||||
# - name: KEYCLOAK_ADMIN_PASSWORD
|
||||
# value: {{ vapp['metacluster.password'] }}
|
||||
# - name: KC_PROXY
|
||||
# value: "passthrough"
|
||||
# - name: JAVA_OPTS_APPEND
|
||||
# value: >-
|
||||
# -Djgroups.dns.query={% raw %}{{ include "keycloak.fullname" . }}{% endraw %}-headless
|
||||
# ingress:
|
||||
# enabled: true
|
||||
# rules:
|
||||
# - host: keycloak.{{ vapp['metacluster.fqdn'] }}
|
||||
# paths:
|
||||
# - path: /
|
||||
# pathType: Prefix
|
||||
# tls: []
|
||||
json-server:
|
||||
helm:
|
||||
version: v0.8.3
|
||||
chart: spamasaurus/json-server
|
||||
parse_logic: helm template . | yq --no-doc eval '.. | .image? | select(.)' | sort -u | awk '!/ /'
|
||||
chart_values: !unsafe |
|
||||
ingress:
|
||||
enabled: true
|
||||
hosts:
|
||||
- host: version.{{ vapp['metacluster.fqdn'] }}
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
jsonServer:
|
||||
seedData:
|
||||
configInline: {}
|
||||
sidecar:
|
||||
targetUrl: version.{{ vapp['metacluster.fqdn'] }}
|
||||
|
||||
kube-prometheus-stack:
|
||||
helm:
|
||||
@ -288,6 +197,10 @@ components:
|
||||
persistence:
|
||||
defaultClassReplicaCount: 1
|
||||
|
||||
pinniped:
|
||||
# Must match the version referenced at `dependencies.static_binaries[.filename==pinniped].url`
|
||||
version: v0.25.0
|
||||
|
||||
step-certificates:
|
||||
helm:
|
||||
version: 1.23.0
|
||||
@ -345,6 +258,8 @@ dependencies:
|
||||
- filename: kubectl-slice
|
||||
url: https://github.com/patrickdappollonio/kubectl-slice/releases/download/v1.2.5/kubectl-slice_linux_x86_64.tar.gz
|
||||
archive: compressed
|
||||
- filename: pinniped
|
||||
url: https://github.com/vmware-tanzu/pinniped/releases/download/v0.25.0/pinniped-cli-linux-amd64
|
||||
- filename: skopeo
|
||||
url: https://code.spamasaurus.com/api/packages/djpbessems/generic/skopeo/v1.12.0/skopeo_linux_amd64
|
||||
- filename: step
|
||||
|
@ -1,5 +1,14 @@
|
||||
packer {
|
||||
required_plugins {
|
||||
vsphere = {
|
||||
source = "github.com/hashicorp/vsphere"
|
||||
version = "~> 1"
|
||||
}
|
||||
|
||||
ansible = {
|
||||
source = "github.com/hashicorp/ansible"
|
||||
version = "~> 1"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -28,6 +37,7 @@ build {
|
||||
|
||||
extra_arguments = [
|
||||
"--extra-vars", "appliancetype=${source.name}",
|
||||
"--extra-vars", "applianceversion=${var.appliance_version}",
|
||||
"--extra-vars", "ansible_ssh_pass=${var.ssh_password}",
|
||||
"--extra-vars", "docker_username=${var.docker_username}",
|
||||
"--extra-vars", "docker_password=${var.docker_password}",
|
||||
@ -45,7 +55,7 @@ build {
|
||||
" -ManifestFileName '/scratch/bld_${var.vm_name}_${source.name}.mf'",
|
||||
"ovftool --acceptAllEulas --allowExtraConfig --overwrite \\",
|
||||
" '/scratch/bld_${var.vm_name}_${source.name}.ovf' \\",
|
||||
" /output/airgapped-k8s-${var.k8s_version}.${source.name}.ova"
|
||||
" /output/airgapped-k8s-${var.appliance_version}+${var.k8s_version}-${source.name}.ova"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
@ -34,4 +34,5 @@ variable "docker_password" {
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "appliance_version" {}
|
||||
variable "k8s_version" {}
|
||||
|
Reference in New Issue
Block a user