feat: metallb, kubegres
This commit is contained in:
parent
ab8be47b7b
commit
740b62be58
156
00-init.yaml
156
00-init.yaml
@ -4,92 +4,92 @@
|
|||||||
hosts: all
|
hosts: all
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- name: Copy conf
|
- name: Copy conf
|
||||||
copy:
|
copy:
|
||||||
src: rootfs/
|
src: rootfs/
|
||||||
dest: /
|
dest: /
|
||||||
|
|
||||||
- name: Restart sshd
|
- name: Restart sshd
|
||||||
service:
|
service:
|
||||||
name: sshd.service
|
name: sshd.service
|
||||||
state: restarted
|
state: restarted
|
||||||
|
|
||||||
- name: SSH port 40022
|
- name: SSH port 40022
|
||||||
set_fact:
|
set_fact:
|
||||||
ansible_port: 40022
|
ansible_port: 40022
|
||||||
|
|
||||||
- name: Add {{ codename }} repo
|
- name: Add {{ codename }} repo
|
||||||
deb822_repository:
|
deb822_repository:
|
||||||
name: debian
|
name: debian
|
||||||
types: deb
|
types: deb
|
||||||
uris: http://deb.debian.org/debian
|
uris: http://deb.debian.org/debian
|
||||||
suites: "{{ codename }} {{ codename }}-updates {{ codename }}-backports"
|
suites: "{{ codename }} {{ codename }}-updates {{ codename }}-backports"
|
||||||
components:
|
components:
|
||||||
- main
|
- main
|
||||||
- non-free-firmware
|
- non-free-firmware
|
||||||
|
|
||||||
- name: Add {{ codename }}-security repo
|
- name: Add {{ codename }}-security repo
|
||||||
deb822_repository:
|
deb822_repository:
|
||||||
name: debian-security
|
name: debian-security
|
||||||
types: deb
|
types: deb
|
||||||
uris: http://security.debian.org/debian-security/
|
uris: http://security.debian.org/debian-security/
|
||||||
suites: "{{ codename }}-security"
|
suites: "{{ codename }}-security"
|
||||||
components:
|
components:
|
||||||
- main
|
- main
|
||||||
- non-free-firmware
|
- non-free-firmware
|
||||||
|
|
||||||
- name: Add libcontainers repo (CRI-O)
|
- name: Add libcontainers repo (CRI-O)
|
||||||
deb822_repository:
|
deb822_repository:
|
||||||
name: libcontainers
|
name: libcontainers
|
||||||
types: deb
|
types: deb
|
||||||
uris: "https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/{{ os }}/"
|
uris: "https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/{{ os }}/"
|
||||||
suites: /
|
suites: /
|
||||||
signed_by: "https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/{{ os }}/Release.key"
|
signed_by: "https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/{{ os }}/Release.key"
|
||||||
|
|
||||||
- name: Add libcontainers-crio repo (CRI-O)
|
- name: Add libcontainers-crio repo (CRI-O)
|
||||||
deb822_repository:
|
deb822_repository:
|
||||||
name: libcontainers-crio
|
name: libcontainers-crio
|
||||||
types: deb
|
types: deb
|
||||||
uris: "https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/{{ k8s_version }}/{{ os }}/"
|
uris: "https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/{{ k8s_version }}/{{ os }}/"
|
||||||
suites: /
|
suites: /
|
||||||
signed_by: "https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/{{ k8s_version }}/{{ os }}/Release.key"
|
signed_by: "https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/{{ k8s_version }}/{{ os }}/Release.key"
|
||||||
|
|
||||||
- name: Add k8s repo
|
- name: Add k8s repo
|
||||||
deb822_repository:
|
deb822_repository:
|
||||||
name: k8s
|
name: k8s
|
||||||
types: deb
|
types: deb
|
||||||
uris: "https://pkgs.k8s.io/core:/stable:/v{{ k8s_version }}/deb/"
|
uris: "https://pkgs.k8s.io/core:/stable:/v{{ k8s_version }}/deb/"
|
||||||
suites: /
|
suites: /
|
||||||
signed_by: "https://pkgs.k8s.io/core:/stable:/v{{ k8s_version }}/deb/Release.key"
|
signed_by: "https://pkgs.k8s.io/core:/stable:/v{{ k8s_version }}/deb/Release.key"
|
||||||
|
|
||||||
- name: Upgrade
|
- name: Upgrade
|
||||||
apt:
|
apt:
|
||||||
update_cache: true
|
update_cache: true
|
||||||
upgrade: dist
|
upgrade: dist
|
||||||
autoremove: true
|
autoremove: true
|
||||||
purge: true
|
purge: true
|
||||||
|
|
||||||
- name: Install pkgs
|
- name: Install pkgs
|
||||||
apt:
|
apt:
|
||||||
install_recommends: false
|
install_recommends: false
|
||||||
name:
|
name:
|
||||||
- ceph
|
- ceph
|
||||||
- ceph-common
|
- ceph-common
|
||||||
- cri-o
|
- cri-o
|
||||||
- cri-o-runc
|
- cri-o-runc
|
||||||
- cri-tools
|
- cri-tools
|
||||||
- cron
|
- cron
|
||||||
- iptables-persistent
|
- iptables-persistent
|
||||||
- kubeadm
|
- kubeadm
|
||||||
- kubectl
|
- kubectl
|
||||||
- kubectx
|
- kubectx
|
||||||
- kubelet
|
- kubelet
|
||||||
- vim
|
- vim
|
||||||
|
|
||||||
- name: Enable crio service
|
- name: Enable crio service
|
||||||
service:
|
service:
|
||||||
name: crio.service
|
name: crio.service
|
||||||
enabled: true
|
enabled: true
|
||||||
|
|
||||||
- name: Reboot
|
- name: Reboot
|
||||||
reboot:
|
reboot:
|
||||||
|
@ -7,15 +7,25 @@
|
|||||||
KUBECONFIG: /etc/kubernetes/admin.conf
|
KUBECONFIG: /etc/kubernetes/admin.conf
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- name: Init k8s
|
- name: Init k8s
|
||||||
shell: kubeadm init --pod-network-cidr=10.244.0.0/16 --control-plane-endpoint="{{ endpoint }}"
|
shell: kubeadm init --pod-network-cidr=10.244.0.0/16 --control-plane-endpoint="{{ endpoint }}"
|
||||||
- name: Remove master node taint
|
- name: Remove master node taint
|
||||||
shell: kubectl taint node --all node-role.kubernetes.io/control-plane:NoSchedule-
|
shell: kubectl taint node --all node-role.kubernetes.io/control-plane:NoSchedule-
|
||||||
- name: Apply flannel
|
- name: Apply flannel
|
||||||
shell: kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
|
shell: kubectl apply -f "https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml"
|
||||||
- name: Apply nginx ingress
|
- name: Apply metallb
|
||||||
shell: kubectl apply -f "https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v{{ nginx_version }}/deploy/static/provider/baremetal/deploy.yaml"
|
shell: kubectl apply -f "https://raw.githubusercontent.com/metallb/metallb/v{{ mettallb_version }}/config/manifests/metallb-native.yaml"
|
||||||
- name: Apply cert-manager
|
- name: Apply nginx ingress
|
||||||
shell: kubectl apply -f "https://github.com/cert-manager/cert-manager/releases/download/v{{ certmanager_version }}/cert-manager.yaml"
|
shell: kubectl apply -f "https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v{{ nginx_version }}/deploy/static/provider/baremetal/deploy.yaml"
|
||||||
- name: Reboot
|
- name: Apply cert-manager
|
||||||
reboot:
|
shell: kubectl apply -f "https://github.com/cert-manager/cert-manager/releases/latest/download/cert-manager.yaml"
|
||||||
|
- name: Apply kubegres
|
||||||
|
shell: kubectl apply -f "https://raw.githubusercontent.com/reactive-tech/kubegres/v{{ kubegres_version }}/kubegres.yaml"
|
||||||
|
- name: Apply manifests
|
||||||
|
shell: |
|
||||||
|
kubectl apply -f - <<EOF
|
||||||
|
{{ lookup('template', '{{ item }}') }}
|
||||||
|
EOF
|
||||||
|
with_fileglob: 'manifests/*.yaml'
|
||||||
|
- name: Reboot
|
||||||
|
reboot:
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash -e
|
#!/bin/bash -e
|
||||||
|
|
||||||
endpoint="$(awk -F '[ \t]*:[ \t]*' '$1 == "endpoint" {print $NF}' group_vars/all)"
|
endpoint="$(sed -n 's/^endpoint:\s*//p' group_vars/all)"
|
||||||
|
|
||||||
ssh "$endpoint" sudo cat /etc/kubernetes/admin.conf > kubeconfig
|
ssh "$endpoint" sudo cat /etc/kubernetes/admin.conf > kubeconfig
|
||||||
chmod 600 kubeconfig
|
chmod 600 kubeconfig
|
||||||
|
@ -5,6 +5,10 @@ arch: amd64
|
|||||||
os: Debian_12
|
os: Debian_12
|
||||||
codename: bookworm
|
codename: bookworm
|
||||||
k8s_version: 1.27 # https://kubernetes.io/releases/patch-releases/#detailed-release-history-for-active-branches
|
k8s_version: 1.27 # https://kubernetes.io/releases/patch-releases/#detailed-release-history-for-active-branches
|
||||||
|
metallb_version: 0.14.3 # https://github.com/metallb/metallb/releases
|
||||||
nginx_version: 1.9.6 # https://github.com/kubernetes/ingress-nginx/releases
|
nginx_version: 1.9.6 # https://github.com/kubernetes/ingress-nginx/releases
|
||||||
certmanager_version: 1.14.2 # https://github.com/cert-manager/cert-manager/releases/
|
kubegres_version: 1.17 # https://github.com/reactive-tech/kubegres/releases
|
||||||
|
|
||||||
|
# TODO
|
||||||
rook_version: 1.13.4 # https://github.com/rook/rook/releases
|
rook_version: 1.13.4 # https://github.com/rook/rook/releases
|
||||||
|
nfs_version: 4.6.0 # https://github.com/kubernetes-csi/csi-driver-nfs/releases
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
data:
|
data:
|
||||||
use-proxy-protocol: "true"
|
use-proxy-protocol: "true"
|
||||||
|
allow-snippet-annotations: "true"
|
||||||
kind: ConfigMap
|
kind: ConfigMap
|
||||||
metadata:
|
metadata:
|
||||||
name: ingress-nginx-controller
|
name: ingress-nginx-controller
|
||||||
|
@ -7,7 +7,7 @@ metadata:
|
|||||||
app.kubernetes.io/instance: ingress-nginx
|
app.kubernetes.io/instance: ingress-nginx
|
||||||
app.kubernetes.io/name: ingress-nginx
|
app.kubernetes.io/name: ingress-nginx
|
||||||
app.kubernetes.io/part-of: ingress-nginx
|
app.kubernetes.io/part-of: ingress-nginx
|
||||||
app.kubernetes.io/version: 1.9.6
|
app.kubernetes.io/version: "{{ nginx_version }}"
|
||||||
name: ingress-nginx-controller
|
name: ingress-nginx-controller
|
||||||
namespace: ingress-nginx
|
namespace: ingress-nginx
|
||||||
spec:
|
spec:
|
||||||
|
@ -5,7 +5,7 @@ metadata:
|
|||||||
name: letsencrypt-prod
|
name: letsencrypt-prod
|
||||||
spec:
|
spec:
|
||||||
acme:
|
acme:
|
||||||
email: ange@yw5n.com
|
email: "{{ letsencrypt_email }}"
|
||||||
privateKeySecretRef:
|
privateKeySecretRef:
|
||||||
name: letsencrypt-prod
|
name: letsencrypt-prod
|
||||||
server: https://acme-v02.api.letsencrypt.org/directory
|
server: https://acme-v02.api.letsencrypt.org/directory
|
||||||
|
@ -5,7 +5,7 @@ metadata:
|
|||||||
name: letsencrypt-staging
|
name: letsencrypt-staging
|
||||||
spec:
|
spec:
|
||||||
acme:
|
acme:
|
||||||
email: ange@yw5n.com
|
email: "{{ letsencrypt_email }}"
|
||||||
privateKeySecretRef:
|
privateKeySecretRef:
|
||||||
name: letsencrypt-staging
|
name: letsencrypt-staging
|
||||||
server: https://acme-staging-v02.api.letsencrypt.org/directory
|
server: https://acme-staging-v02.api.letsencrypt.org/directory
|
||||||
|
Loading…
Reference in New Issue
Block a user