mirror of
https://github.com/amkartashov/gf-k8s.git
synced 2026-01-11 09:59:43 +00:00
initial argo apps + bootstrap
This commit is contained in:
parent
73c2d74a71
commit
1a4fd32f52
22 changed files with 10857 additions and 0 deletions
15
Bootstrap.md
Normal file
15
Bootstrap.md
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
|
||||
|
||||
$ helm dep update apps/system/nginx-ingress
|
||||
$ helm template --name nginx-ingress --namespace nginx-ingress apps/system/nginx-ingress | kubectl --context=gullfaxi --namespace nginx-ingress apply -f -
|
||||
|
||||
$ helm repoadd jetstack https://charts.jetstack.io
|
||||
$ helm dep update apps/system/cert-manager
|
||||
$ helm template --name cert-manager --namespace cert-manager apps/system/cert-manager | kubectl --context=gullfaxi --namespace cert-manager apply -f -
|
||||
|
||||
$ kubectl --context=gullfaxi apply -k apps/argocd
|
||||
# add dex.github.clientId and dex.github.clientSecret into argo-secret
|
||||
$ kubectl --context=gullfaxi -n argocd edit secret argocd-secret
|
||||
|
||||
(optional)
|
||||
$ kubectl --context=gullfaxi apply -k apps/system/sealed-secrets
|
||||
60
apps/argocd/ingress.yaml
Normal file
60
apps/argocd/ingress.yaml
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
---
|
||||
apiVersion: certmanager.k8s.io/v1alpha1
|
||||
kind: Certificate
|
||||
metadata:
|
||||
name: argocd
|
||||
spec:
|
||||
secretName: argocd-secret
|
||||
dnsNames:
|
||||
- argocd.gorilych.ru
|
||||
- argocd-grpc.gorilych.ru
|
||||
acme:
|
||||
config:
|
||||
- http01:
|
||||
ingressClass: nginx
|
||||
domains:
|
||||
- argocd.gorilych.ru
|
||||
- argocd-grpc.gorilych.ru
|
||||
issuerRef:
|
||||
name: letsencrypt
|
||||
kind: ClusterIssuer
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1beta1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: argocd-server-http-ingress
|
||||
annotations:
|
||||
kubernetes.io/ingress.class: nginx
|
||||
spec:
|
||||
rules:
|
||||
- http:
|
||||
paths:
|
||||
- backend:
|
||||
serviceName: argocd-server
|
||||
servicePort: http
|
||||
host: argocd.gorilych.ru
|
||||
tls:
|
||||
- hosts:
|
||||
- argocd.gorilych.ru
|
||||
secretName: argocd-secret
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1beta1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: argocd-server-grpc-ingress
|
||||
annotations:
|
||||
kubernetes.io/ingress.class: nginx
|
||||
nginx.ingress.kubernetes.io/backend-protocol: GRPC
|
||||
spec:
|
||||
rules:
|
||||
- http:
|
||||
paths:
|
||||
- backend:
|
||||
serviceName: argocd-server
|
||||
servicePort: http
|
||||
host: argocd-grpc.gorilych.ru
|
||||
tls:
|
||||
- hosts:
|
||||
- argocd-grpc.gorilych.ru
|
||||
secretName: argocd-secret
|
||||
|
||||
2946
apps/argocd/install.yaml
Normal file
2946
apps/argocd/install.yaml
Normal file
File diff suppressed because it is too large
Load diff
15
apps/argocd/kustomization.yaml
Normal file
15
apps/argocd/kustomization.yaml
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
namespace: argocd
|
||||
commonLabels:
|
||||
app.kubernetes.io/version: v1.3.0-rc2
|
||||
app.kubernetes.io/managed-by: argocd
|
||||
resources:
|
||||
- namespace.yaml
|
||||
# from https://raw.githubusercontent.com/argoproj/argo-cd/v1.3.0-rc2/manifests/install.yaml
|
||||
- install.yaml
|
||||
- ingress.yaml
|
||||
patchesStrategicMerge:
|
||||
- patches/argocd-server.yaml
|
||||
- patches/argocd-cm.yaml
|
||||
- patches/argocd-rbac-cm.yaml
|
||||
4
apps/argocd/namespace.yaml
Normal file
4
apps/argocd/namespace.yaml
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: argocd
|
||||
15
apps/argocd/patches/argocd-cm.yaml
Normal file
15
apps/argocd/patches/argocd-cm.yaml
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: argocd-cm
|
||||
data:
|
||||
url: https://argocd.gorilych.ru
|
||||
statusbadge.enabled: 'true'
|
||||
dex.config: |
|
||||
connectors:
|
||||
- type: github
|
||||
id: github
|
||||
name: GitHub
|
||||
config:
|
||||
clientID: $dex.github.clientId
|
||||
clientSecret: $dex.github.clientSecret
|
||||
8
apps/argocd/patches/argocd-rbac-cm.yaml
Normal file
8
apps/argocd/patches/argocd-rbac-cm.yaml
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: argocd-rbac-cm
|
||||
data:
|
||||
policy.csv: |
|
||||
# sub for gorilych github account with id 7404372
|
||||
g, Cgc3NDA0MzcyEgZnaXRodWI, role:admin
|
||||
14
apps/argocd/patches/argocd-server.yaml
Normal file
14
apps/argocd/patches/argocd-server.yaml
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: argocd-server
|
||||
spec:
|
||||
template:
|
||||
spec:
|
||||
containers:
|
||||
- name: argocd-server
|
||||
command:
|
||||
- argocd-server
|
||||
- --staticassets
|
||||
- /shared/app
|
||||
- --insecure
|
||||
2
apps/system/cert-manager/.gitignore
vendored
Normal file
2
apps/system/cert-manager/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
requirements.lock
|
||||
charts/
|
||||
1
apps/system/cert-manager/Chart.yaml
Normal file
1
apps/system/cert-manager/Chart.yaml
Normal file
|
|
@ -0,0 +1 @@
|
|||
name: cert-manager
|
||||
4
apps/system/cert-manager/requirements.yaml
Normal file
4
apps/system/cert-manager/requirements.yaml
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
dependencies:
|
||||
- name: cert-manager
|
||||
version: v0.10.1
|
||||
repository: https://charts.jetstack.io
|
||||
7502
apps/system/cert-manager/templates/00-crds.yaml
Normal file
7502
apps/system/cert-manager/templates/00-crds.yaml
Normal file
File diff suppressed because it is too large
Load diff
11
apps/system/cert-manager/templates/clusterissuer.yaml
Normal file
11
apps/system/cert-manager/templates/clusterissuer.yaml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
apiVersion: certmanager.k8s.io/v1alpha1
|
||||
kind: ClusterIssuer
|
||||
metadata:
|
||||
name: letsencrypt
|
||||
spec:
|
||||
acme:
|
||||
server: https://acme-v02.api.letsencrypt.org/directory
|
||||
email: gorilych@gmail.com
|
||||
privateKeySecretRef:
|
||||
name: letsencrypt
|
||||
http01: {}
|
||||
4
apps/system/cert-manager/templates/namespace.yaml
Normal file
4
apps/system/cert-manager/templates/namespace.yaml
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: cert-manager
|
||||
2
apps/system/nginx-ingress/.gitignore
vendored
Normal file
2
apps/system/nginx-ingress/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
requirements.lock
|
||||
charts/
|
||||
1
apps/system/nginx-ingress/Chart.yaml
Normal file
1
apps/system/nginx-ingress/Chart.yaml
Normal file
|
|
@ -0,0 +1 @@
|
|||
name: nginx-ingress
|
||||
4
apps/system/nginx-ingress/requirements.yaml
Normal file
4
apps/system/nginx-ingress/requirements.yaml
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
dependencies:
|
||||
- name: nginx-ingress
|
||||
version: 1.24.4
|
||||
repository: '@stable'
|
||||
4
apps/system/nginx-ingress/templates/namespace.yaml
Normal file
4
apps/system/nginx-ingress/templates/namespace.yaml
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: nginx-ingress
|
||||
8
apps/system/nginx-ingress/values.yaml
Normal file
8
apps/system/nginx-ingress/values.yaml
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
nginx-ingress:
|
||||
controller:
|
||||
service:
|
||||
type: NodePort
|
||||
nodePorts:
|
||||
# port forwarding on router
|
||||
http: 30080
|
||||
https: 30443
|
||||
222
apps/system/sealed-secrets/controller.yaml
Normal file
222
apps/system/sealed-secrets/controller.yaml
Normal file
|
|
@ -0,0 +1,222 @@
|
|||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
annotations: {}
|
||||
labels:
|
||||
name: sealed-secrets-controller
|
||||
name: sealed-secrets-controller
|
||||
namespace: kube-system
|
||||
spec:
|
||||
minReadySeconds: 30
|
||||
replicas: 1
|
||||
revisionHistoryLimit: 10
|
||||
selector:
|
||||
matchLabels:
|
||||
name: sealed-secrets-controller
|
||||
strategy:
|
||||
rollingUpdate:
|
||||
maxSurge: 25%
|
||||
maxUnavailable: 25%
|
||||
type: RollingUpdate
|
||||
template:
|
||||
metadata:
|
||||
annotations: {}
|
||||
labels:
|
||||
name: sealed-secrets-controller
|
||||
spec:
|
||||
containers:
|
||||
- args: []
|
||||
command:
|
||||
- controller
|
||||
env: []
|
||||
image: quay.io/bitnami/sealed-secrets-controller:v0.9.2
|
||||
imagePullPolicy: Always
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /healthz
|
||||
port: http
|
||||
name: sealed-secrets-controller
|
||||
ports:
|
||||
- containerPort: 8080
|
||||
name: http
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /healthz
|
||||
port: http
|
||||
securityContext:
|
||||
readOnlyRootFilesystem: true
|
||||
runAsNonRoot: true
|
||||
runAsUser: 1001
|
||||
stdin: false
|
||||
tty: false
|
||||
volumeMounts:
|
||||
- mountPath: /tmp
|
||||
name: tmp
|
||||
imagePullSecrets: []
|
||||
initContainers: []
|
||||
serviceAccountName: sealed-secrets-controller
|
||||
terminationGracePeriodSeconds: 30
|
||||
volumes:
|
||||
- emptyDir: {}
|
||||
name: tmp
|
||||
---
|
||||
apiVersion: apiextensions.k8s.io/v1beta1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
name: sealedsecrets.bitnami.com
|
||||
spec:
|
||||
group: bitnami.com
|
||||
names:
|
||||
kind: SealedSecret
|
||||
listKind: SealedSecretList
|
||||
plural: sealedsecrets
|
||||
singular: sealedsecret
|
||||
scope: Namespaced
|
||||
version: v1alpha1
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
annotations: {}
|
||||
labels:
|
||||
name: sealed-secrets-controller
|
||||
name: sealed-secrets-controller
|
||||
namespace: kube-system
|
||||
spec:
|
||||
ports:
|
||||
- port: 8080
|
||||
targetPort: 8080
|
||||
selector:
|
||||
name: sealed-secrets-controller
|
||||
type: ClusterIP
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1beta1
|
||||
kind: RoleBinding
|
||||
metadata:
|
||||
annotations: {}
|
||||
labels:
|
||||
name: sealed-secrets-service-proxier
|
||||
name: sealed-secrets-service-proxier
|
||||
namespace: kube-system
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: Role
|
||||
name: sealed-secrets-service-proxier
|
||||
subjects:
|
||||
- apiGroup: rbac.authorization.k8s.io
|
||||
kind: Group
|
||||
name: system:authenticated
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1beta1
|
||||
kind: Role
|
||||
metadata:
|
||||
annotations: {}
|
||||
labels:
|
||||
name: sealed-secrets-service-proxier
|
||||
name: sealed-secrets-service-proxier
|
||||
namespace: kube-system
|
||||
rules:
|
||||
- apiGroups:
|
||||
- ""
|
||||
resourceNames:
|
||||
- 'http:sealed-secrets-controller:'
|
||||
- sealed-secrets-controller
|
||||
resources:
|
||||
- services/proxy
|
||||
verbs:
|
||||
- create
|
||||
- get
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1beta1
|
||||
kind: Role
|
||||
metadata:
|
||||
annotations: {}
|
||||
labels:
|
||||
name: sealed-secrets-key-admin
|
||||
name: sealed-secrets-key-admin
|
||||
namespace: kube-system
|
||||
rules:
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- secrets
|
||||
verbs:
|
||||
- create
|
||||
- list
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
annotations: {}
|
||||
labels:
|
||||
name: sealed-secrets-controller
|
||||
name: sealed-secrets-controller
|
||||
namespace: kube-system
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1beta1
|
||||
kind: RoleBinding
|
||||
metadata:
|
||||
annotations: {}
|
||||
labels:
|
||||
name: sealed-secrets-controller
|
||||
name: sealed-secrets-controller
|
||||
namespace: kube-system
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: Role
|
||||
name: sealed-secrets-key-admin
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: sealed-secrets-controller
|
||||
namespace: kube-system
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1beta1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
annotations: {}
|
||||
labels:
|
||||
name: sealed-secrets-controller
|
||||
name: sealed-secrets-controller
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: secrets-unsealer
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: sealed-secrets-controller
|
||||
namespace: kube-system
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1beta1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
annotations: {}
|
||||
labels:
|
||||
name: secrets-unsealer
|
||||
name: secrets-unsealer
|
||||
rules:
|
||||
- apiGroups:
|
||||
- bitnami.com
|
||||
resources:
|
||||
- sealedsecrets
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- update
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- secrets
|
||||
verbs:
|
||||
- get
|
||||
- create
|
||||
- update
|
||||
- delete
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- events
|
||||
verbs:
|
||||
- create
|
||||
- patch
|
||||
11
apps/system/sealed-secrets/kustomization.yaml
Normal file
11
apps/system/sealed-secrets/kustomization.yaml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
namespace: sealedsecrets
|
||||
commonLabels:
|
||||
app.kubernetes.io/name: sealedsecrets
|
||||
app.kubernetes.io/version: 0.9.2
|
||||
app.kubernetes.io/managed-by: argocd
|
||||
resources:
|
||||
- namespace.yaml
|
||||
# from https://github.com/bitnami-labs/sealed-secrets/releases/download/v0.9.2/controller.yaml
|
||||
- controller.yaml
|
||||
4
apps/system/sealed-secrets/namespace.yaml
Normal file
4
apps/system/sealed-secrets/namespace.yaml
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: sealedsecrets
|
||||
Loading…
Reference in a new issue