kubernetes: added woodpecker-ci
- added woodpecker CI - removed kubernetes infra terraform files. - added demo woodpecker pipeline
This commit is contained in:
		
							
								
								
									
										14
									
								
								.woodpecker/demo-workflow.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								.woodpecker/demo-workflow.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,14 @@ | |||||||
|  | when: | ||||||
|  |   - event: push | ||||||
|  |  | ||||||
|  | steps: | ||||||
|  |   - name: build | ||||||
|  |     image: debian | ||||||
|  |     commands: | ||||||
|  |       - echo "This is the build step" | ||||||
|  |       - echo "binary-data-123" > executable | ||||||
|  |   - name: a-test-step | ||||||
|  |     image: golang:1.16 | ||||||
|  |     commands: | ||||||
|  |       - echo "Testing ..." | ||||||
|  |       - ./executable | ||||||
| @ -11,8 +11,8 @@ Currently, only the Proxmox virtual machines are managed using Terraform. | |||||||
| Kubernetes clusters are still created with Ansible, and Kubernetes resources are | Kubernetes clusters are still created with Ansible, and Kubernetes resources are | ||||||
| managed using Helm charts and kubectl. Previously, Proxmox was also managed with | managed using Helm charts and kubectl. Previously, Proxmox was also managed with | ||||||
| Ansible, but it has been moved to Terraform for improved consistency and state | Ansible, but it has been moved to Terraform for improved consistency and state | ||||||
| management. The goal is to eventually manage all infrastructure—including | management. The goal is to eventually manage all infrastructure including | ||||||
| Kubernetes clusters—using Terraform. | creating Kubernetes clusters with Terraform, but this is a work in progress. | ||||||
|  |  | ||||||
| The terraform state files are stored in a remote backend, which allows for | The terraform state files are stored in a remote backend, which allows for | ||||||
| collaboration and state management across different environments. The backend | collaboration and state management across different environments. The backend | ||||||
|  | |||||||
| @ -1,14 +0,0 @@ | |||||||
| terraform { |  | ||||||
|   backend "s3" { |  | ||||||
|     bucket                      = "terraform-state" # Name of the MinIO bucket |  | ||||||
|     key                         = "kubernetes/terraform.tfstate" # Path to the state file in the bucket |  | ||||||
|     endpoint                    = var.minio_endpoint # MinIO API endpoint |  | ||||||
|     access_key                  = var.minio_access_key # MinIO access key |  | ||||||
|     secret_key                  = var.minio_secret_key # MinIO secret key |  | ||||||
|     region                      = "us-east-1" # Arbitrary region (MinIO ignores this) |  | ||||||
|     skip_credentials_validation = true # Skip AWS-specific credential checks |  | ||||||
|     skip_metadata_api_check     = true # Skip AWS metadata API checks |  | ||||||
|     skip_region_validation      = true # Skip AWS region validation |  | ||||||
|     use_path_style              = true # Use path-style URLs[](http://<host>/<bucket>) |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| @ -1,16 +0,0 @@ | |||||||
| # No new namespace is required since it is being deployed in kube-system namespace. |  | ||||||
| resource "helm_release" "kube_vip" { |  | ||||||
|   name       = "kube-vip" |  | ||||||
|   repository = "https://kube-vip.github.io/helm-charts" |  | ||||||
|   chart      = "kube-vip" |  | ||||||
|   version    = "0.6.6" |  | ||||||
|   atomic     = true |  | ||||||
|  |  | ||||||
|   namespace = "kube-system" |  | ||||||
|  |  | ||||||
|   values = [ |  | ||||||
|       templatefile("${var.kubernetes_project_path}/kube-vip/values.yaml", { |  | ||||||
|         VIP_ADDRESS = var.vip_address |  | ||||||
|       }) |  | ||||||
|   ] |  | ||||||
| } |  | ||||||
| @ -1,22 +0,0 @@ | |||||||
| terraform { |  | ||||||
|     required_providers { |  | ||||||
|         kubernetes = { |  | ||||||
|         source  = "hashicorp/kubernetes" |  | ||||||
|         version = "2.37.1" |  | ||||||
|         } |  | ||||||
|         helm = { |  | ||||||
|             source  = "hashicorp/helm" |  | ||||||
|             version = "3.0.2" |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| provider "kubernetes" { |  | ||||||
|     config_path = "~/.kube/config" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| provider "helm" { |  | ||||||
|     kubernetes = { |  | ||||||
|         config_path = "~/.kube/config" |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,50 +0,0 @@ | |||||||
| resource "kubernetes_namespace" "portfolio" { |  | ||||||
|   metadata { |  | ||||||
|     name = "my-portfolio" |  | ||||||
|   } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| resource "kubernetes_secret" "docker_secret" { |  | ||||||
|   metadata { |  | ||||||
|     name      = "docker-registry-credentials" |  | ||||||
|     namespace = "my-portfolio" |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   type = "kubernetes.io/dockerconfigjson" |  | ||||||
|  |  | ||||||
|   data = { |  | ||||||
|     ".dockerconfigjson" = jsonencode({ |  | ||||||
|       auths = { |  | ||||||
|         "${var.docker_registry_host}" = { |  | ||||||
|           username = var.docker_username |  | ||||||
|           password = var.docker_password |  | ||||||
|           auth     = base64encode("${var.docker_username}:${var.docker_password}") |  | ||||||
|         } |  | ||||||
|       } |  | ||||||
|     }) |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   depends_on = [kubernetes_namespace.portfolio] |  | ||||||
| } |  | ||||||
|  |  | ||||||
| locals { |  | ||||||
|   # Read and process the YAML file with placeholders |  | ||||||
|   manifest_content = templatefile("../../../kubernetes/my-portfolio/portfolioManifest.yaml", { |  | ||||||
|     PORTFOLIO_HOST  = var.portfolio_host |  | ||||||
|     DOCKER_REGISTRY_HOST = var.docker_registry_host |  | ||||||
|   }) |  | ||||||
|   # Split into individual documents |  | ||||||
|   manifest_documents = split("---", replace(local.manifest_content, "/\\n\\s*\\n/", "---")) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| resource "kubernetes_manifest" "portfolio_manifest" { |  | ||||||
|   for_each = { for i, doc in local.manifest_documents : i => doc if trimspace(doc) != "" } |  | ||||||
|  |  | ||||||
|   manifest = yamldecode(each.value) |  | ||||||
|  |  | ||||||
|   field_manager { |  | ||||||
|     force_conflicts = true |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   depends_on = [kubernetes_namespace.portfolio] |  | ||||||
| } |  | ||||||
| @ -1,46 +0,0 @@ | |||||||
| # variables for minio backend configuration |  | ||||||
| variable "minio_access_key" { |  | ||||||
|   description = "MinIO access key" |  | ||||||
|   type        = string |  | ||||||
| } |  | ||||||
|  |  | ||||||
| variable "minio_secret_key" { |  | ||||||
|   description = "MinIO secret key" |  | ||||||
|   type        = string |  | ||||||
| } |  | ||||||
|  |  | ||||||
| variable "minio_endpoint" { |  | ||||||
|   description = "MinIO API endpoint" |  | ||||||
|   type        = string |  | ||||||
| } |  | ||||||
|  |  | ||||||
| variable "portfolio_host" { |  | ||||||
|   description = "Host for the portfolio application" |  | ||||||
|   type        = string |  | ||||||
| } |  | ||||||
|  |  | ||||||
| variable "docker_registry_host" { |  | ||||||
|   description = "Host for the Docker registry" |  | ||||||
|   type        = string |  | ||||||
| } |  | ||||||
|  |  | ||||||
| variable "docker_username" { |  | ||||||
|   description = "Docker registry username" |  | ||||||
|   type        = string |  | ||||||
| } |  | ||||||
|  |  | ||||||
| variable "docker_password" { |  | ||||||
|   description = "Docker registry password" |  | ||||||
|   type        = string |  | ||||||
| } |  | ||||||
|  |  | ||||||
| variable "kubernetes_project_path" { |  | ||||||
|   description = "Path to the Kubernetes configuration files" |  | ||||||
|   type        = string |  | ||||||
|   default     = "../../../kubernetes" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| variable "vip_address" { |  | ||||||
|   description = "VIP address for kube-vip" |  | ||||||
|   type        = string |  | ||||||
| } |  | ||||||
| @ -914,3 +914,37 @@ kubectl create secret generic cloudflare-dns-token \ | |||||||
| kubectl apply -f cronjobs/update-dns/update_dns_config.yaml -n cronjobs | kubectl apply -f cronjobs/update-dns/update_dns_config.yaml -n cronjobs | ||||||
| kubectl apply -f cronjobs/update-dns/update_dns_cronjob.yaml -n cronjobs | kubectl apply -f cronjobs/update-dns/update_dns_cronjob.yaml -n cronjobs | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
|  | # Woodpecker CI | ||||||
|  |  | ||||||
|  | Woodpecker is a lightweight CI/CD server that is deployed in the k3s cluster. | ||||||
|  |  | ||||||
|  | Since Woodpecker uses Oauth2 for authentication, it requires a Gitea | ||||||
|  | application to be created for Woodpecker to use for authentication. | ||||||
|  |  | ||||||
|  | First, create a new application in Gitea for Woodpecker. The path to create the | ||||||
|  | application is: | ||||||
|  | `https://<your-gitea-domain>/user/settings/applications/` | ||||||
|  |  | ||||||
|  | The application should have the following settings: | ||||||
|  |  | ||||||
|  | - **Application Name**: Woodpecker | ||||||
|  | - **Redirect URI**: https://<your-woodpecker-domain>/authorize | ||||||
|  |  | ||||||
|  | ```bash | ||||||
|  | source .env | ||||||
|  | helm repo add woodpecker https://woodpecker-ci.org/ | ||||||
|  | helm repo update | ||||||
|  | helm upgrade --install woodpecker woodpecker/woodpecker \ | ||||||
|  |   -f woodpecker-ci/values.yaml \ | ||||||
|  |   --version 3.2.0 \ | ||||||
|  |   --namespace woodpecker \ | ||||||
|  |   --create-namespace \ | ||||||
|  |   --set server.ingress.hosts[0].host=$WOODPECKER_HOST \ | ||||||
|  |   --set server.ingress.tls[0].hosts[0]=$WOODPECKER_HOST \ | ||||||
|  |   --set server.env.WOODPECKER_HOST=https://$WOODPECKER_HOST \ | ||||||
|  |   --set server.env.WOODPECKER_GITEA_URL=https://$GITEA_HOST \ | ||||||
|  |   --set server.env.WOODPECKER_GITEA_CLIENT=$WOODPECKER_CLIENT_ID \ | ||||||
|  |   --set server.env.WOODPECKER_GITEA_SECRET=$WOODPECKER_CLIENT_SECRET \ | ||||||
|  |   --atomic | ||||||
|  | ``` | ||||||
|  | |||||||
							
								
								
									
										361
									
								
								kubernetes/woodpecker-ci/values.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										361
									
								
								kubernetes/woodpecker-ci/values.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,361 @@ | |||||||
|  | # Default values for woodpecker. | ||||||
|  | # This is a YAML-formatted file. | ||||||
|  | # Declare variables to be passed into your templates. | ||||||
|  |  | ||||||
|  | # -- Overrides the name of the chart | ||||||
|  | nameOverride: "" | ||||||
|  | # -- Overrides the full name of the chart | ||||||
|  | fullnameOverride: "" | ||||||
|  |  | ||||||
|  | agent: | ||||||
|  |   # -- Enable the agent component | ||||||
|  |   enabled: true | ||||||
|  |  | ||||||
|  |   # -- The number of replicas for the deployment | ||||||
|  |   replicaCount: 2 | ||||||
|  |  | ||||||
|  |   image: | ||||||
|  |     # -- The image registry | ||||||
|  |     registry: docker.io | ||||||
|  |     # -- The image repository | ||||||
|  |     repository: woodpeckerci/woodpecker-agent | ||||||
|  |     # -- The pull policy for the image | ||||||
|  |     pullPolicy: IfNotPresent | ||||||
|  |     # -- Overrides the image tag whose default is the chart appVersion. | ||||||
|  |     tag: "" | ||||||
|  |  | ||||||
|  |   env: | ||||||
|  |     # -- Add the environment variables for the agent component | ||||||
|  |     WOODPECKER_SERVER: "woodpecker-server.woodpecker.svc.cluster.local:9000" | ||||||
|  |     WOODPECKER_BACKEND: kubernetes | ||||||
|  |     WOODPECKER_BACKEND_K8S_NAMESPACE: woodpecker | ||||||
|  |     WOODPECKER_BACKEND_K8S_STORAGE_CLASS: "" | ||||||
|  |     WOODPECKER_BACKEND_K8S_VOLUME_SIZE: 10G | ||||||
|  |     WOODPECKER_BACKEND_K8S_STORAGE_RWX: true | ||||||
|  |     WOODPECKER_BACKEND_K8S_POD_LABELS: "" | ||||||
|  |     WOODPECKER_BACKEND_K8S_POD_ANNOTATIONS: "" | ||||||
|  |     WOODPECKER_CONNECT_RETRY_COUNT: "3" | ||||||
|  |  | ||||||
|  |   # -- Add extra secret that is contains environment variables | ||||||
|  |   extraSecretNamesForEnvFrom: [] | ||||||
|  |  | ||||||
|  |   persistence: | ||||||
|  |     # -- Enable the creation of the persistent volume | ||||||
|  |     enabled: true | ||||||
|  |     # -- Defines an existing claim to use | ||||||
|  |     existingClaim: | ||||||
|  |     # -- Defines the size of the persistent volume | ||||||
|  |     size: 1Gi | ||||||
|  |     # -- Defines the path where the volume should be mounted | ||||||
|  |     mountPath: "/etc/woodpecker" | ||||||
|  |     # -- Defines the storageClass of the persistent volume | ||||||
|  |     storageClass: "" | ||||||
|  |     # -- Defines the access mode of the persistent volume | ||||||
|  |     accessModes: | ||||||
|  |       - ReadWriteOnce | ||||||
|  |  | ||||||
|  |   # -- Additional volumes that can be mounted in containers | ||||||
|  |   extraVolumes: | ||||||
|  |     [] | ||||||
|  |     # - name: docker-config | ||||||
|  |     #   configMap: | ||||||
|  |     #     name: docker-config | ||||||
|  |     # - name: data-volume | ||||||
|  |     #   persistentVolumeClaim: | ||||||
|  |     #     claimName: example | ||||||
|  |  | ||||||
|  |   # -- Additional volumes that will be attached to the agent container | ||||||
|  |   extraVolumeMounts: | ||||||
|  |     [] | ||||||
|  |     # - name: ca-certs | ||||||
|  |     #   mountPath: /etc/ssl/certs/ca-certificates.crt | ||||||
|  |  | ||||||
|  |   # -- The image pull secrets | ||||||
|  |   imagePullSecrets: [] | ||||||
|  |   # -- Overrides the name of the chart of the agent component | ||||||
|  |   nameOverride: "" | ||||||
|  |   # -- Overrides the full name of the chart of the agent component | ||||||
|  |   fullnameOverride: "" | ||||||
|  |  | ||||||
|  |   serviceAccount: | ||||||
|  |     # -- Specifies whether a service account should be created (also see RBAC subsection) | ||||||
|  |     create: true | ||||||
|  |     # -- Annotations to add to the service account | ||||||
|  |     annotations: {} | ||||||
|  |     # -- The name of the service account to use. | ||||||
|  |     # If not set and create is true, a name is generated using the fullname template | ||||||
|  |     name: "" | ||||||
|  |     rbac: | ||||||
|  |       # -- If your cluster has RBAC enabled and you're using the Kubernetes agent- | ||||||
|  |       # backend you'll need this. (this is true for almost all production clusters) | ||||||
|  |       # only change this if you have a non CNCF compliant cluster, missing the RBAC endpoints | ||||||
|  |       # the Role and RoleBinding are only created if serviceAccount.create is also true | ||||||
|  |       create: true | ||||||
|  |       # Additional annotations and labels in role and roleBinding are only needed, if you | ||||||
|  |       # are using additional tooling to manage / verify roles or roleBindings (OPA, etc.) | ||||||
|  |       role: | ||||||
|  |         annotations: {} | ||||||
|  |         labels: {} | ||||||
|  |       roleBinding: | ||||||
|  |         annotations: {} | ||||||
|  |         labels: {} | ||||||
|  |  | ||||||
|  |   # -- Add pod annotations for the agent component | ||||||
|  |   podAnnotations: {} | ||||||
|  |  | ||||||
|  |   # -- Add pod security context | ||||||
|  |   podSecurityContext: | ||||||
|  |     {} | ||||||
|  |     # fsGroup: 2000 | ||||||
|  |  | ||||||
|  |   # -- Add security context | ||||||
|  |   securityContext: | ||||||
|  |     {} | ||||||
|  |     # capabilities: | ||||||
|  |     #   drop: | ||||||
|  |     #   - ALL | ||||||
|  |     # readOnlyRootFilesystem: true | ||||||
|  |     # runAsNonRoot: true | ||||||
|  |     # runAsUser: 1000 | ||||||
|  |  | ||||||
|  |   # -- Specifies the resources for the agent component | ||||||
|  |   resources: | ||||||
|  |     {} | ||||||
|  |     # We usually recommend not to specify default resources and to leave this as a conscious | ||||||
|  |     # choice for the user. This also increases chances charts run on environments with little | ||||||
|  |     # resources, such as Minikube. If you do want to specify resources, uncomment the following | ||||||
|  |     # lines, adjust them as necessary, and remove the curly braces after 'resources:'. | ||||||
|  |     # limits: | ||||||
|  |     #   cpu: 100m | ||||||
|  |     #   memory: 128Mi | ||||||
|  |     # requests: | ||||||
|  |     #   cpu: 100m | ||||||
|  |     #   memory: 128Mi | ||||||
|  |  | ||||||
|  |   # -- Specifies the labels of the nodes that the agent component must be running | ||||||
|  |   nodeSelector: {} | ||||||
|  |  | ||||||
|  |   # -- Specifies the tolerations | ||||||
|  |   tolerations: [] | ||||||
|  |  | ||||||
|  |   # -- Specifies the affinity | ||||||
|  |   affinity: {} | ||||||
|  |  | ||||||
|  |   # -- Overrides the default DNS configuration | ||||||
|  |   dnsConfig: {} | ||||||
|  |  | ||||||
|  |   # -- Using topology spread constraints, you can ensure that there is at least one agent | ||||||
|  |   # pod for each topology zone, e.g. one per arch for multi-architecture clusters | ||||||
|  |   # or one for each region for geographically distributed cloud-hosted clusters. | ||||||
|  |   # Ref: <https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/> | ||||||
|  |   topologySpreadConstraints: [] | ||||||
|  |   # - maxSkew: 1 | ||||||
|  |   #   topologyKey: "beta.kubernetes.io/arch" | ||||||
|  |   #   whenUnsatisfiable: "DoNotSchedule" | ||||||
|  |   #   labelSelector: | ||||||
|  |   #     matchLabels: | ||||||
|  |   #       "app.kubernetes.io/name": woodpecker-agent | ||||||
|  |  | ||||||
|  | server: | ||||||
|  |   # -- Enable the server component | ||||||
|  |   enabled: true | ||||||
|  |  | ||||||
|  |   statefulSet: | ||||||
|  |     # -- Add annotations to the StatefulSet | ||||||
|  |     annotations: {} | ||||||
|  |     # -- Add labels to the StatefulSet | ||||||
|  |     labels: {} | ||||||
|  |     # -- Defines the number of replicas | ||||||
|  |     replicaCount: 1 | ||||||
|  |     # -- The maximum number of revisions that will be maintained in the StatefulSet's revision history | ||||||
|  |     # Default in 10. | ||||||
|  |     revisionHistoryLimit: 5 | ||||||
|  |  | ||||||
|  |   updateStrategy: | ||||||
|  |     # -- Defines the update strategy of the StatefulSet | ||||||
|  |     type: RollingUpdate | ||||||
|  |  | ||||||
|  |   image: | ||||||
|  |     # -- The image registry | ||||||
|  |     registry: docker.io | ||||||
|  |     # -- The image repository | ||||||
|  |     repository: woodpeckerci/woodpecker-server | ||||||
|  |     # -- The image pull policy | ||||||
|  |     pullPolicy: IfNotPresent | ||||||
|  |     # -- Overrides the image tag whose default is the chart appVersion. | ||||||
|  |     tag: "" | ||||||
|  |  | ||||||
|  |   # -- Add environment variables for the server component | ||||||
|  |   env: | ||||||
|  |     WOODPECKER_ADMIN: "taqi" | ||||||
|  |     WOODPECKER_HOST: "placeholder.woodpecker.svc.cluster.local:9000" | ||||||
|  |     WOODPECKER_GITEA: "true" | ||||||
|  |     WOODPECKER_GITEA_URL: "${GITEA_HOST}" | ||||||
|  |     WOODPECKER_GITEA_CLIENT: "${WOODPECKER_CLIENT_ID}" | ||||||
|  |     WOODPECKER_GITEA_SECRET: "${WOODPECKER_CLIENT_SECRET}" | ||||||
|  |  | ||||||
|  |     # WOODPECKER_GITHUB: "true" | ||||||
|  |  | ||||||
|  |   # -- Add extra environment variables from the secrets list | ||||||
|  |   extraSecretNamesForEnvFrom: [] | ||||||
|  |  | ||||||
|  |   # whether to create the default WOODPECKER_AGENT_SECRET in woodpecker-default-agent-secret | ||||||
|  |   createAgentSecret: true | ||||||
|  |   # -- Create a generic secret to store things in, e.g. env values | ||||||
|  |   secrets: [] | ||||||
|  |   # - name: secret | ||||||
|  |   #   data: | ||||||
|  |   #     key: value | ||||||
|  |  | ||||||
|  |   # -- Additional volumes that can be mounted in containers | ||||||
|  |   extraVolumes: | ||||||
|  |     [] | ||||||
|  |     # - name: docker-config | ||||||
|  |     #   configMap: | ||||||
|  |     #     name: docker-config | ||||||
|  |     # - name: data-volume | ||||||
|  |     #   persistentVolumeClaim: | ||||||
|  |     #     claimName: example | ||||||
|  |  | ||||||
|  |   # -- Additional volumes that will be attached to the agent container | ||||||
|  |   extraVolumeMounts: | ||||||
|  |     [] | ||||||
|  |     # - name: ca-certs | ||||||
|  |     #   mountPath: /etc/ssl/certs/ca-certificates.crt | ||||||
|  |  | ||||||
|  |   # -- Add additional init containers to the pod (evaluated as a template) | ||||||
|  |   initContainers: [] | ||||||
|  |  | ||||||
|  |   persistentVolume: | ||||||
|  |     # -- Enable the creation of the persistent volume | ||||||
|  |     enabled: true | ||||||
|  |     # -- Defines the size of the persistent volume | ||||||
|  |     size: 10Gi | ||||||
|  |     # -- Defines the path where the volume should be mounted | ||||||
|  |     mountPath: "/var/lib/woodpecker" | ||||||
|  |     # -- Defines the storageClass of the persistent volume | ||||||
|  |     storageClass: "" | ||||||
|  |  | ||||||
|  |   # -- The image pull secrets | ||||||
|  |   imagePullSecrets: [] | ||||||
|  |   # -- Overrides the name of the helm chart of the server component | ||||||
|  |   nameOverride: "" | ||||||
|  |   # -- Overrides the full name of the helm chart of the server component | ||||||
|  |   fullnameOverride: "" | ||||||
|  |  | ||||||
|  |   serviceAccount: | ||||||
|  |     # -- Specifies whether a service account should be created | ||||||
|  |     create: false | ||||||
|  |     # -- Annotations to add to the service account | ||||||
|  |     annotations: {} | ||||||
|  |     # -- The name of the service account to use. | ||||||
|  |     # If not set and create is true, a name is generated using the fullname template | ||||||
|  |     name: "" | ||||||
|  |  | ||||||
|  |   # -- Add pod annotations | ||||||
|  |   podAnnotations: | ||||||
|  |     {} | ||||||
|  |     # prometheus.io/scrape: "true" | ||||||
|  |  | ||||||
|  |   # -- Add pod security context | ||||||
|  |   podSecurityContext: | ||||||
|  |     {} | ||||||
|  |     # fsGroup: 2000 | ||||||
|  |  | ||||||
|  |   # -- Add security context | ||||||
|  |   securityContext: | ||||||
|  |     {} | ||||||
|  |     # capabilities: | ||||||
|  |     #   drop: | ||||||
|  |     #   - ALL | ||||||
|  |     # readOnlyRootFilesystem: true | ||||||
|  |     # runAsNonRoot: true | ||||||
|  |     # runAsUser: 1000 | ||||||
|  |  | ||||||
|  |   service: | ||||||
|  |     # -- The type of the service | ||||||
|  |     type: ClusterIP | ||||||
|  |     # -- The port of the service | ||||||
|  |     port: &servicePort 80 | ||||||
|  |     # -- The cluster IP of the service (optional) | ||||||
|  |     clusterIP: | ||||||
|  |     # -- The loadbalancer IP of the service (optional) | ||||||
|  |     loadBalancerIP: | ||||||
|  |  | ||||||
|  |   ingress: | ||||||
|  |     # -- Enable the ingress for the server component | ||||||
|  |     enabled: true | ||||||
|  |     # -- Add annotations to the ingress | ||||||
|  |     annotations: | ||||||
|  |       cert-manager.io/cluster-issuer: "acme-issuer" | ||||||
|  |     # kubernetes.io/ingress.class: nginx | ||||||
|  |     # kubernetes.io/tls-acme: "true" | ||||||
|  |  | ||||||
|  |     # -- Defines which ingress controller will implement the resource | ||||||
|  |     ingressClassName: "nginx" | ||||||
|  |  | ||||||
|  |     hosts: | ||||||
|  |       - host: example.com | ||||||
|  |         paths: | ||||||
|  |           - path: / | ||||||
|  |             backend: | ||||||
|  |               serviceName: chart-example.local | ||||||
|  |               servicePort: *servicePort | ||||||
|  |     tls: | ||||||
|  |       - hosts: | ||||||
|  |           - example.com | ||||||
|  |         secretName: woodpecker-tls | ||||||
|  |         # -- Defines the secret that contains the TLS certificate and key | ||||||
|  |         # secretName: chart-example-tls | ||||||
|  |     #  - secretName: chart-example-tls | ||||||
|  |     #    hosts: | ||||||
|  |     #      - chart-example.local | ||||||
|  |  | ||||||
|  |   # -- Specifies the ressources for the server component | ||||||
|  |   resources: | ||||||
|  |     {} | ||||||
|  |     # We usually recommend not to specify default resources and to leave this as a conscious | ||||||
|  |     # choice for the user. This also increases chances charts run on environments with little | ||||||
|  |     # resources, such as Minikube. If you do want to specify resources, uncomment the following | ||||||
|  |     # lines, adjust them as necessary, and remove the curly braces after 'resources:'. | ||||||
|  |     # limits: | ||||||
|  |     #   cpu: 100m | ||||||
|  |     #   memory: 128Mi | ||||||
|  |     # requests: | ||||||
|  |     #   cpu: 100m | ||||||
|  |     #   memory: 128Mi | ||||||
|  |  | ||||||
|  |   # -- Defines the labels of the node where the server component must be running | ||||||
|  |   nodeSelector: {} | ||||||
|  |  | ||||||
|  |   # -- Add tolerations rules | ||||||
|  |   tolerations: [] | ||||||
|  |  | ||||||
|  |   # -- Add affinity | ||||||
|  |   affinity: {} | ||||||
|  |  | ||||||
|  |   # -- Overrides the default DNS configuration | ||||||
|  |   dnsConfig: {} | ||||||
|  |  | ||||||
|  |   # -- Configure probe options for container health checking | ||||||
|  |   probes: | ||||||
|  |     # -- Configure liveness probe options | ||||||
|  |     liveness: | ||||||
|  |       # -- Number of seconds after which the probe times out (default: 10) | ||||||
|  |       timeoutSeconds: 10 | ||||||
|  |       # -- How often (in seconds) to perform the probe (default: 10) | ||||||
|  |       periodSeconds: 10 | ||||||
|  |       # -- Minimum consecutive successes for the probe to be considered successful after having failed (default: 1) | ||||||
|  |       successThreshold: 1 | ||||||
|  |       # -- When a probe fails, Kubernetes will try failureThreshold times before giving up (default: 3) | ||||||
|  |       failureThreshold: 3 | ||||||
|  |     # -- Configure readiness probe options | ||||||
|  |     readiness: | ||||||
|  |       # -- Number of seconds after which the probe times out (default: 10) | ||||||
|  |       timeoutSeconds: 10 | ||||||
|  |       # -- How often (in seconds) to perform the probe (default: 10) | ||||||
|  |       periodSeconds: 10 | ||||||
|  |       # -- Minimum consecutive successes for the probe to be considered successful after having failed (default: 1) | ||||||
|  |       successThreshold: 1 | ||||||
|  |       # -- When a probe fails, Kubernetes will try failureThreshold times before giving up (default: 3) | ||||||
|  |       failureThreshold: 3 | ||||||
		Reference in New Issue
	
	Block a user