├── .gitbook └── assets │ ├── 00-waterfallModel.jpeg │ ├── 01.jpg │ ├── 02-agile.webp │ ├── 03-sprint.webp │ ├── 04-agilecons.webp │ ├── 05-agile-devops.png │ ├── 06-PipelineInDevOps.png │ ├── 07-DevOpsPipeline-2.jpg │ ├── 08-DevopsTools.png │ ├── 09-operating-system.png │ ├── 10-cncfLandscape.png │ ├── 11-scriptingLanguage.png │ ├── 12-VersionControl.png │ ├── 13-containers-vs-virtual-machines.jpg │ ├── 14-container_Runtime.png │ ├── 15-OCI-standard.png │ ├── 16-containerOrchestration.png │ ├── 17-monitoringTools.jpg │ ├── 18-IAC.png │ ├── 19-ci-cd.png │ ├── 20-cicdtools.png │ ├── 20.0-linux.jpg │ ├── 21-debian.png │ ├── 22-Red_Hat.png │ ├── 23-Vimlogo.svg │ ├── 24-shell.png │ ├── 25-regex-example.png │ ├── 26-user_relation.jpg │ ├── 27-partition.jpeg │ ├── 28-Disk-Usage-Analyzer.webp │ ├── 29-subdirectorymount.png │ ├── 30-NFS.jpg │ ├── 31-lvm-diagram-linux-training-academy.png │ ├── 32-permissions.jpg │ ├── 33-hard-links-vs-soft-links.png │ ├── 34-mariadb.png │ ├── 35-CroncheatsheetforLinux.jpg │ ├── 36-ssh.jpeg │ ├── 37-iptables.png │ ├── 38-git.png │ ├── 39-gitflow.png │ ├── 40-netfilter-packet-flow.svg │ ├── 41-gitflow.webp │ ├── 42-git_remote.png │ ├── 43-gitremote.jpg │ ├── 44-tag.jpg │ ├── 45-nginx.png │ ├── 46-nginx-proxy.webp │ ├── 47-bash-script.webp │ ├── 48-gce-all-active-load-balancing_topology.png │ ├── 49-what-is-docker.png │ ├── 50-containers-vs-virtual-machines.jpg │ ├── 51-docker-engine.jpg │ ├── 52-docker-architecture.png │ ├── 53-docker-container.png │ ├── 54-WhatAreDockerImageLayers.png │ ├── 55-layersIndokerimage.png │ ├── 56-REST-API.-diagram.png │ ├── 56-install-docker-engine-ubuntu-22-04-banner.jpg │ ├── 57-httprequest.png │ ├── 58-HTTP_Status_Codes.webp │ ├── 59-docker-container.png │ ├── 60-create-an-ansible-playbook.png │ ├── 61-inventory.png │ ├── 62-playbook.png │ ├── 63-roles.png │ ├── 64-Steps-to-install-Ansible-on-Ubuntu-22.04-LTS.png │ ├── 65-mariadb-master-slave.jpg │ ├── 66-docker-volume.png │ ├── 67-docker-network.png │ ├── 68-swarm.png │ ├── 69-swarm-diagram.webp │ ├── 70-service-lifecycle.webp │ ├── 71-docker-to-swarm-1.png │ ├── 72-Kubernetes_New.png │ ├── 72-swarm_service.jpg │ ├── 73-etc-hosts.jpg │ ├── 74-gluster-peer-status.jpg │ ├── 75-gluster-pool-list.jpg │ ├── 76-gluster-test.jpg │ ├── 77-gluster-volume.jpg │ ├── 78-GlusterFS-status.jpg │ ├── 79-mounted-lvms.jpg │ ├── 80-orange-ant-glusterfs.jpg │ ├── 81-linux-namespace1.png │ ├── 82-Kubernetes-architecture.png │ ├── 83-pod.webp │ ├── 84-pod.png │ ├── 85-prometheus-architecture.webp │ ├── ansible-full.webp │ ├── docker-full.png │ ├── docker.gif │ ├── http-method.gif │ ├── sql_query.gif │ └── world_x.sql ├── 01-linux ├── lpic │ ├── 00-Advantages_and_disadvantages_of_Linux_Operating_System.md │ ├── 01-Debian_package_management.md │ ├── 02-RPM_and_YUM_package_management.md │ ├── 03-File_editing_operations_using_vi.md │ ├── 04-Work_on_the_command_line.md │ ├── 05-Process_text_streams_using_filters.md │ ├── 06-Perform_basic_file_management.md │ ├── 07-Use_streams_pipes_and_redirects.md │ ├── 08-monitor_and_kill_processes.md │ ├── 09-Search_text_files_using_regular_expressions.md │ ├── 10-regular_expression.md │ ├── 11-User_group.md │ ├── 12-Create_partitions_and_filesystems.md │ ├── 13-Maintain_the_integrity_of_filesystems.md │ ├── 14-Control_mounting_and_unmounting_of_filesystems.md │ ├── 15-nfs_server_configuration_ubuntu.md │ ├── 16-logical_volume_manager.md │ ├── 17-Manage_file_permissions_and_ownership.md │ ├── 18-hard_and_symbolic_links.md │ ├── 19-SQL_data_management.md │ ├── 20-Automate_system_administration_tasks.md │ ├── 21-Securing_data_with_encryption.md │ ├── 22-iptables.md │ ├── 23.nginx.md │ ├── 24-Basic_network_configuration.md │ ├── 25-Glusterfs.md │ ├── tmux_cheatsheet.pdf │ └── vim-shortcuts.md └── scripts │ ├── 00-echo_basic.sh │ ├── 01-read_log.sh │ ├── 02-if.sh │ ├── 03-for.sh │ ├── 04-case.sh │ ├── 05-while.sh │ ├── 06-until.sh │ ├── 07-exit_status_built-in_variable.sh │ ├── README.md │ ├── generate_random_number.sh │ ├── script1.sh │ ├── script2.sh │ └── script3.sh ├── 02-git ├── 00-What_is_git.md ├── 01-Git_init.md ├── 03-Git_command.md ├── 04-Git_remote.md ├── 05-working_with_git_remotes.md └── 06-Tag_and_version.md ├── 03-docker ├── 00-What_is_docker.md ├── 01-docker_engine.md ├── 01.1-RESTapi.md ├── 02-Install_docker.md ├── 03-docker_container.md ├── 04-docker_images.md ├── 05-docker_file.md ├── 06-push_to_dockerhub.md ├── 07-docker_volume.md ├── 08-docker_network.md ├── 09-limit_resource.md ├── 10-docker-compose │ ├── mariadb-master-slave.md │ ├── mariadb.yml │ ├── postgresql.yml │ └── redis.yml ├── gitea-postgres │ ├── README.md │ ├── compose.yaml │ └── output.jpg ├── nginx-nodejs-redis │ ├── README.md │ ├── compose.yaml │ ├── nginx │ │ ├── Dockerfile │ │ └── nginx.conf │ └── web │ │ ├── .gitignore │ │ ├── Dockerfile │ │ ├── package-lock.json │ │ ├── package.json │ │ └── server.js └── readme.md ├── 05-swarm ├── 01-what_is_swarm.md ├── 02-Install_swarm.md ├── 03-docker_swarm_service.md └── 04-swarm_stack.md ├── 06-ansible ├── 00-What_is_ansible.md ├── 01-Install-ansible.md ├── 02-Inventory_files.md ├── 03-ansible_ad_hoc.md ├── 04-Playbook.md ├── 05-Ansible-vault.md ├── 06-Ansible_template.md ├── 07-Roles.md ├── ansible │ ├── inventory │ │ ├── group_vars │ │ │ └── all.yaml │ │ └── hosts.ini │ ├── main.yaml │ ├── readme.md │ └── roles │ │ └── preinstall │ │ ├── .travis.yml │ │ ├── README.md │ │ ├── defaults │ │ └── main.yml │ │ ├── files │ │ ├── issue.net │ │ ├── login-notify.sh │ │ ├── motd │ │ └── telegram-send │ │ ├── handlers │ │ └── main.yml │ │ ├── meta │ │ └── main.yml │ │ ├── tasks │ │ ├── basic.yaml │ │ ├── main.yml │ │ └── telegram-notify.yaml │ │ ├── templates │ │ ├── resolv.conf.j2 │ │ └── sample.conf.j2 │ │ ├── tests │ │ ├── inventory │ │ └── test.yml │ │ └── vars │ │ └── main.yml └── readme.md ├── 07-k8s ├── 00-What_is_kubernetes.md ├── 01-Namespace.md ├── 02-Kubernetes_functionalities.md ├── 03-Kubernetes_architecture.md ├── 04-pod.md ├── 05-install_kubernetes.md ├── cheatsheet.md ├── helm │ ├── 01-what_is_helm.md │ ├── 02-Install_helm.md │ ├── 03-install_k8s_dashboard.md │ └── ingress-nginx │ │ ├── .helmignore │ │ ├── Chart.yaml │ │ ├── OWNERS │ │ ├── README.md │ │ ├── README.md.gotmpl │ │ ├── changelog │ │ ├── helm-chart-2.10.0.md │ │ ├── helm-chart-2.11.0.md │ │ ├── helm-chart-2.11.1.md │ │ ├── helm-chart-2.11.2.md │ │ ├── helm-chart-2.11.3.md │ │ ├── helm-chart-2.12.0.md │ │ ├── helm-chart-2.12.1.md │ │ ├── helm-chart-2.13.0.md │ │ ├── helm-chart-2.14.0.md │ │ ├── helm-chart-2.15.0.md │ │ ├── helm-chart-2.16.0.md │ │ ├── helm-chart-2.9.0.md │ │ ├── helm-chart-2.9.1.md │ │ ├── helm-chart-3.0.0.md │ │ ├── helm-chart-3.10.0.md │ │ ├── helm-chart-3.10.1.md │ │ ├── helm-chart-3.11.0.md │ │ ├── helm-chart-3.11.1.md │ │ ├── helm-chart-3.12.0.md │ │ ├── helm-chart-3.13.0.md │ │ ├── helm-chart-3.14.0.md │ │ ├── helm-chart-3.15.0.md │ │ ├── helm-chart-3.15.1.md │ │ ├── helm-chart-3.16.0.md │ │ ├── helm-chart-3.16.1.md │ │ ├── helm-chart-3.17.0.md │ │ ├── helm-chart-3.18.0.md │ │ ├── helm-chart-3.19.0.md │ │ ├── helm-chart-3.20.0.md │ │ ├── helm-chart-3.20.1.md │ │ ├── helm-chart-3.21.0.md │ │ ├── helm-chart-3.22.0.md │ │ ├── helm-chart-3.23.0.md │ │ ├── helm-chart-3.24.0.md │ │ ├── helm-chart-3.25.0.md │ │ ├── helm-chart-3.26.0.md │ │ ├── helm-chart-3.27.0.md │ │ ├── helm-chart-3.28.0.md │ │ ├── helm-chart-3.29.0.md │ │ ├── helm-chart-3.3.0.md │ │ ├── helm-chart-3.3.1.md │ │ ├── helm-chart-3.30.0.md │ │ ├── helm-chart-3.31.0.md │ │ ├── helm-chart-3.32.0.md │ │ ├── helm-chart-3.33.0.md │ │ ├── helm-chart-3.34.0.md │ │ ├── helm-chart-3.4.0.md │ │ ├── helm-chart-3.5.0.md │ │ ├── helm-chart-3.5.1.md │ │ ├── helm-chart-3.6.0.md │ │ ├── helm-chart-3.7.0.md │ │ ├── helm-chart-3.7.1.md │ │ ├── helm-chart-3.8.0.md │ │ ├── helm-chart-3.9.0.md │ │ ├── helm-chart-4.0.1.md │ │ ├── helm-chart-4.0.10.md │ │ ├── helm-chart-4.0.11.md │ │ ├── helm-chart-4.0.12.md │ │ ├── helm-chart-4.0.13.md │ │ ├── helm-chart-4.0.14.md │ │ ├── helm-chart-4.0.15.md │ │ ├── helm-chart-4.0.18.md │ │ ├── helm-chart-4.0.2.md │ │ ├── helm-chart-4.0.3.md │ │ ├── helm-chart-4.0.5.md │ │ ├── helm-chart-4.0.6.md │ │ ├── helm-chart-4.0.7.md │ │ ├── helm-chart-4.0.9.md │ │ ├── helm-chart-4.1.0.md │ │ ├── helm-chart-4.1.2.md │ │ ├── helm-chart-4.10.0.md │ │ ├── helm-chart-4.10.1.md │ │ ├── helm-chart-4.2.0.md │ │ ├── helm-chart-4.2.1.md │ │ ├── helm-chart-4.3.0.md │ │ ├── helm-chart-4.4.0.md │ │ ├── helm-chart-4.5.2.md │ │ ├── helm-chart-4.6.0.md │ │ ├── helm-chart-4.6.1.md │ │ ├── helm-chart-4.7.0.md │ │ ├── helm-chart-4.7.1.md │ │ ├── helm-chart-4.7.2.md │ │ ├── helm-chart-4.8.0-beta.0.md │ │ ├── helm-chart-4.8.0.md │ │ ├── helm-chart-4.8.1.md │ │ ├── helm-chart-4.8.2.md │ │ ├── helm-chart-4.8.3.md │ │ ├── helm-chart-4.9.0.md │ │ ├── helm-chart-4.9.1.md │ │ └── helm-chart.md.gotmpl │ │ ├── ci │ │ ├── controller-admission-tls-cert-manager-values.yaml │ │ ├── controller-custom-ingressclass-flags.yaml │ │ ├── daemonset-customconfig-values.yaml │ │ ├── daemonset-customnodeport-values.yaml │ │ ├── daemonset-extra-modules.yaml │ │ ├── daemonset-headers-values.yaml │ │ ├── daemonset-internal-lb-values.yaml │ │ ├── daemonset-nodeport-values.yaml │ │ ├── daemonset-podannotations-values.yaml │ │ ├── daemonset-tcp-udp-configMapNamespace-values.yaml │ │ ├── daemonset-tcp-udp-portNamePrefix-values.yaml │ │ ├── daemonset-tcp-udp-values.yaml │ │ ├── daemonset-tcp-values.yaml │ │ ├── deamonset-default-values.yaml │ │ ├── deamonset-metrics-values.yaml │ │ ├── deamonset-psp-values.yaml │ │ ├── deamonset-webhook-and-psp-values.yaml │ │ ├── deamonset-webhook-values.yaml │ │ ├── deployment-autoscaling-behavior-values.yaml │ │ ├── deployment-autoscaling-values.yaml │ │ ├── deployment-customconfig-values.yaml │ │ ├── deployment-customnodeport-values.yaml │ │ ├── deployment-default-values.yaml │ │ ├── deployment-extra-modules-default-container-sec-context.yaml │ │ ├── deployment-extra-modules-specific-container-sec-context.yaml │ │ ├── deployment-extra-modules.yaml │ │ ├── deployment-headers-values.yaml │ │ ├── deployment-internal-lb-values.yaml │ │ ├── deployment-metrics-values.yaml │ │ ├── deployment-nodeport-values.yaml │ │ ├── deployment-opentelemetry-customregistry-values.yaml │ │ ├── deployment-podannotations-values.yaml │ │ ├── deployment-psp-values.yaml │ │ ├── deployment-tcp-udp-configMapNamespace-values.yaml │ │ ├── deployment-tcp-udp-portNamePrefix-values.yaml │ │ ├── deployment-tcp-udp-values.yaml │ │ ├── deployment-tcp-values.yaml │ │ ├── deployment-webhook-and-psp-values.yaml │ │ ├── deployment-webhook-extraEnvs-values.yaml │ │ ├── deployment-webhook-resources-values.yaml │ │ └── deployment-webhook-values.yaml │ │ ├── templates │ │ ├── NOTES.txt │ │ ├── _helpers.tpl │ │ ├── _params.tpl │ │ ├── admission-webhooks │ │ │ ├── cert-manager.yaml │ │ │ ├── job-patch │ │ │ │ ├── clusterrole.yaml │ │ │ │ ├── clusterrolebinding.yaml │ │ │ │ ├── job-createSecret.yaml │ │ │ │ ├── job-patchWebhook.yaml │ │ │ │ ├── networkpolicy.yaml │ │ │ │ ├── psp.yaml │ │ │ │ ├── role.yaml │ │ │ │ ├── rolebinding.yaml │ │ │ │ └── serviceaccount.yaml │ │ │ └── validating-webhook.yaml │ │ ├── clusterrole.yaml │ │ ├── clusterrolebinding.yaml │ │ ├── controller-configmap-addheaders.yaml │ │ ├── controller-configmap-proxyheaders.yaml │ │ ├── controller-configmap-tcp.yaml │ │ ├── controller-configmap-udp.yaml │ │ ├── controller-configmap.yaml │ │ ├── controller-daemonset.yaml │ │ ├── controller-deployment.yaml │ │ ├── controller-hpa.yaml │ │ ├── controller-ingressclass.yaml │ │ ├── controller-keda.yaml │ │ ├── controller-networkpolicy.yaml │ │ ├── controller-poddisruptionbudget.yaml │ │ ├── controller-prometheusrules.yaml │ │ ├── controller-psp.yaml │ │ ├── controller-role.yaml │ │ ├── controller-rolebinding.yaml │ │ ├── controller-secret.yaml │ │ ├── controller-service-internal.yaml │ │ ├── controller-service-metrics.yaml │ │ ├── controller-service-webhook.yaml │ │ ├── controller-service.yaml │ │ ├── controller-serviceaccount.yaml │ │ ├── controller-servicemonitor.yaml │ │ ├── default-backend-deployment.yaml │ │ ├── default-backend-extra-configmaps.yaml │ │ ├── default-backend-hpa.yaml │ │ ├── default-backend-networkpolicy.yaml │ │ ├── default-backend-poddisruptionbudget.yaml │ │ ├── default-backend-psp.yaml │ │ ├── default-backend-role.yaml │ │ ├── default-backend-rolebinding.yaml │ │ ├── default-backend-service.yaml │ │ └── default-backend-serviceaccount.yaml │ │ ├── tests │ │ ├── controller-configmap-addheaders_test.yaml │ │ ├── controller-configmap-proxyheaders_test.yaml │ │ ├── controller-configmap_test.yaml │ │ ├── controller-daemonset_test.yaml │ │ ├── controller-deployment_test.yaml │ │ ├── controller-hpa_test.yaml │ │ ├── controller-ingressclass_test.yaml │ │ ├── controller-keda_test.yaml │ │ ├── controller-networkpolicy_test.yaml │ │ ├── controller-poddisruptionbudget_test.yaml │ │ ├── controller-service-internal_test.yaml │ │ ├── controller-service-metrics_test.yaml │ │ ├── controller-service_test.yaml │ │ ├── default-backend-deployment_test.yaml │ │ ├── default-backend-extra-configmaps_test.yaml │ │ └── default-backend-service_test.yaml │ │ ├── values.yaml │ │ └── values.yaml.org ├── image_dowloader.sh ├── k8s-1-31-4-image-lists └── workload │ ├── 00-kubectl.md │ ├── 01-pod.md │ ├── 01-pod.yaml │ ├── 02-replicaset.md │ ├── 02-replicaset.yaml │ ├── 03-deployment.md │ ├── 03-deployment.yaml │ ├── 04-daemonset.md │ ├── 04-daemonset.yaml │ ├── 05-statefullset.md │ ├── 05-statefulset.yaml │ ├── 06-job.md │ ├── 06-job.yaml │ ├── 07-cronjob.md │ ├── 07-cronjob.yaml │ ├── 08-service.md │ ├── 08-service.yml │ ├── 09-node.yml │ ├── 10-volume.md │ ├── 10-volume.yml │ ├── 11-configmap.md │ ├── 11-configmap.yaml │ ├── 12-resourcequota.md │ ├── 12-resourcequota.yaml │ ├── 13-probe.md │ └── 14-full.yml ├── 08-cicd ├── 00-what_is_gitlabCICD.md ├── 01-Create_pipeline.md ├── project-01 │ ├── .gitlab-ci.yml │ ├── Dockerfile │ ├── ansible │ │ ├── deploy.yml │ │ ├── inventory │ │ │ ├── group_vars │ │ │ │ └── all.yml │ │ │ ├── servers-dev.ini │ │ │ └── servers-prod.ini │ │ └── roles │ │ │ ├── deploy-dev │ │ │ └── tasks │ │ │ │ └── main.yml │ │ │ └── deploy-prod │ │ │ └── tasks │ │ │ └── main.yml │ └── build_script.sh ├── project-02 │ ├── .gitlab-ci.yml │ ├── Dockerfile │ ├── Readme.md │ ├── docker-compose.yml │ └── loop_script.sh └── project-03 │ ├── .gitlab-ci.yml │ ├── Dockerfile │ ├── README.md │ ├── deployment │ ├── dev │ │ └── deploy.yml │ └── prod │ │ └── deploy.yml │ └── index.html ├── 09-monitoring ├── 01-What_is_monitoring.md ├── 02-Wath_is_prometheus.md ├── 03-Pull_based_vs_push_based.md ├── 04-Prometheus_architecture.md ├── 05-cadvisor.md ├── 05-prometheus_config.yml ├── 06-push-gateway.md ├── 07-nexus.md ├── docker-compose.yml └── nginx_status_code.sh ├── Introduction.md └── README.md /.gitbook/assets/00-waterfallModel.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/00-waterfallModel.jpeg -------------------------------------------------------------------------------- /.gitbook/assets/01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/01.jpg -------------------------------------------------------------------------------- /.gitbook/assets/02-agile.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/02-agile.webp -------------------------------------------------------------------------------- /.gitbook/assets/03-sprint.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/03-sprint.webp -------------------------------------------------------------------------------- /.gitbook/assets/04-agilecons.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/04-agilecons.webp -------------------------------------------------------------------------------- /.gitbook/assets/05-agile-devops.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/05-agile-devops.png -------------------------------------------------------------------------------- /.gitbook/assets/06-PipelineInDevOps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/06-PipelineInDevOps.png -------------------------------------------------------------------------------- /.gitbook/assets/07-DevOpsPipeline-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/07-DevOpsPipeline-2.jpg -------------------------------------------------------------------------------- /.gitbook/assets/08-DevopsTools.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/08-DevopsTools.png -------------------------------------------------------------------------------- /.gitbook/assets/09-operating-system.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/09-operating-system.png -------------------------------------------------------------------------------- /.gitbook/assets/10-cncfLandscape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/10-cncfLandscape.png -------------------------------------------------------------------------------- /.gitbook/assets/11-scriptingLanguage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/11-scriptingLanguage.png -------------------------------------------------------------------------------- /.gitbook/assets/12-VersionControl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/12-VersionControl.png -------------------------------------------------------------------------------- /.gitbook/assets/13-containers-vs-virtual-machines.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/13-containers-vs-virtual-machines.jpg -------------------------------------------------------------------------------- /.gitbook/assets/14-container_Runtime.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/14-container_Runtime.png -------------------------------------------------------------------------------- /.gitbook/assets/15-OCI-standard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/15-OCI-standard.png -------------------------------------------------------------------------------- /.gitbook/assets/16-containerOrchestration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/16-containerOrchestration.png -------------------------------------------------------------------------------- /.gitbook/assets/17-monitoringTools.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/17-monitoringTools.jpg -------------------------------------------------------------------------------- /.gitbook/assets/18-IAC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/18-IAC.png -------------------------------------------------------------------------------- /.gitbook/assets/19-ci-cd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/19-ci-cd.png -------------------------------------------------------------------------------- /.gitbook/assets/20-cicdtools.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/20-cicdtools.png -------------------------------------------------------------------------------- /.gitbook/assets/20.0-linux.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/20.0-linux.jpg -------------------------------------------------------------------------------- /.gitbook/assets/21-debian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/21-debian.png -------------------------------------------------------------------------------- /.gitbook/assets/22-Red_Hat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/22-Red_Hat.png -------------------------------------------------------------------------------- /.gitbook/assets/24-shell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/24-shell.png -------------------------------------------------------------------------------- /.gitbook/assets/25-regex-example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/25-regex-example.png -------------------------------------------------------------------------------- /.gitbook/assets/26-user_relation.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/26-user_relation.jpg -------------------------------------------------------------------------------- /.gitbook/assets/27-partition.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/27-partition.jpeg -------------------------------------------------------------------------------- /.gitbook/assets/28-Disk-Usage-Analyzer.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/28-Disk-Usage-Analyzer.webp -------------------------------------------------------------------------------- /.gitbook/assets/29-subdirectorymount.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/29-subdirectorymount.png -------------------------------------------------------------------------------- /.gitbook/assets/30-NFS.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/30-NFS.jpg -------------------------------------------------------------------------------- /.gitbook/assets/31-lvm-diagram-linux-training-academy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/31-lvm-diagram-linux-training-academy.png -------------------------------------------------------------------------------- /.gitbook/assets/32-permissions.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/32-permissions.jpg -------------------------------------------------------------------------------- /.gitbook/assets/33-hard-links-vs-soft-links.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/33-hard-links-vs-soft-links.png -------------------------------------------------------------------------------- /.gitbook/assets/34-mariadb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/34-mariadb.png -------------------------------------------------------------------------------- /.gitbook/assets/35-CroncheatsheetforLinux.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/35-CroncheatsheetforLinux.jpg -------------------------------------------------------------------------------- /.gitbook/assets/36-ssh.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/36-ssh.jpeg -------------------------------------------------------------------------------- /.gitbook/assets/37-iptables.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/37-iptables.png -------------------------------------------------------------------------------- /.gitbook/assets/38-git.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/38-git.png -------------------------------------------------------------------------------- /.gitbook/assets/39-gitflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/39-gitflow.png -------------------------------------------------------------------------------- /.gitbook/assets/41-gitflow.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/41-gitflow.webp -------------------------------------------------------------------------------- /.gitbook/assets/42-git_remote.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/42-git_remote.png -------------------------------------------------------------------------------- /.gitbook/assets/43-gitremote.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/43-gitremote.jpg -------------------------------------------------------------------------------- /.gitbook/assets/44-tag.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/44-tag.jpg -------------------------------------------------------------------------------- /.gitbook/assets/45-nginx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/45-nginx.png -------------------------------------------------------------------------------- /.gitbook/assets/46-nginx-proxy.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/46-nginx-proxy.webp -------------------------------------------------------------------------------- /.gitbook/assets/47-bash-script.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/47-bash-script.webp -------------------------------------------------------------------------------- /.gitbook/assets/48-gce-all-active-load-balancing_topology.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/48-gce-all-active-load-balancing_topology.png -------------------------------------------------------------------------------- /.gitbook/assets/49-what-is-docker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/49-what-is-docker.png -------------------------------------------------------------------------------- /.gitbook/assets/50-containers-vs-virtual-machines.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/50-containers-vs-virtual-machines.jpg -------------------------------------------------------------------------------- /.gitbook/assets/51-docker-engine.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/51-docker-engine.jpg -------------------------------------------------------------------------------- /.gitbook/assets/52-docker-architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/52-docker-architecture.png -------------------------------------------------------------------------------- /.gitbook/assets/53-docker-container.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/53-docker-container.png -------------------------------------------------------------------------------- /.gitbook/assets/54-WhatAreDockerImageLayers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/54-WhatAreDockerImageLayers.png -------------------------------------------------------------------------------- /.gitbook/assets/55-layersIndokerimage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/55-layersIndokerimage.png -------------------------------------------------------------------------------- /.gitbook/assets/56-REST-API.-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/56-REST-API.-diagram.png -------------------------------------------------------------------------------- /.gitbook/assets/56-install-docker-engine-ubuntu-22-04-banner.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/56-install-docker-engine-ubuntu-22-04-banner.jpg -------------------------------------------------------------------------------- /.gitbook/assets/57-httprequest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/57-httprequest.png -------------------------------------------------------------------------------- /.gitbook/assets/58-HTTP_Status_Codes.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/58-HTTP_Status_Codes.webp -------------------------------------------------------------------------------- /.gitbook/assets/59-docker-container.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/59-docker-container.png -------------------------------------------------------------------------------- /.gitbook/assets/60-create-an-ansible-playbook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/60-create-an-ansible-playbook.png -------------------------------------------------------------------------------- /.gitbook/assets/61-inventory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/61-inventory.png -------------------------------------------------------------------------------- /.gitbook/assets/62-playbook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/62-playbook.png -------------------------------------------------------------------------------- /.gitbook/assets/63-roles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/63-roles.png -------------------------------------------------------------------------------- /.gitbook/assets/64-Steps-to-install-Ansible-on-Ubuntu-22.04-LTS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/64-Steps-to-install-Ansible-on-Ubuntu-22.04-LTS.png -------------------------------------------------------------------------------- /.gitbook/assets/65-mariadb-master-slave.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/65-mariadb-master-slave.jpg -------------------------------------------------------------------------------- /.gitbook/assets/66-docker-volume.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/66-docker-volume.png -------------------------------------------------------------------------------- /.gitbook/assets/67-docker-network.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/67-docker-network.png -------------------------------------------------------------------------------- /.gitbook/assets/68-swarm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/68-swarm.png -------------------------------------------------------------------------------- /.gitbook/assets/69-swarm-diagram.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/69-swarm-diagram.webp -------------------------------------------------------------------------------- /.gitbook/assets/70-service-lifecycle.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/70-service-lifecycle.webp -------------------------------------------------------------------------------- /.gitbook/assets/71-docker-to-swarm-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/71-docker-to-swarm-1.png -------------------------------------------------------------------------------- /.gitbook/assets/72-Kubernetes_New.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/72-Kubernetes_New.png -------------------------------------------------------------------------------- /.gitbook/assets/72-swarm_service.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/72-swarm_service.jpg -------------------------------------------------------------------------------- /.gitbook/assets/73-etc-hosts.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/73-etc-hosts.jpg -------------------------------------------------------------------------------- /.gitbook/assets/74-gluster-peer-status.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/74-gluster-peer-status.jpg -------------------------------------------------------------------------------- /.gitbook/assets/75-gluster-pool-list.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/75-gluster-pool-list.jpg -------------------------------------------------------------------------------- /.gitbook/assets/76-gluster-test.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/76-gluster-test.jpg -------------------------------------------------------------------------------- /.gitbook/assets/77-gluster-volume.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/77-gluster-volume.jpg -------------------------------------------------------------------------------- /.gitbook/assets/78-GlusterFS-status.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/78-GlusterFS-status.jpg -------------------------------------------------------------------------------- /.gitbook/assets/79-mounted-lvms.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/79-mounted-lvms.jpg -------------------------------------------------------------------------------- /.gitbook/assets/80-orange-ant-glusterfs.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/80-orange-ant-glusterfs.jpg -------------------------------------------------------------------------------- /.gitbook/assets/81-linux-namespace1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/81-linux-namespace1.png -------------------------------------------------------------------------------- /.gitbook/assets/82-Kubernetes-architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/82-Kubernetes-architecture.png -------------------------------------------------------------------------------- /.gitbook/assets/83-pod.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/83-pod.webp -------------------------------------------------------------------------------- /.gitbook/assets/84-pod.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/84-pod.png -------------------------------------------------------------------------------- /.gitbook/assets/85-prometheus-architecture.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/85-prometheus-architecture.webp -------------------------------------------------------------------------------- /.gitbook/assets/ansible-full.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/ansible-full.webp -------------------------------------------------------------------------------- /.gitbook/assets/docker-full.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/docker-full.png -------------------------------------------------------------------------------- /.gitbook/assets/docker.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/docker.gif -------------------------------------------------------------------------------- /.gitbook/assets/http-method.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/http-method.gif -------------------------------------------------------------------------------- /.gitbook/assets/sql_query.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/.gitbook/assets/sql_query.gif -------------------------------------------------------------------------------- /01-linux/lpic/tmux_cheatsheet.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/01-linux/lpic/tmux_cheatsheet.pdf -------------------------------------------------------------------------------- /01-linux/scripts/00-echo_basic.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ########################################################################################## 4 | # Script Name: echo.sh 5 | # Description: This script demonstrates a simple echo in Linux using Bash scripting. 6 | # Author: Milad Norouzi 7 | # Date: January 1, 2022 8 | # Version: 1.0 9 | ########################################################################################## 10 | 11 | # Print hello world 12 | 13 | echo hello world 14 | echo hello world! 15 | # Run in terminal 16 | echo hello world!! 17 | echo hello world!!!!!!! # :) 18 | 19 | # For print !!!! in normal mode 20 | echo hello world\!\!\!\! 21 | 22 | echo -e "hello \nworld" # Use "" 23 | echo -e "hello \tworld" # Use "" 24 | echo -e "hello \nworld" # Run in sh 25 | echo -e hello \nworld 26 | 27 | # Redirect and append 28 | echo -e "hello world" > file.txt 29 | echo -e "hello world" >> file.txt 30 | 31 | # Read file 32 | cat file.txt 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /01-linux/scripts/01-read_log.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ########################################################################################## 4 | # Script Name: read.sh 5 | # Description: This script demonstrates a simple echo in Linux using Bash scripting. 6 | # Author: Milad Norouzi 7 | # Date: January 1, 2022 8 | # Version: 1.0 9 | ########################################################################################## 10 | 11 | now() { 12 | date "+%Y-%m-%dT%H:%M:%S" 13 | } 14 | 15 | log() { 16 | echo -e "`now` $@ " 17 | } 18 | 19 | log "start echo command" 20 | 21 | # variables 22 | 23 | VAR1=10 24 | echo $VAR1 25 | 26 | VAR2=20 27 | echo $VAR2 28 | 29 | VAR3="hello world" 30 | echo $VAR3 31 | 32 | 33 | # read 34 | 35 | 36 | echo "enter your name: " 37 | read name 38 | echo "your name is $name" 39 | 40 | read -p "enter your name: " name 41 | echo "your name is $name" 42 | 43 | read -s -p "enter your password: " password 44 | echo "your password is $password" 45 | 46 | ### 47 | 48 | # Prompt the user to enter the first number 49 | echo "Enter the first number:" 50 | read num1 51 | 52 | # Prompt the user to enter the second number 53 | echo "Enter the second number:" 54 | read num2 55 | 56 | # Calculate the sum 57 | sum=$((num1 + num2)) 58 | 59 | # Display the result 60 | echo "The sum of $num1 and $num2 is: $sum" 61 | 62 | ### 63 | 64 | # Prompt the user to enter a directory name 65 | echo "Enter the directory name:" 66 | read dirname 67 | 68 | # Create the directory 69 | mkdir "$dirname" 70 | 71 | # Prompt the user to enter a file name 72 | echo "Enter the file name:" 73 | read filename 74 | 75 | # Create the file inside the directory 76 | touch "$dirname/$filename" 77 | 78 | echo "Directory '$dirname' and file '$filename' created successfully." 79 | 80 | 81 | 82 | -------------------------------------------------------------------------------- /01-linux/scripts/06-until.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ########################################################################################## 4 | # Script Name: echo.sh 5 | # Description: This script demonstrates a simple echo in Linux using Bash scripting. 6 | # Author: Milad Norouzi 7 | # Date: January 1, 2022 8 | # Version: 1.0 9 | ########################################################################################## 10 | 11 | 12 | # until syntax 13 | 14 | until condition 15 | do 16 | # Loop body 17 | done 18 | 19 | 20 | #!/bin/bash 21 | 22 | counter=0 23 | until [ $counter -ge 5 ] 24 | do 25 | echo "Counter: $counter" 26 | ((counter++)) 27 | done 28 | 29 | #!/bin/bash 30 | 31 | file_path="/path/to/your/file" 32 | until [ -f $file_path ] 33 | do 34 | echo "Waiting for the file to be created..." 35 | sleep 1 36 | done 37 | echo "The file exists. Proceeding..." 38 | 39 | #!/bin/bash 40 | until ping -c1 www.google.com &>/dev/null 41 | do 42 | echo "Waiting for www.google.com - network down?" 43 | sleep 5 44 | done 45 | echo "Ping successful! www.google.com is reachable." 46 | 47 | # The script generates random numbers between 1 and 10 until it generates a number greater than 8. 48 | 49 | #!/bin/bash 50 | until (( num > 8 )) 51 | do 52 | # Generate a random number between 1 and 10 53 | num=$(( (RANDOM % 10) + 1 )) 54 | echo "Generated number: $num" 55 | done 56 | echo "Loop finished!" 57 | -------------------------------------------------------------------------------- /01-linux/scripts/07-exit_status_built-in_variable.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | 0 Successful completion 4 | 1 General errors 5 | 2 Misuse of shell builtins 6 | 126 Command invoked cannot execute 7 | 127 Command not found 8 | 128 Invalid argument to exit 9 | 128+x fatal signals 10 | 130 Script terminated by Control-C 11 | 255 Exit status out of range 12 | 13 | $? - exit status of last command 14 | $0 - name of the script 15 | $1 to 9 - arguments passed to the script 16 | $@ - all arguments passed to the script 17 | $# - number of arguments passed to the script 18 | $$ - process id of the script 19 | $! - process id of the last background process 20 | $RANDOM - random number 21 | -------------------------------------------------------------------------------- /01-linux/scripts/README.md: -------------------------------------------------------------------------------- 1 | ![40](../../.gitbook/assets/47-bash-script.webp) 2 | 3 | # -------------------------------------------------------------------------------- /01-linux/scripts/generate_random_number.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Generate a random number between 1 and 10 4 | random_number=$((1 + $RANDOM % 10)) 5 | 6 | # Print the random number 7 | echo $random_number 8 | 9 | #To generate a random number between 3 and 10 in a bash script, 10 | #you can adjust the calculation to start at 3 and add a random number up to 8 11 | # (since 10 - 3 = 7, and we add 1 to include 10 in the range). Here's how you can do it: 12 | 13 | # Generate a random number between 3 and 10 14 | random_number=$((3 + $RANDOM % 8)) 15 | 16 | # Print the random number 17 | echo "Generated number: $random_number" 18 | 19 | # Check if the number is odd 20 | if [ $((random_number % 2)) -ne 0 ]; then 21 | echo "The number is odd." 22 | else 23 | echo "The number is even." 24 | fi -------------------------------------------------------------------------------- /01-linux/scripts/script1.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Function to display help message 4 | show_help() { 5 | echo "Usage: $0 [option]" 6 | echo "" 7 | echo "Options:" 8 | echo " -h, --help Display this help message" 9 | echo " -sd, --show-date Display the current date" 10 | echo " -g, --greet Display a greeting message" 11 | echo " -lf, --list-files List files in the current directory" 12 | echo " -du, --disk-usage Show disk usage" 13 | echo "" 14 | } 15 | 16 | # Function to display the current date 17 | show_date() { 18 | echo "Current date: $(date)" 19 | } 20 | 21 | # Function to display a greeting message 22 | greet() { 23 | echo "Hello, welcome to the script!" 24 | } 25 | 26 | # Function to list files in the current directory 27 | list_files() { 28 | echo "Listing files in the current directory:" 29 | ls 30 | } 31 | 32 | # Function to show disk usage 33 | disk_usage() { 34 | echo "Disk usage:" 35 | df -h 36 | } 37 | 38 | # Check if no arguments were provided 39 | if [ $# -eq 0 ]; then 40 | echo "No arguments provided. Use --help or -h for usage information." 41 | exit 1 42 | fi 43 | 44 | # Process command-line arguments 45 | case $1 in 46 | -h|--help) 47 | show_help 48 | ;; 49 | -sd|--show-date) 50 | show_date 51 | ;; 52 | -g|--greet) 53 | greet 54 | ;; 55 | -lf|--list-files) 56 | list_files 57 | ;; 58 | -du|--disk-usage) 59 | disk_usage 60 | ;; 61 | *) 62 | echo "Error: Unknown option '$1'. Use --help or -h for usage information." 63 | exit 1 64 | ;; 65 | esac 66 | -------------------------------------------------------------------------------- /01-linux/scripts/script2.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Function to validate IP address 4 | validate_ip() { 5 | if [[ $1 =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then 6 | return 0 7 | else 8 | return 1 9 | fi 10 | } 11 | 12 | # Function to perform actions 13 | perform_action() { 14 | read -p "Do you want to (p)ing, (t)raceroute, or (s)sh into the IP? " action 15 | 16 | case $action in 17 | p|P) 18 | ping -c 4 $1 19 | ;; 20 | t|T) 21 | traceroute $1 22 | ;; 23 | s|S) 24 | read -p "Enter the SSH username: " username 25 | read -s -p "Enter the SSH password: " password 26 | echo "" 27 | read -p "Enter the command to run on SSH: " ssh_command 28 | sshpass -p $password ssh $username@$1 $ssh_command 29 | ;; 30 | *) 31 | echo "Invalid choice. Exiting." 32 | exit 1 33 | ;; 34 | esac 35 | } 36 | 37 | # Main script starts here 38 | read -p "Enter the IP address: " ip 39 | 40 | if validate_ip $ip; then 41 | perform_action $ip 42 | else 43 | echo "Invalid IP address format." 44 | exit 1 45 | fi 46 | -------------------------------------------------------------------------------- /01-linux/scripts/script3.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Scripte to get a car name and check the name and print some messages 4 | 5 | read -p "Enter the car name: " CAR_NAME 6 | 7 | # validate car name 8 | 9 | CAR_NAME=`echo $CAR_NAME | tr [:upper:] [:lower:] | tr -d [:digit:] | tr -d [:punct:]` 10 | 11 | if [ -z $CAR_NAME ]; then 12 | echo "Car name is empty, please enter a valid car name." 13 | exit 0 14 | fi 15 | 16 | if [ $CAR_NAME = "benz" ] || [ $CAR_NAME = "bmw" ]; then 17 | echo "Good choice!" 18 | elif [ $CAR_NAME = "audi" ]; then 19 | echo "Not bad!" 20 | else 21 | echo "Bad choice!" 22 | fi 23 | -------------------------------------------------------------------------------- /02-git/05-working_with_git_remotes.md: -------------------------------------------------------------------------------- 1 | ![43](../.gitbook/assets/43-gitremote.jpg) 2 | 3 | 4 | ### Git clone 5 | 6 | - Clone a repository 7 | - Create a new repository 8 | - Push to a remote repository 9 | - Pull from a remote repository 10 | - Fetch from a remote repository 11 | 12 | `git clone` is a command used to create a copy of a remote Git repository on your local machine. It allows you to download all the files and commit history from the remote repository. 13 | 14 | To clone a repository, you need the URL of the remote repository. For example, if you want to clone a repository from GitHub, you can find the URL on the repository's page. Once you have the URL, open your terminal or command prompt and run the following command: 15 | 16 | ```bash 17 | git clone 18 | ``` 19 | 20 | Push the changes to the remote repository using the `git push` command. Specify the name of the remote repository and the branch you want to push. For example, to push the changes to the "main" branch: 21 | 22 | ```bash 23 | git push origin main 24 | ``` 25 | 26 | If the branch doesn't exist in the remote repository, Git will create it for you. 27 | 28 | To pull changes from a remote repository into your local repository, you can follow these steps: 29 | 30 | ```bash 31 | git pull origin 32 | ``` 33 | 34 | 35 | ```bash 36 | git pull origin main 37 | ``` 38 | 39 | To fetch changes from a remote repository into your local repository without automatically merging them 40 | 41 | ```bash 42 | git fetch origin main 43 | ``` 44 | 45 | After fetching the changes, you can view the updated branches and commits in your local repository. You can use commands like `git branch -r` and `git log` to list the remote branches or `git log origin/main` to see the commit history of the remote branch named "main" 46 | 47 | -------------------------------------------------------------------------------- /03-docker/10-docker-compose/mariadb.yml: -------------------------------------------------------------------------------- 1 | version: '3.4' 2 | 3 | services: 4 | mariadb: 5 | container_name: mariadb-1 6 | image: mariadb:10.2 7 | environment: 8 | MYSQL_ROOT_PASSWORD: changeme 9 | MYSQL_DATABASE: my_db 10 | MYSQL_USER: my_user 11 | MYSQL_PASSWORD: changeme 12 | networks: 13 | - backend 14 | restart: unless-stopped # Changed from on-failure to unless-stopped for broader restart policy 15 | volumes: 16 | - /data/mariadb:/var/lib/mysql 17 | ports: 18 | - 3306:3306 19 | # Optional healthcheck 20 | healthcheck: # Adding healthcheck to ensure the service is running as expected 21 | test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"] 22 | interval: 30s 23 | timeout: 10s 24 | retries: 5 25 | logging: # Configuring logging 26 | driver: json-file 27 | options: 28 | max-size: "10m" 29 | max-file: "3" 30 | command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW # Setting transaction isolation level and binlog format for better performance and consistency 31 | security_opt: # Enhance security 32 | - no-new-privileges:true 33 | mem_limit: 256m # Limiting memory usage to prevent resource overconsumption 34 | cpus: 0.5 # Limit CPU usage 35 | 36 | networks: 37 | backend: 38 | driver: bridge 39 | ipam: 40 | config: 41 | - subnet: 172.16.238.0/24 42 | -------------------------------------------------------------------------------- /03-docker/10-docker-compose/postgresql.yml: -------------------------------------------------------------------------------- 1 | version: '3.9' 2 | 3 | services: 4 | postgres: 5 | container_name: postgres-1 6 | restart: always 7 | image: postgres:14.11-bookworm 8 | ports: 9 | - 5432:5432 10 | volumes: 11 | - /data/postgres:/var/lib/postgresql/data 12 | environment: 13 | POSTGRES_PASSWORD: postgres 14 | POSTGRES_USER: postgres 15 | POSTGRES_DB: my_db 16 | 17 | 18 | ### for up and use 19 | 20 | # docker-compose -f postgresql.yml up -d 21 | 22 | ### exec to container 23 | 24 | # docker exec -it postgres-1 bash 25 | 26 | ### psql 27 | # psql --username=postgres --password 28 | 29 | ### create database 30 | # CREATE DATABASE test_db; 31 | 32 | ### connect to database 33 | # \l --> list databases 34 | # \c my_db --> connect to database 35 | # \dt --> list tables 36 | # \d my_table --> describe table 37 | 38 | ### create table 39 | # CREATE TABLE my_table (id serial primary key, name varchar(255)); 40 | 41 | ### insert 42 | # INSERT INTO my_table (name) VALUES ('John'); 43 | 44 | ### query 45 | # SELECT * FROM my_table; 46 | 47 | ### exit 48 | 49 | # \q 50 | -------------------------------------------------------------------------------- /03-docker/10-docker-compose/redis.yml: -------------------------------------------------------------------------------- 1 | version: '3.9' 2 | 3 | services: 4 | redis: 5 | container_name: redis-1 6 | image: redis:latest 7 | restart: always 8 | ports: 9 | - "6379:6379" 10 | volumes: 11 | - /redis/logs:/var/log 12 | - /redis/dаta:/root/redis 13 | - /redis/redis.conf:/usr/local/etc/redis/redis.conf 14 | environment: 15 | - REDIS_PASSWORD=my-password 16 | - REDIS_PORT=6379 17 | - REDIS_DATABASES=16 -------------------------------------------------------------------------------- /03-docker/gitea-postgres/compose.yaml: -------------------------------------------------------------------------------- 1 | version: '3.9' 2 | services: 3 | db: 4 | container_name: postgres_db 5 | image: postgres:alpine 6 | environment: 7 | - POSTGRES_USER=gitea 8 | - POSTGRES_PASSWORD=gitea 9 | - POSTGRES_DB=gitea 10 | restart: always 11 | volumes: 12 | - db_data:/var/lib/postgresql/data 13 | expose: 14 | - 5432 15 | gitea: 16 | container_name: gitea 17 | image: gitea/gitea:latest 18 | environment: 19 | - DB_TYPE=postgres 20 | - DB_HOST=db:5432 21 | - DB_NAME=gitea 22 | - DB_USER=gitea 23 | - DB_PASSWD=gitea 24 | restart: always 25 | volumes: 26 | - git_data:/data 27 | ports: 28 | - 80:3000 29 | - 22:22 30 | volumes: 31 | db_data: 32 | git_data: -------------------------------------------------------------------------------- /03-docker/gitea-postgres/output.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sudoix/DevOps/93e75848c6f2843c2a3eb0345fff64f64bbabe05/03-docker/gitea-postgres/output.jpg -------------------------------------------------------------------------------- /03-docker/nginx-nodejs-redis/compose.yaml: -------------------------------------------------------------------------------- 1 | version: '3.9' 2 | services: 3 | redis: 4 | container_name: redis1 5 | hostname: redis-1 6 | restart: on-failure 7 | image: 'redislabs/redismod' 8 | ports: 9 | - '127.0.0.1:6379:6379' 10 | web1: 11 | container_name: web1 12 | restart: on-failure 13 | build: ./web 14 | hostname: web1 15 | # ports: 16 | # - '81:5000' 17 | web2: 18 | container_name: web2 19 | restart: on-failure 20 | build: ./web 21 | hostname: web2 22 | # ports: 23 | # - '82:5000' 24 | nginx: 25 | container_name: nginx1 26 | build: ./nginx 27 | ports: 28 | - '80:80' 29 | depends_on: 30 | - web1 31 | - web2 32 | 33 | 34 | -------------------------------------------------------------------------------- /03-docker/nginx-nodejs-redis/nginx/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM nginx:1.21.6 2 | RUN rm /etc/nginx/conf.d/default.conf 3 | COPY nginx.conf /etc/nginx/conf.d/default.conf 4 | -------------------------------------------------------------------------------- /03-docker/nginx-nodejs-redis/nginx/nginx.conf: -------------------------------------------------------------------------------- 1 | upstream loadbalancer { 2 | server web1:5000; 3 | server web2:5000; 4 | } 5 | 6 | server { 7 | listen 80; 8 | server_name _; 9 | location / { 10 | proxy_pass http://loadbalancer; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /03-docker/nginx-nodejs-redis/web/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /03-docker/nginx-nodejs-redis/web/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:14.17.3-alpine3.14 2 | 3 | WORKDIR /usr/src/app 4 | 5 | COPY package.json package-lock.json ./ 6 | RUN npm ci 7 | COPY ./server.js ./ 8 | 9 | CMD ["npm","start"] 10 | -------------------------------------------------------------------------------- /03-docker/nginx-nodejs-redis/web/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "web", 3 | "version": "1.0.0", 4 | "description": "Running Node.js and Express.js on Docker", 5 | "main": "server.js", 6 | "scripts": { 7 | "start": "node server.js" 8 | }, 9 | "dependencies": { 10 | "express": "^4.17.2", 11 | "redis": "3.1.2" 12 | }, 13 | "author": "", 14 | "license": "MIT" 15 | } 16 | -------------------------------------------------------------------------------- /03-docker/nginx-nodejs-redis/web/server.js: -------------------------------------------------------------------------------- 1 | const os = require('os'); 2 | const express = require('express'); 3 | const app = express(); 4 | const redis = require('redis'); 5 | const redisClient = redis.createClient({ 6 | host: 'redis', 7 | port: 6379 8 | }); 9 | 10 | app.get('/', function(req, res) { 11 | redisClient.get('numVisits', function(err, numVisits) { 12 | numVisitsToDisplay = parseInt(numVisits) + 1; 13 | if (isNaN(numVisitsToDisplay)) { 14 | numVisitsToDisplay = 1; 15 | } 16 | res.send(os.hostname() +': Number of visits is: ' + numVisitsToDisplay); 17 | numVisits++; 18 | redisClient.set('numVisits', numVisits); 19 | }); 20 | }); 21 | 22 | app.listen(5000, function() { 23 | console.log('Web application is listening on port 5000'); 24 | }); 25 | -------------------------------------------------------------------------------- /03-docker/readme.md: -------------------------------------------------------------------------------- 1 | ![docker-full](../.gitbook/assets/docker-full.png) -------------------------------------------------------------------------------- /06-ansible/ansible/inventory/group_vars/all.yaml: -------------------------------------------------------------------------------- 1 | # General 2 | install_ansible_modules: "true" 3 | disable_transparent_huge_pages: "true" 4 | setup_interface: "false" 5 | 6 | # variable for testing 7 | motd_path: "/etc/motd" 8 | config_path: "/opt/sample.conf" 9 | 10 | # If example 11 | server_name: example.com 12 | ssl: true 13 | infra_env: development 14 | 15 | # For example 16 | my_value: 17 | - item1 18 | - item2 19 | - item3 20 | 21 | my_variable: 22 | - name: John 23 | age: 30 24 | - name: Jane 25 | age: 25 26 | 27 | sample_config: 28 | - DOMAIN: "https://test.sudoix.com" 29 | - LOGIN_RATELIMIT_MAX_BURST: "10" 30 | - ADMIN_TOKEN: "YourReallyStrongAdminTokenHere" 31 | - DATABASE_URL: postgresql:// 32 | 33 | # DNS 34 | DNS1: "8.8.8.8" 35 | DNS2: "8.8.4.4" -------------------------------------------------------------------------------- /06-ansible/ansible/inventory/hosts.ini: -------------------------------------------------------------------------------- 1 | [all] 2 | # the first node is the first master node (k8s-test-master1) 3 | 4 | k8s-test-master1 ansible_host=10.16.29.237 private_ip=10.16.29.237 5 | ; k8s-test-master2 ansible_host=185.97.118.58 private_ip=172.16.100.21 6 | ; k8s-test-master3 ansible_host=37.152.182.216 private_ip=172.16.100.31 7 | 8 | ; k8s-test-worker1 ansible_host=37.32.21.250 private_ip=172.16.100.41 9 | ; ; k8s-test-worker2 ansible_host=172.24.96.6 private_ip=172.16.100.22 10 | ; ; k8s-test-worker3 ansible_host=172.24.96.7 private_ip=172.16.100.23 11 | 12 | ; lb1-test ansible_host=185.206.92.135 private_ip=172.16.100.81 13 | ; lb2-test ansible_host=185.206.92.220 private_ip=172.16.100.91 14 | 15 | ; [k8s] 16 | ; k8s-test-master1 17 | ; k8s-test-master2 18 | ; k8s-test-master3 19 | ; k8s-test-worker1 20 | ; ; k8s-test-worker2 21 | ; ; k8s-test-worker3 22 | 23 | ; [k8s_masters] 24 | ; k8s-test-master1 25 | ; k8s-test-master2 26 | ; k8s-test-master3 27 | 28 | ; [k8s_workers] 29 | ; k8s-test-worker1 30 | ; # k8s-test-worker2 31 | ; # k8s-test-worker3 32 | 33 | 34 | ; [lb] 35 | ; lb1-test 36 | ; lb2-test 37 | 38 | 39 | [all:vars] 40 | ansible_user=milad 41 | ansible_port=22 42 | ansible_python_interpreter = "/usr/bin/python3" 43 | domain="sudoix.com" 44 | apiserver_url="espenu.sudoix.com" -------------------------------------------------------------------------------- /06-ansible/ansible/main.yaml: -------------------------------------------------------------------------------- 1 | - hosts: all 2 | roles: 3 | - role: preinstall 4 | gather_facts: yes 5 | any_errors_fatal: true -------------------------------------------------------------------------------- /06-ansible/ansible/readme.md: -------------------------------------------------------------------------------- 1 | ## First run 2 | 3 | 4 | ```shell 5 | ansible-playbook -i inventory/hosts.ini main.yaml --become --become-method=sudo 6 | 7 | ``` 8 | 9 | 10 | -------------------------------------------------------------------------------- /06-ansible/ansible/roles/preinstall/.travis.yml: -------------------------------------------------------------------------------- 1 | --- 2 | language: python 3 | python: "2.7" 4 | 5 | # Use the new container infrastructure 6 | sudo: false 7 | 8 | # Install ansible 9 | addons: 10 | apt: 11 | packages: 12 | - python-pip 13 | 14 | install: 15 | # Install ansible 16 | - pip install ansible 17 | 18 | # Check ansible version 19 | - ansible --version 20 | 21 | # Create ansible.cfg with correct roles_path 22 | - printf '[defaults]\nroles_path=../' >ansible.cfg 23 | 24 | script: 25 | # Basic role syntax check 26 | - ansible-playbook tests/test.yml -i tests/inventory --syntax-check 27 | 28 | notifications: 29 | webhooks: https://galaxy.ansible.com/api/v1/notifications/ -------------------------------------------------------------------------------- /06-ansible/ansible/roles/preinstall/README.md: -------------------------------------------------------------------------------- 1 | Role Name 2 | ========= 3 | 4 | A brief description of the role goes here. 5 | 6 | Requirements 7 | ------------ 8 | 9 | Any pre-requisites that may not be covered by Ansible itself or the role should be mentioned here. For instance, if the role uses the EC2 module, it may be a good idea to mention in this section that the boto package is required. 10 | 11 | Role Variables 12 | -------------- 13 | 14 | A description of the settable variables for this role should go here, including any variables that are in defaults/main.yml, vars/main.yml, and any variables that can/should be set via parameters to the role. Any variables that are read from other roles and/or the global scope (ie. hostvars, group vars, etc.) should be mentioned here as well. 15 | 16 | Dependencies 17 | ------------ 18 | 19 | A list of other roles hosted on Galaxy should go here, plus any details in regards to parameters that may need to be set for other roles, or variables that are used from other roles. 20 | 21 | Example Playbook 22 | ---------------- 23 | 24 | Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too: 25 | 26 | - hosts: servers 27 | roles: 28 | - { role: username.rolename, x: 42 } 29 | 30 | License 31 | ------- 32 | 33 | BSD 34 | 35 | Author Information 36 | ------------------ 37 | 38 | An optional section for the role authors to include contact information, or a website (HTML is not allowed). 39 | -------------------------------------------------------------------------------- /06-ansible/ansible/roles/preinstall/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # defaults file for preinstall -------------------------------------------------------------------------------- /06-ansible/ansible/roles/preinstall/files/login-notify.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # prepare any message you want 4 | host_name="$(hostname -f)" 5 | login_ip="$(echo $SSH_CONNECTION | cut -d " " -f 1)" 6 | login_date="$(date +"%e %b %Y, %a %r")" 7 | login_name="$(whoami)" 8 | 9 | # For new line I use $'\n' here 10 | message="🔥🔥 New login 🔥🔥"$'\n'"$host_name"$'\n'"$login_name"$'\n'"$login_ip"$'\n'"$login_date" 11 | 12 | #send it to telegram 13 | telegram-send "$message" -------------------------------------------------------------------------------- /06-ansible/ansible/roles/preinstall/files/motd: -------------------------------------------------------------------------------- 1 | ******************************************************************************** 2 | * * 3 | * Welcome to The System! * 4 | * * 5 | ******************************************************************************** 6 | * Security Notice: * 7 | * - Unauthorized access to this device is prohibited. * 8 | * - All connections are logged and monitored. * 9 | * - All actions are logged and monitored. * 10 | * - Please contact the system administrator for any issues. (Sudoix) * 11 | ******************************************************************************** 12 | * System Information: * 13 | * - For system status and maintenance updates, visit status page * 14 | * - Remember to log out when you are done with your session. * 15 | ******************************************************************************** 16 | -------------------------------------------------------------------------------- /06-ansible/ansible/roles/preinstall/files/telegram-send: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | 4 | GROUP_ID=-4099827348 5 | BOT_TOKEN=6623598874:AAGhq7EcZbcSbeiHuQwjrdfPWrXNyoq4kVQ 6 | 7 | # this 3 checks (if) are not necessary but should be convenient 8 | if [ "$1" == "-h" ]; then 9 | echo "Usage: `basename $0` \"text message\"" 10 | exit 0 11 | fi 12 | 13 | if [ -z "$1" ] 14 | then 15 | echo "Add message text as second arguments" 16 | exit 0 17 | fi 18 | 19 | if [ "$#" -ne 1 ]; then 20 | echo "You can pass only one argument. For string with spaces put it on quotes" 21 | exit 0 22 | fi 23 | 24 | curl -s --data "text=$1" --data "chat_id=$GROUP_ID" 'https://telegram.sabermesgari.ir/bot'$BOT_TOKEN'/sendMessage' > /dev/null -------------------------------------------------------------------------------- /06-ansible/ansible/roles/preinstall/handlers/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # handlers file for preinstall 3 | 4 | - name: restart sshd 5 | service: 6 | name: sshd 7 | state: restarted -------------------------------------------------------------------------------- /06-ansible/ansible/roles/preinstall/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # tasks file for preinstall 3 | 4 | - name: basic setup 5 | include_tasks: basic.yaml 6 | 7 | # - name: telegram notify 8 | # include_tasks: telegram-notify.yaml -------------------------------------------------------------------------------- /06-ansible/ansible/roles/preinstall/tasks/telegram-notify.yaml: -------------------------------------------------------------------------------- 1 | # tasks file for telegram-notify 2 | 3 | - name: Copy telegram-send 4 | copy: 5 | src: files/telegram-send 6 | dest: /usr/bin/telegram-send 7 | owner: root 8 | group: root 9 | mode: "0755" 10 | 11 | - name: Copy login-notify 12 | copy: 13 | src: files/login-notify.sh 14 | dest: /etc/profile.d/login-notify.sh 15 | owner: root 16 | group: root 17 | mode: "0755" -------------------------------------------------------------------------------- /06-ansible/ansible/roles/preinstall/templates/resolv.conf.j2: -------------------------------------------------------------------------------- 1 | nameserver {{ DNS1 }} 2 | nameserver {{ DNS2 }} 3 | -------------------------------------------------------------------------------- /06-ansible/ansible/roles/preinstall/templates/sample.conf.j2: -------------------------------------------------------------------------------- 1 | http { 2 | server { 3 | listen 80; 4 | server_name {{ server_name }}; 5 | 6 | {% if ssl %} 7 | ssl_certificate /etc/nginx/ssl/{{ server_name }}.crt; 8 | ssl_certificate_key /etc/nginx/ssl/{{ server_name }}.key; 9 | {% endif %} 10 | 11 | 12 | ########################### if and elif 13 | {% if infra_env == 'production' %} 14 | root /var/www/html; 15 | access_log /var/log/nginx/production_access.log; 16 | error_log /var/log/nginx/production_error.log; 17 | {% elif infra_env == 'staging' %} 18 | root /var/www/staging; 19 | access_log /var/log/nginx/staging_access.log; 20 | error_log /var/log/nginx/staging_error.log; 21 | {% elif infra_env == 'development' %} 22 | root /var/www/dev; 23 | access_log /var/log/nginx/dev_access.log; 24 | error_log /var/log/nginx/dev_error.log; 25 | {% else %} 26 | root /var/www/default; 27 | access_log /var/log/nginx/default_access.log; 28 | error_log /var/log/nginx/default_error.log; 29 | {% endif %} 30 | 31 | location / { 32 | index index.html; 33 | } 34 | } 35 | } 36 | 37 | ############ for example 38 | 39 | {% for item in my_value %} 40 | {{ item }} 41 | {% endfor %} 42 | 43 | {% for item in my_variable %} 44 | Name: {{ item.name }} 45 | Age: {{ item.age }} 46 | {% endfor %} 47 | 48 | {% for env_item in sample_config %} 49 | {% for key, value in env_item.items() %} 50 | - {{ key }}={{ value }} 51 | {% endfor %} 52 | {% endfor %} -------------------------------------------------------------------------------- /06-ansible/ansible/roles/preinstall/tests/inventory: -------------------------------------------------------------------------------- 1 | localhost 2 | 3 | -------------------------------------------------------------------------------- /06-ansible/ansible/roles/preinstall/tests/test.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - hosts: localhost 3 | remote_user: root 4 | roles: 5 | - preinstall -------------------------------------------------------------------------------- /06-ansible/ansible/roles/preinstall/vars/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # vars file for preinstall -------------------------------------------------------------------------------- /06-ansible/readme.md: -------------------------------------------------------------------------------- 1 | ![ansible-full](../.gitbook/assets/ansible-full.webp) -------------------------------------------------------------------------------- /07-k8s/cheatsheet.md: -------------------------------------------------------------------------------- 1 | pod --> replicaset --> deployment --> daemonset --> 2 | 3 | 4 | For see all kubernetes resources you can use: 5 | 6 | ``` 7 | k api-resources --namespaced=true 8 | k api-resources 9 | ``` 10 | 11 | For see all kubernetes resources operations you can use: 12 | 13 | ``` 14 | k explain 15 | k explain pod 16 | ``` 17 | 18 | For explain more information you can use: 19 | 20 | ``` 21 | k explain pod.metadata 22 | ``` 23 | 24 | For scaling up and down ReplicaSets you can use: 25 | 26 | ``` 27 | k scale rs --replicas=3 28 | ``` 29 | 30 | For execute commands on your pod you can use: 31 | 32 | ``` 33 | k exec -- 34 | k exec test -- nginx -v 35 | ``` 36 | 37 | For rolling back your pod you can use: 38 | 39 | ``` 40 | k rollout undo deployment 41 | ``` 42 | 43 | For checking history of your deployment you can use: 44 | 45 | ``` 46 | k rollout history deployment --revision 47 | ``` 48 | 49 | For rolling out your deployment you can use: 50 | 51 | ``` 52 | k rollout undo deployment --to-revision=2 53 | ``` 54 | 55 | #### website 56 | 57 | https://k8s-examples.container-solutions.com/ 58 | https://k8syaml.com/ 59 | Kampose 60 | 61 | -------------------------------------------------------------------------------- /07-k8s/helm/02-Install_helm.md: -------------------------------------------------------------------------------- 1 | From The Helm Project 2 | The Helm project provides two ways to fetch and install Helm. These are the official methods to get Helm releases. In addition to that, the Helm community provides methods to install Helm through different package managers. Installation through those methods can be found below the official methods. 3 | 4 | From the Binary Releases 5 | Every release of Helm provides binary releases for a variety of OSes. These binary versions can be manually downloaded and installed. 6 | 7 | Download your desired version 8 | Unpack it (tar -zxvf helm-v3.0.0-linux-amd64.tar.gz) 9 | Find the helm binary in the unpacked directory, and move it to its desired destination (mv linux-amd64/helm /usr/local/bin/helm) 10 | From there, you should be able to run the client and add the stable repo: helm help. 11 | 12 | Note: Helm automated tests are performed for Linux AMD64 only during CircleCi builds and releases. Testing of other OSes are the responsibility of the community requesting Helm for the OS in question. 13 | 14 | From Script 15 | Helm now has an installer script that will automatically grab the latest version of Helm and install it locally. 16 | 17 | You can fetch that script, and then execute it locally. It's well documented so that you can read through it and understand what it is doing before you run it. 18 | 19 | ``` 20 | $ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 21 | $ chmod 700 get_helm.sh 22 | $ ./get_helm.sh 23 | ``` 24 | 25 | Yes, you can curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash if you want to live on the edge. -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/.helmignore: -------------------------------------------------------------------------------- 1 | # Patterns to ignore when building packages. 2 | # This supports shell glob matching, relative path matching, and 3 | # negation (prefixed with !). Only one pattern per line. 4 | .DS_Store 5 | # Common VCS dirs 6 | .git/ 7 | .gitignore 8 | .bzr/ 9 | .bzrignore 10 | .hg/ 11 | .hgignore 12 | .svn/ 13 | # Common backup files 14 | *.swp 15 | *.bak 16 | *.tmp 17 | *~ 18 | # Various IDEs 19 | .project 20 | .idea/ 21 | *.tmproj 22 | .vscode/ 23 | __snapshot__ 24 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/Chart.yaml: -------------------------------------------------------------------------------- 1 | annotations: 2 | artifacthub.io/changes: |- 3 | - "update post submit helm ci and clean up (#11221)" 4 | - "refactor helm ci tests part I (#11188)" 5 | - "Update Ingress-Nginx version controller-v1.10.1" 6 | artifacthub.io/prerelease: "false" 7 | apiVersion: v2 8 | appVersion: 1.10.1 9 | description: Ingress controller for Kubernetes using NGINX as a reverse proxy and 10 | load balancer 11 | home: https://github.com/kubernetes/ingress-nginx 12 | icon: https://upload.wikimedia.org/wikipedia/commons/thumb/c/c5/Nginx_logo.svg/500px-Nginx_logo.svg.png 13 | keywords: 14 | - ingress 15 | - nginx 16 | kubeVersion: '>=1.21.0-0' 17 | maintainers: 18 | - name: Gacko 19 | - name: rikatz 20 | - name: strongjz 21 | - name: tao12345666333 22 | name: ingress-nginx 23 | sources: 24 | - https://github.com/kubernetes/ingress-nginx 25 | version: 4.10.1 26 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/OWNERS: -------------------------------------------------------------------------------- 1 | # See the OWNERS docs: https://www.kubernetes.dev/docs/guide/owners 2 | 3 | approvers: 4 | - ingress-nginx-helm-maintainers 5 | 6 | reviewers: 7 | - ingress-nginx-helm-reviewers 8 | 9 | labels: 10 | - area/helm 11 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-2.10.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 2.10.0 6 | 7 | * [#5843](https://github.com/kubernetes/ingress-nginx/pull/5843) Update jettech/kube-webhook-certgen image 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/ingress-nginx-2.9.1...ingress-nginx-2.10.0 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-2.11.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 2.11.0 6 | 7 | * [#5879](https://github.com/kubernetes/ingress-nginx/pull/5879) Update helm chart for v0.34.0 8 | * [#5671](https://github.com/kubernetes/ingress-nginx/pull/5671) Make liveness probe more fault tolerant than readiness probe 9 | 10 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/ingress-nginx-2.10.0...ingress-nginx-2.11.0 11 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-2.11.1.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 2.11.1 6 | 7 | * [#5900](https://github.com/kubernetes/ingress-nginx/pull/5900) Release helm chart for v0.34.1 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/ingress-nginx-2.11.0...ingress-nginx-2.11.1 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-2.11.2.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 2.11.2 6 | 7 | * [#5951](https://github.com/kubernetes/ingress-nginx/pull/5951) Bump chart patch version 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/ingress-nginx-2.11.1...ingress-nginx-2.11.2 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-2.11.3.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 2.11.3 6 | 7 | * [#6038](https://github.com/kubernetes/ingress-nginx/pull/6038) Bump chart version PATCH 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/ingress-nginx-2.11.2...ingress-nginx-2.11.3 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-2.12.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 2.12.0 6 | 7 | * [#6039](https://github.com/kubernetes/ingress-nginx/pull/6039) Add configurable serviceMonitor metricRelabelling and targetLabels 8 | * [#6044](https://github.com/kubernetes/ingress-nginx/pull/6044) Fix YAML linting 9 | 10 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/ingress-nginx-2.11.3...ingress-nginx-2.12.0 11 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-2.12.1.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 2.12.1 6 | 7 | * [#6075](https://github.com/kubernetes/ingress-nginx/pull/6075) Sync helm chart affinity examples 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/ingress-nginx-2.12.0...ingress-nginx-2.12.1 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-2.13.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 2.13.0 6 | 7 | * [#6093](https://github.com/kubernetes/ingress-nginx/pull/6093) Release v0.35.0 8 | * [#6080](https://github.com/kubernetes/ingress-nginx/pull/6080) Switch images to k8s.gcr.io after Vanity Domain Flip 9 | 10 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/ingress-nginx-2.12.1...ingress-nginx-2.13.0 11 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-2.14.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 2.14.0 6 | 7 | * [#6104](https://github.com/kubernetes/ingress-nginx/pull/6104) Misc fixes for nginx-ingress chart for better keel and prometheus-operator integration 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/ingress-nginx-2.13.0...ingress-nginx-2.14.0 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-2.15.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 2.15.0 6 | 7 | * [#6087](https://github.com/kubernetes/ingress-nginx/pull/6087) Adding parameter for externalTrafficPolicy in internal controller service spec 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/ingress-nginx-2.14.0...ingress-nginx-2.15.0 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-2.16.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 2.16.0 6 | 7 | * [#6154](https://github.com/kubernetes/ingress-nginx/pull/6154) add `topologySpreadConstraint` to controller 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/ingress-nginx-2.15.0...ingress-nginx-2.16.0 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-2.9.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 2.9.0 6 | 7 | * [#5795](https://github.com/kubernetes/ingress-nginx/pull/5795) Use fully qualified images to avoid cri-o issues 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/ingress-nginx-TODO...ingress-nginx-2.9.0 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-2.9.1.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 2.9.1 6 | 7 | * [#5823](https://github.com/kubernetes/ingress-nginx/pull/5823) Add quoting to sysctls because numeric values need to be presented as strings (#5823) 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/ingress-nginx-2.9.0...ingress-nginx-2.9.1 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-3.0.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 3.0.0 6 | 7 | * [#6167](https://github.com/kubernetes/ingress-nginx/pull/6167) Update chart requirements 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/ingress-nginx-2.16.0...ingress-nginx-3.0.0 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-3.10.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 3.10.0 6 | 7 | * Fix routing regression introduced in 0.41.0 with PathType Exact 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/ingress-nginx-3.9.0...ingress-nginx-3.10.0 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-3.10.1.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 3.10.1 6 | 7 | * Fix regression introduced in 0.41.0 with external authentication 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/ingress-nginx-3.10.0...ingress-nginx-3.10.1 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-3.11.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 3.11.0 6 | 7 | * Support Keda Autoscaling 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/ingress-nginx-3.10.1...ingress-nginx-3.11.0 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-3.11.1.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 3.11.1 6 | 7 | * [#6505](https://github.com/kubernetes/ingress-nginx/pull/6505) Reorder HPA resource list to work with GitOps tooling 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/ingress-nginx-3.11.0...ingress-nginx-3.11.1 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-3.12.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 3.12.0 6 | 7 | * [#6514](https://github.com/kubernetes/ingress-nginx/pull/6514) Remove helm2 support and update docs 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/ingress-nginx-3.11.1...ingress-nginx-3.12.0 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-3.13.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 3.13.0 6 | 7 | * [#6544](https://github.com/kubernetes/ingress-nginx/pull/6544) Fix default backend HPA name variable 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/ingress-nginx-3.12.0...ingress-nginx-3.13.0 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-3.14.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 3.14.0 6 | 7 | * [#6469](https://github.com/kubernetes/ingress-nginx/pull/6469) Allow custom service names for controller and backend 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/ingress-nginx-3.13.0...ingress-nginx-3.14.0 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-3.15.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 3.15.0 6 | 7 | * [#6586](https://github.com/kubernetes/ingress-nginx/pull/6586) Fix 'maxmindLicenseKey' location in values.yaml 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/ingress-nginx-3.14.0...ingress-nginx-3.15.0 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-3.15.1.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 3.15.1 6 | 7 | * Fix chart-releaser action 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/ingress-nginx-3.15.0...ingress-nginx-3.15.1 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-3.16.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 3.16.0 6 | 7 | * [#6646](https://github.com/kubernetes/ingress-nginx/pull/6646) Added LoadBalancerIP value for internal service 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/ingress-nginx-3.15.1...helm-chart-3.16.0 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-3.16.1.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 3.16.1 6 | 7 | * Fix chart-releaser action 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-3.16.0...helm-chart-3.16.1 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-3.17.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 3.17.0 6 | 7 | * Update ingress-nginx v0.42.0 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-3.16.1...helm-chart-3.17.0 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-3.18.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 3.18.0 6 | 7 | * [#6688](https://github.com/kubernetes/ingress-nginx/pull/6688) Allow volume-type emptyDir in controller podsecuritypolicy 8 | * [#6691](https://github.com/kubernetes/ingress-nginx/pull/6691) Improve parsing of helm parameters 9 | 10 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-3.17.0...helm-chart-3.18.0 11 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-3.19.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 3.19.0 6 | 7 | * Update ingress-nginx v0.43.0 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-3.18.0...helm-chart-3.19.0 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-3.20.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 3.20.0 6 | 7 | * [#6730](https://github.com/kubernetes/ingress-nginx/pull/6730) Do not create HPA for defaultBackend if not enabled. 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-3.19.0...helm-chart-3.20.0 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-3.20.1.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 3.20.1 6 | 7 | * Do not create KEDA in case of DaemonSets. 8 | * Fix KEDA v2 definition 9 | 10 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-3.20.0...helm-chart-3.20.1 11 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-3.21.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 3.21.0 6 | 7 | * [#6783](https://github.com/kubernetes/ingress-nginx/pull/6783) Add custom annotations to ScaledObject 8 | * [#6761](https://github.com/kubernetes/ingress-nginx/pull/6761) Adding quotes in the serviceAccount name in Helm values 9 | * [#6767](https://github.com/kubernetes/ingress-nginx/pull/6767) Remove ClusterRole when scope option is enabled 10 | * [#6785](https://github.com/kubernetes/ingress-nginx/pull/6785) Update kube-webhook-certgen image to v1.5.1 11 | 12 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-3.20.1...helm-chart-3.21.0 13 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-3.22.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 3.22.0 6 | 7 | * [#6802](https://github.com/kubernetes/ingress-nginx/pull/6802) Add value for configuring a custom Diffie-Hellman parameters file 8 | * [#6815](https://github.com/kubernetes/ingress-nginx/pull/6815) Allow use of numeric namespaces in helm chart 9 | 10 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-3.21.0...helm-chart-3.22.0 11 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-3.23.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 3.23.0 6 | 7 | * Update ingress-nginx v0.44.0 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-3.22.0...helm-chart-3.23.0 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-3.24.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 3.24.0 6 | 7 | * [#6908](https://github.com/kubernetes/ingress-nginx/pull/6908) Add volumes to default-backend deployment 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-3.23.0...helm-chart-3.24.0 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-3.25.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 3.25.0 6 | 7 | * [#6957](https://github.com/kubernetes/ingress-nginx/pull/6957) Add ability to specify automountServiceAccountToken 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-3.24.0...helm-chart-3.25.0 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-3.26.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 3.26.0 6 | 7 | * [#6979](https://github.com/kubernetes/ingress-nginx/pull/6979) Changed servicePort value for metrics 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-3.25.0...helm-chart-3.26.0 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-3.27.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 3.27.0 6 | 7 | * Update ingress-nginx v0.45.0 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-3.26.0...helm-chart-3.27.0 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-3.28.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 3.28.0 6 | 7 | * [#6900](https://github.com/kubernetes/ingress-nginx/pull/6900) Support existing PSPs 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-3.27.0...helm-chart-3.28.0 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-3.29.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 3.29.0 6 | 7 | * [#6945](https://github.com/kubernetes/ingress-nginx/pull/7020) Add option to specify job label for ServiceMonitor 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-3.28.0...helm-chart-3.29.0 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-3.3.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 3.3.0 6 | 7 | * [#6203](https://github.com/kubernetes/ingress-nginx/pull/6203) Refactor parsing of key values 8 | * [#6162](https://github.com/kubernetes/ingress-nginx/pull/6162) Add helm chart options to expose metrics service as NodePort 9 | * [#6180](https://github.com/kubernetes/ingress-nginx/pull/6180) Fix helm chart admissionReviewVersions regression 10 | * [#6169](https://github.com/kubernetes/ingress-nginx/pull/6169) Fix Typo in example prometheus rules 11 | 12 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/ingress-nginx-3.0.0...ingress-nginx-3.3.0 13 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-3.3.1.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 3.3.1 6 | 7 | * [#6259](https://github.com/kubernetes/ingress-nginx/pull/6259) Release helm chart 8 | * [#6258](https://github.com/kubernetes/ingress-nginx/pull/6258) Fix chart markdown link 9 | * [#6253](https://github.com/kubernetes/ingress-nginx/pull/6253) Release v0.40.0 10 | * [#6233](https://github.com/kubernetes/ingress-nginx/pull/6233) Add admission controller e2e test 11 | 12 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/ingress-nginx-3.3.0...ingress-nginx-3.3.1 13 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-3.30.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 3.30.0 6 | 7 | * [#7092](https://github.com/kubernetes/ingress-nginx/pull/7092) Removes the possibility of using localhost in ExternalNames as endpoints 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-3.29.0...helm-chart-3.30.0 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-3.31.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 3.31.0 6 | 7 | * [7137] https://github.com/kubernetes/ingress-nginx/pull/7137 Add support for custom probes 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-3.30.0...helm-chart-3.31.0 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-3.32.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 3.32.0 6 | 7 | * [7117] https://github.com/kubernetes/ingress-nginx/pull/7117 Add annotations for HPA 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-3.31.0...helm-chart-3.32.0 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-3.33.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 3.33.0 6 | 7 | * [7164] https://github.com/kubernetes/ingress-nginx/pull/7164 Update nginx to v1.20.1 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-3.32.0...helm-chart-3.33.0 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-3.34.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 3.34.0 6 | 7 | * [7256] https://github.com/kubernetes/ingress-nginx/pull/7256 Add namespace field in the namespace scoped resource templates 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-3.33.0...helm-chart-3.34.0 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-3.4.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 3.4.0 6 | 7 | * [#6268](https://github.com/kubernetes/ingress-nginx/pull/6268) Update to 0.40.2 in helm chart #6288 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/ingress-nginx-3.3.1...ingress-nginx-3.4.0 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-3.5.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 3.5.0 6 | 7 | * [#6260](https://github.com/kubernetes/ingress-nginx/pull/6260) Allow Helm Chart to customize admission webhook's annotations, timeoutSeconds, namespaceSelector, objectSelector and cert files locations 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/ingress-nginx-3.4.0...ingress-nginx-3.5.0 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-3.5.1.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 3.5.1 6 | 7 | * [#6299](https://github.com/kubernetes/ingress-nginx/pull/6299) Fix helm chart release 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/ingress-nginx-3.5.0...ingress-nginx-3.5.1 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-3.6.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 3.6.0 6 | 7 | * [#6305](https://github.com/kubernetes/ingress-nginx/pull/6305) Add default linux nodeSelector 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/ingress-nginx-3.5.1...ingress-nginx-3.6.0 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-3.7.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 3.7.0 6 | 7 | * [#6316](https://github.com/kubernetes/ingress-nginx/pull/6316) Numerals in podAnnotations in quotes [#6315](https://github.com/kubernetes/ingress-nginx/issues/6315) 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/ingress-nginx-3.6.0...ingress-nginx-3.7.0 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-3.7.1.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 3.7.1 6 | 7 | * [#6326](https://github.com/kubernetes/ingress-nginx/pull/6326) Fix liveness and readiness probe path in daemonset chart 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/ingress-nginx-3.7.0...ingress-nginx-3.7.1 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-3.8.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 3.8.0 6 | 7 | * [#6395](https://github.com/kubernetes/ingress-nginx/pull/6395) Update jettech/kube-webhook-certgen image 8 | * [#6377](https://github.com/kubernetes/ingress-nginx/pull/6377) Added loadBalancerSourceRanges for internal lbs 9 | * [#6356](https://github.com/kubernetes/ingress-nginx/pull/6356) Add securitycontext settings on defaultbackend 10 | * [#6401](https://github.com/kubernetes/ingress-nginx/pull/6401) Fix controller service annotations 11 | * [#6403](https://github.com/kubernetes/ingress-nginx/pull/6403) Initial helm chart changelog 12 | 13 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/ingress-nginx-3.7.1...ingress-nginx-3.8.0 14 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-3.9.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 3.9.0 6 | 7 | * [#6423](https://github.com/kubernetes/ingress-nginx/pull/6423) Add Default backend HPA autoscaling 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/ingress-nginx-3.8.0...ingress-nginx-3.9.0 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-4.0.1.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 4.0.1 6 | 7 | * [7535] https://github.com/kubernetes/ingress-nginx/pull/7535 Release v1.0.0 ingress-nginx 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-3.34.0...helm-chart-4.0.1 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-4.0.10.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 4.0.10 6 | 7 | * [7964] https://github.com/kubernetes/ingress-nginx/pull/7964 Update controller version to v1.1.0 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-4.0.9...helm-chart-4.0.10 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-4.0.11.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 4.0.11 6 | 7 | * [7873] https://github.com/kubernetes/ingress-nginx/pull/7873 Makes the [appProtocol](https://kubernetes.io/docs/concepts/services-networking/_print/#application-protocol) field optional. 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-4.0.10...helm-chart-4.0.11 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-4.0.12.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 4.0.12 6 | 7 | * [7978] https://github.com/kubernetes/ingress-nginx/pull/7979 Support custom annotations in admissions Jobs 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-4.0.11...helm-chart-4.0.12 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-4.0.13.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 4.0.13 6 | 7 | * [8008] https://github.com/kubernetes/ingress-nginx/pull/8008 Add relabelings in controller-servicemonitor.yaml 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-4.0.12...helm-chart-4.0.13 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-4.0.14.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 4.0.14 6 | 7 | * [8061] https://github.com/kubernetes/ingress-nginx/pull/8061 Using helm-docs to populate values table in README.md 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-4.0.13...helm-chart-4.0.14 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-4.0.2.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 4.0.2 6 | 7 | * [7681] https://github.com/kubernetes/ingress-nginx/pull/7681 Release v1.0.1 of ingress-nginx 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-4.0.1...helm-chart-4.0.2 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-4.0.3.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 4.0.3 6 | 7 | * [7707] https://github.com/kubernetes/ingress-nginx/pull/7707 Release v1.0.2 of ingress-nginx 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-4.0.2...helm-chart-4.0.3 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-4.0.5.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 4.0.5 6 | 7 | * [7740] https://github.com/kubernetes/ingress-nginx/pull/7740 Release v1.0.3 of ingress-nginx 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-4.0.3...helm-chart-4.0.5 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-4.0.6.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 4.0.6 6 | 7 | * [7804] https://github.com/kubernetes/ingress-nginx/pull/7804 Release v1.0.4 of ingress-nginx 8 | * [7651] https://github.com/kubernetes/ingress-nginx/pull/7651 Support ipFamilyPolicy and ipFamilies fields in Helm Chart 9 | * [7798] https://github.com/kubernetes/ingress-nginx/pull/7798 Exoscale: use HTTP Healthcheck mode 10 | * [7793] https://github.com/kubernetes/ingress-nginx/pull/7793 Update kube-webhook-certgen to v1.1.1 11 | 12 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-4.0.5...helm-chart-4.0.6 13 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-4.0.7.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 4.0.7 6 | 7 | * [7923] https://github.com/kubernetes/ingress-nginx/pull/7923 Release v1.0.5 of ingress-nginx 8 | * [7806] https://github.com/kubernetes/ingress-nginx/pull/7806 Choice option for internal/external loadbalancer type service 9 | 10 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-4.0.6...helm-chart-4.0.7 11 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-4.0.9.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 4.0.9 6 | 7 | * [6992] https://github.com/kubernetes/ingress-nginx/pull/6992 Add ability to specify labels for all resources 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-4.0.7...helm-chart-4.0.9 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-4.1.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 4.1.0 6 | 7 | * [8481](https://github.com/kubernetes/ingress-nginx/pull/8481) Fix log creation in chroot script 8 | * [8479](https://github.com/kubernetes/ingress-nginx/pull/8479) changed nginx base img tag to img built with alpine3.14.6 9 | * [8478](https://github.com/kubernetes/ingress-nginx/pull/8478) update base images and protobuf gomod 10 | * [8468](https://github.com/kubernetes/ingress-nginx/pull/8468) Fallback to ngx.var.scheme for redirectScheme with use-forward-headers when X-Forwarded-Proto is empty 11 | * [8456](https://github.com/kubernetes/ingress-nginx/pull/8456) Implement object deep inspector 12 | * [8455](https://github.com/kubernetes/ingress-nginx/pull/8455) Update dependencies 13 | * [8454](https://github.com/kubernetes/ingress-nginx/pull/8454) Update index.md 14 | * [8447](https://github.com/kubernetes/ingress-nginx/pull/8447) typo fixing 15 | * [8446](https://github.com/kubernetes/ingress-nginx/pull/8446) Fix suggested annotation-value-word-blocklist 16 | * [8444](https://github.com/kubernetes/ingress-nginx/pull/8444) replace deprecated topology key in example with current one 17 | * [8443](https://github.com/kubernetes/ingress-nginx/pull/8443) Add dependency review enforcement 18 | * [8434](https://github.com/kubernetes/ingress-nginx/pull/8434) added new auth-tls-match-cn annotation 19 | * [8426](https://github.com/kubernetes/ingress-nginx/pull/8426) Bump github.com/prometheus/common from 0.32.1 to 0.33.0 20 | 21 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-4.0.18...helm-chart-4.1.0 22 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-4.1.2.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 4.1.2 6 | 7 | * [8587](https://github.com/kubernetes/ingress-nginx/pull/8587) Add CAP_SYS_CHROOT to DS/PSP when needed 8 | * [8458](https://github.com/kubernetes/ingress-nginx/pull/8458) Add portNamePreffix Helm chart parameter 9 | * [8522](https://github.com/kubernetes/ingress-nginx/pull/8522) Add documentation for controller.service.loadBalancerIP in Helm chart 10 | 11 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-4.1.0...helm-chart-4.1.2 12 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-4.10.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 4.10.0 6 | 7 | * - "Update Ingress-Nginx version controller-v1.10.0" 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-4.9.1...helm-chart-4.10.0 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-4.10.1.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 4.10.1 6 | 7 | * - "update post submit helm ci and clean up (#11221)" 8 | * - "refactor helm ci tests part I (#11188)" 9 | * - "Update Ingress-Nginx version controller-v1.10.1" 10 | 11 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-4.10.0...helm-chart-4.10.1 12 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-4.2.1.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 4.2.1 6 | 7 | * The sha of kube-webhook-certgen image & the opentelemetry image, in values file, was changed to new images built on alpine-v3.16.1 8 | * [8896](https://github.com/kubernetes/ingress-nginx/pull/8896) updated to new images built today 9 | 10 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-4.2.0...helm-chart-4.2.1 11 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-4.3.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 4.3.0 6 | 7 | * Support for Kubernetes v.1.25.0 was added and support for endpoint slices 8 | * Support for Kubernetes v1.20.0 and v1.21.0 was removed 9 | * [8890](https://github.com/kubernetes/ingress-nginx/pull/8890) migrate to endpointslices 10 | * [9059](https://github.com/kubernetes/ingress-nginx/pull/9059) kubewebhookcertgen sha change after go1191 11 | * [9046](https://github.com/kubernetes/ingress-nginx/pull/9046) Parameterize metrics port name 12 | * [9104](https://github.com/kubernetes/ingress-nginx/pull/9104) Fix yaml formatting error with multiple annotations 13 | 14 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-4.2.1...helm-chart-4.3.0 15 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-4.4.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 4.4.0 6 | 7 | * Adding support for disabling liveness and readiness probes to the Helm chart by @njegosrailic in https://github.com/kubernetes/ingress-nginx/pull/9238 8 | * add:(admission-webhooks) ability to set securityContext by @ybelMekk in https://github.com/kubernetes/ingress-nginx/pull/9186 9 | * #7652 - Updated Helm chart to use the fullname for the electionID if not specified. by @FutureMatt in https://github.com/kubernetes/ingress-nginx/pull/9133 10 | * Rename controller-wehbooks-networkpolicy.yaml. by @Gacko in https://github.com/kubernetes/ingress-nginx/pull/9123 11 | 12 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-4.3.0...helm-chart-4.4.0 13 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-4.5.2.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 4.5.2 6 | 7 | * add lint on chart before release (#9570) 8 | * ci: remove setup-helm step (#9404) 9 | * feat(helm): Optionally use cert-manager instead admission patch (#9279) 10 | * run helm release on main only and when the chart/value changes only (#9290) 11 | * Update Ingress-Nginx version controller-v1.6.4 12 | 13 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-4.4.3...helm-chart-4.5.2 14 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-4.6.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 4.5.3 6 | 7 | * docs(helm): fix value key in readme for enabling certManager (#9640) 8 | * Upgrade alpine 3.17.2 9 | * Upgrade golang 1.20 10 | * Drop testing/support for Kubernetes 1.23 11 | * docs(helm): fix value key in readme for enabling certManager (#9640) 12 | * Update Ingress-Nginx version controller-v1.7.0 13 | * feat: OpenTelemetry module integration (#9062) 14 | * canary-weight-total annotation ignored in rule backends (#9729) 15 | * fix controller psp's volume config (#9740) 16 | * Fix several Helm YAML issues with extraModules and extraInitContainers (#9709) 17 | * Chart: Drop `controller.headers`, rework DH param secret. (#9659) 18 | * Deployment/DaemonSet: Label pods using `ingress-nginx.labels`. (#9732) 19 | * HPA: autoscaling/v2beta1 deprecated, bump apiVersion to v2 for defaultBackend (#9731) 20 | * Fix incorrect annotation name in upstream hashing configuration (#9617) 21 | 22 | * Update Ingress-Nginx version controller-v1.7.0 23 | 24 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-4.5.2...helm-chart-4.6.0 25 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-4.6.1.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 4.6.1 6 | 7 | * [helm] Support custom port configuration for internal service (#9846) 8 | * Adding resource type to default HPA configuration to resolve issues with Terraform helm chart usage (#9803) 9 | * Update Ingress-Nginx version controller-v1.7.1 10 | 11 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-4.6.0...helm-chart-4.6.1 12 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-4.7.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 4.7.0 6 | 7 | * helm: Fix opentelemetry module installation for daemonset (#9792) 8 | * Update charts/* to keep project name display aligned (#9931) 9 | * HPA: Use capabilites & align manifests. (#9521) 10 | * PodDisruptionBudget spec logic update (#9904) 11 | * add option for annotations in PodDisruptionBudget (#9843) 12 | * Update Ingress-Nginx version controller-v1.8.0 13 | 14 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-4.6.1...helm-chart-4.7.0 15 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-4.7.1.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 4.7.1 6 | 7 | * Added a doc line to the missing helm value service.internal.loadBalancerIP (#9406) 8 | * feat(helm): Add loadBalancerClass (#9562) 9 | * added helmshowvalues example (#10019) 10 | * Update Ingress-Nginx version controller-v1.8.1 11 | 12 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-4.7.0...helm-chart-4.7.1 13 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-4.7.2.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 4.7.2 6 | 7 | * Update Ingress-Nginx version controller-v1.8.2 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-4.7.1...helm-chart-4.7.2 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-4.8.0-beta.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 4.8.0-beta.0 6 | 7 | * ci(helm): fix Helm Chart release action 422 error (#10237) 8 | * helm: Use .Release.Namespace as default for ServiceMonitor namespace (#10249) 9 | * [helm] configure allow to configure hostAliases (#10180) 10 | * [helm] pass service annotations through helm tpl engine (#10084) 11 | * Update Ingress-Nginx version controller-v1.9.0-beta.0 12 | 13 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-4.7.2...helm-chart-4.8.0-beta.0 14 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-4.8.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 4.8.0 6 | 7 | * ci(helm): fix Helm Chart release action 422 error (#10237) 8 | * helm: Use .Release.Namespace as default for ServiceMonitor namespace (#10249) 9 | * [helm] configure allow to configure hostAliases (#10180) 10 | * [helm] pass service annotations through helm tpl engine (#10084) 11 | * Update Ingress-Nginx version controller-v1.9.0 12 | 13 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-4.7.2...helm-chart-4.8.0 14 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-4.8.1.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 4.8.1 6 | 7 | * Update Ingress-Nginx version controller-v1.9.1 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-4.8.0...helm-chart-4.8.1 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-4.8.2.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 4.8.2 6 | 7 | * update nginx base, httpbun, e2e, helm webhook cert gen (#10506) 8 | * Update Ingress-Nginx version controller-v1.9.3 9 | 10 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-4.8.1...helm-chart-4.8.2 11 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-4.8.3.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 4.8.3 6 | 7 | * Update Ingress-Nginx version controller-v1.9.4 8 | 9 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-4.8.2...helm-chart-4.8.3 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-4.9.0.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 4.9.0 6 | 7 | * - "Add controller.metrics.serviceMonitor.annotations in Helm chart" 8 | * - "fix(labels): use complete labels variable on default-backend deployment" 9 | * - "chart: allow setting allocateLoadBalancerNodePorts (#10693)" 10 | * - "[release-1.9] feat(helm): add documentation about metric args (#10695)" 11 | * - "Update Ingress-Nginx version controller-v1.9.5" 12 | 13 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-4.8.3...helm-chart-4.9.0 14 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart-4.9.1.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### 4.9.1 6 | 7 | * - "update web hook cert gen to latest release v20231226-1a7112e06" 8 | * - "Update Ingress-Nginx version controller-v1.9.6" 9 | 10 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-4.9.0...helm-chart-4.9.1 11 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/changelog/helm-chart.md.gotmpl: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org). 4 | 5 | ### {{ .NewHelmChartVersion }} 6 | {{ with .HelmUpdates }} 7 | {{- range . }} 8 | * {{ . }} 9 | {{- end }} 10 | {{ end }} 11 | **Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-{{ .PreviousHelmChartVersion }}...helm-chart-{{ .NewHelmChartVersion }} 12 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/ci/controller-admission-tls-cert-manager-values.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | admissionWebhooks: 3 | certManager: 4 | enabled: true 5 | service: 6 | type: ClusterIP 7 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/ci/controller-custom-ingressclass-flags.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | watchIngressWithoutClass: true 3 | ingressClassResource: 4 | name: custom-nginx 5 | enabled: true 6 | default: true 7 | controllerValue: "k8s.io/custom-nginx" 8 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/ci/daemonset-customconfig-values.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | image: 3 | repository: ingress-controller/controller 4 | tag: 1.0.0-dev 5 | digest: null 6 | kind: DaemonSet 7 | allowSnippetAnnotations: false 8 | admissionWebhooks: 9 | enabled: false 10 | service: 11 | type: ClusterIP 12 | 13 | config: 14 | use-proxy-protocol: "true" 15 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/ci/daemonset-customnodeport-values.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | kind: DaemonSet 3 | image: 4 | repository: ingress-controller/controller 5 | tag: 1.0.0-dev 6 | digest: null 7 | admissionWebhooks: 8 | enabled: false 9 | 10 | service: 11 | type: NodePort 12 | nodePorts: 13 | tcp: 14 | 9000: 30090 15 | udp: 16 | 9001: 30091 17 | 18 | tcp: 19 | 9000: "default/test:8080" 20 | 21 | udp: 22 | 9001: "default/test:8080" 23 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/ci/daemonset-extra-modules.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | kind: DaemonSet 3 | image: 4 | repository: ingress-controller/controller 5 | tag: 1.0.0-dev 6 | service: 7 | type: ClusterIP 8 | extraModules: 9 | - name: opentelemetry 10 | image: 11 | registry: registry.k8s.io 12 | image: busybox 13 | tag: latest 14 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/ci/daemonset-headers-values.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | kind: DaemonSet 3 | image: 4 | repository: ingress-controller/controller 5 | tag: 1.0.0-dev 6 | digest: null 7 | admissionWebhooks: 8 | enabled: false 9 | addHeaders: 10 | X-Frame-Options: deny 11 | proxySetHeaders: 12 | X-Forwarded-Proto: https 13 | service: 14 | type: ClusterIP 15 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/ci/daemonset-internal-lb-values.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | kind: DaemonSet 3 | image: 4 | repository: ingress-controller/controller 5 | tag: 1.0.0-dev 6 | digest: null 7 | admissionWebhooks: 8 | enabled: false 9 | service: 10 | type: ClusterIP 11 | internal: 12 | enabled: true 13 | annotations: 14 | service.beta.kubernetes.io/aws-load-balancer-internal: "true" 15 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/ci/daemonset-nodeport-values.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | kind: DaemonSet 3 | image: 4 | repository: ingress-controller/controller 5 | tag: 1.0.0-dev 6 | digest: null 7 | admissionWebhooks: 8 | enabled: false 9 | service: 10 | type: NodePort 11 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/ci/daemonset-podannotations-values.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | kind: DaemonSet 3 | image: 4 | repository: ingress-controller/controller 5 | tag: 1.0.0-dev 6 | digest: null 7 | admissionWebhooks: 8 | enabled: false 9 | metrics: 10 | enabled: true 11 | service: 12 | type: ClusterIP 13 | podAnnotations: 14 | prometheus.io/path: /metrics 15 | prometheus.io/port: "10254" 16 | prometheus.io/scheme: http 17 | prometheus.io/scrape: "true" 18 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/ci/daemonset-tcp-udp-configMapNamespace-values.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | kind: DaemonSet 3 | image: 4 | repository: ingress-controller/controller 5 | tag: 1.0.0-dev 6 | digest: null 7 | admissionWebhooks: 8 | enabled: false 9 | service: 10 | type: ClusterIP 11 | tcp: 12 | configMapNamespace: default 13 | udp: 14 | configMapNamespace: default 15 | 16 | tcp: 17 | 9000: "default/test:8080" 18 | 19 | udp: 20 | 9001: "default/test:8080" 21 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/ci/daemonset-tcp-udp-portNamePrefix-values.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | kind: DaemonSet 3 | image: 4 | repository: ingress-controller/controller 5 | tag: 1.0.0-dev 6 | digest: null 7 | admissionWebhooks: 8 | enabled: false 9 | service: 10 | type: ClusterIP 11 | 12 | tcp: 13 | 9000: "default/test:8080" 14 | 15 | udp: 16 | 9001: "default/test:8080" 17 | 18 | portNamePrefix: "port" 19 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/ci/daemonset-tcp-udp-values.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | kind: DaemonSet 3 | image: 4 | repository: ingress-controller/controller 5 | tag: 1.0.0-dev 6 | digest: null 7 | admissionWebhooks: 8 | enabled: false 9 | service: 10 | type: ClusterIP 11 | 12 | tcp: 13 | 9000: "default/test:8080" 14 | 15 | udp: 16 | 9001: "default/test:8080" 17 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/ci/daemonset-tcp-values.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | kind: DaemonSet 3 | image: 4 | repository: ingress-controller/controller 5 | tag: 1.0.0-dev 6 | digest: null 7 | admissionWebhooks: 8 | enabled: false 9 | service: 10 | type: ClusterIP 11 | 12 | tcp: 13 | 9000: "default/test:8080" 14 | 9001: "default/test:8080" 15 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/ci/deamonset-default-values.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | kind: DaemonSet 3 | image: 4 | repository: ingress-controller/controller 5 | tag: 1.0.0-dev 6 | digest: null 7 | admissionWebhooks: 8 | enabled: false 9 | service: 10 | type: ClusterIP 11 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/ci/deamonset-metrics-values.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | kind: DaemonSet 3 | image: 4 | repository: ingress-controller/controller 5 | tag: 1.0.0-dev 6 | digest: null 7 | admissionWebhooks: 8 | enabled: false 9 | metrics: 10 | enabled: true 11 | service: 12 | type: ClusterIP 13 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/ci/deamonset-psp-values.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | kind: DaemonSet 3 | image: 4 | repository: ingress-controller/controller 5 | tag: 1.0.0-dev 6 | digest: null 7 | admissionWebhooks: 8 | enabled: false 9 | service: 10 | type: ClusterIP 11 | 12 | podSecurityPolicy: 13 | enabled: true 14 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/ci/deamonset-webhook-and-psp-values.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | kind: DaemonSet 3 | image: 4 | repository: ingress-controller/controller 5 | tag: 1.0.0-dev 6 | digest: null 7 | admissionWebhooks: 8 | enabled: true 9 | service: 10 | type: ClusterIP 11 | 12 | podSecurityPolicy: 13 | enabled: true 14 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/ci/deamonset-webhook-values.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | kind: DaemonSet 3 | image: 4 | repository: ingress-controller/controller 5 | tag: 1.0.0-dev 6 | digest: null 7 | admissionWebhooks: 8 | enabled: true 9 | service: 10 | type: ClusterIP 11 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/ci/deployment-autoscaling-behavior-values.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | autoscaling: 3 | enabled: true 4 | behavior: 5 | scaleDown: 6 | stabilizationWindowSeconds: 300 7 | policies: 8 | - type: Pods 9 | value: 1 10 | periodSeconds: 180 11 | admissionWebhooks: 12 | enabled: false 13 | service: 14 | type: ClusterIP 15 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/ci/deployment-autoscaling-values.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | image: 3 | repository: ingress-controller/controller 4 | tag: 1.0.0-dev 5 | digest: null 6 | autoscaling: 7 | enabled: true 8 | admissionWebhooks: 9 | enabled: false 10 | service: 11 | type: ClusterIP 12 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/ci/deployment-customconfig-values.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | image: 3 | repository: ingress-controller/controller 4 | tag: 1.0.0-dev 5 | digest: null 6 | config: 7 | use-proxy-protocol: "true" 8 | allowSnippetAnnotations: false 9 | admissionWebhooks: 10 | enabled: false 11 | service: 12 | type: ClusterIP 13 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/ci/deployment-customnodeport-values.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | image: 3 | repository: ingress-controller/controller 4 | tag: 1.0.0-dev 5 | digest: null 6 | admissionWebhooks: 7 | enabled: false 8 | service: 9 | type: NodePort 10 | nodePorts: 11 | tcp: 12 | 9000: 30090 13 | udp: 14 | 9001: 30091 15 | 16 | tcp: 17 | 9000: "default/test:8080" 18 | 19 | udp: 20 | 9001: "default/test:8080" 21 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/ci/deployment-default-values.yaml: -------------------------------------------------------------------------------- 1 | # Left blank to test default values 2 | controller: 3 | image: 4 | repository: ingress-controller/controller 5 | tag: 1.0.0-dev 6 | digest: null 7 | service: 8 | type: ClusterIP 9 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/ci/deployment-extra-modules-default-container-sec-context.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | image: 3 | repository: ingress-controller/controller 4 | tag: 1.0.0-dev 5 | digest: null 6 | service: 7 | type: ClusterIP 8 | containerSecurityContext: 9 | allowPrivilegeEscalation: false 10 | extraModules: 11 | - name: opentelemetry 12 | image: 13 | registry: registry.k8s.io 14 | image: busybox 15 | tag: latest 16 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/ci/deployment-extra-modules-specific-container-sec-context.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | image: 3 | repository: ingress-controller/controller 4 | tag: 1.0.0-dev 5 | digest: null 6 | service: 7 | type: ClusterIP 8 | extraModules: 9 | - name: opentelemetry 10 | image: 11 | registry: registry.k8s.io 12 | image: busybox 13 | tag: latest 14 | containerSecurityContext: 15 | allowPrivilegeEscalation: false 16 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/ci/deployment-extra-modules.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | image: 3 | repository: ingress-controller/controller 4 | tag: 1.0.0-dev 5 | digest: null 6 | service: 7 | type: ClusterIP 8 | extraModules: 9 | - name: opentelemetry 10 | image: 11 | registry: registry.k8s.io 12 | image: busybox 13 | tag: latest 14 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/ci/deployment-headers-values.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | image: 3 | repository: ingress-controller/controller 4 | tag: 1.0.0-dev 5 | digest: null 6 | admissionWebhooks: 7 | enabled: false 8 | addHeaders: 9 | X-Frame-Options: deny 10 | proxySetHeaders: 11 | X-Forwarded-Proto: https 12 | service: 13 | type: ClusterIP 14 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/ci/deployment-internal-lb-values.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | image: 3 | repository: ingress-controller/controller 4 | tag: 1.0.0-dev 5 | digest: null 6 | admissionWebhooks: 7 | enabled: false 8 | service: 9 | type: ClusterIP 10 | internal: 11 | enabled: true 12 | annotations: 13 | service.beta.kubernetes.io/aws-load-balancer-internal: "true" 14 | ports: 15 | http: 443 16 | https: 80 17 | targetPorts: 18 | http: 443 19 | https: 80 20 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/ci/deployment-metrics-values.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | image: 3 | repository: ingress-controller/controller 4 | tag: 1.0.0-dev 5 | digest: null 6 | admissionWebhooks: 7 | enabled: false 8 | metrics: 9 | enabled: true 10 | service: 11 | type: ClusterIP 12 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/ci/deployment-nodeport-values.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | image: 3 | repository: ingress-controller/controller 4 | tag: 1.0.0-dev 5 | digest: null 6 | admissionWebhooks: 7 | enabled: false 8 | service: 9 | type: NodePort 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/ci/deployment-opentelemetry-customregistry-values.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | image: 3 | repository: ingress-controller/controller 4 | tag: 1.0.0-dev 5 | digest: null 6 | service: 7 | type: ClusterIP 8 | opentelemetry: 9 | enabled: true 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/ci/deployment-podannotations-values.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | image: 3 | repository: ingress-controller/controller 4 | tag: 1.0.0-dev 5 | digest: null 6 | admissionWebhooks: 7 | enabled: false 8 | metrics: 9 | enabled: true 10 | service: 11 | type: ClusterIP 12 | podAnnotations: 13 | prometheus.io/path: /metrics 14 | prometheus.io/port: "10254" 15 | prometheus.io/scheme: http 16 | prometheus.io/scrape: "true" 17 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/ci/deployment-psp-values.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | image: 3 | repository: ingress-controller/controller 4 | tag: 1.0.0-dev 5 | digest: null 6 | service: 7 | type: ClusterIP 8 | 9 | podSecurityPolicy: 10 | enabled: true 11 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/ci/deployment-tcp-udp-configMapNamespace-values.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | image: 3 | repository: ingress-controller/controller 4 | tag: 1.0.0-dev 5 | digest: null 6 | admissionWebhooks: 7 | enabled: false 8 | service: 9 | type: ClusterIP 10 | tcp: 11 | configMapNamespace: default 12 | udp: 13 | configMapNamespace: default 14 | 15 | tcp: 16 | 9000: "default/test:8080" 17 | 18 | udp: 19 | 9001: "default/test:8080" 20 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/ci/deployment-tcp-udp-portNamePrefix-values.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | image: 3 | repository: ingress-controller/controller 4 | tag: 1.0.0-dev 5 | digest: null 6 | admissionWebhooks: 7 | enabled: false 8 | service: 9 | type: ClusterIP 10 | 11 | tcp: 12 | 9000: "default/test:8080" 13 | 14 | udp: 15 | 9001: "default/test:8080" 16 | 17 | portNamePrefix: "port" 18 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/ci/deployment-tcp-udp-values.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | image: 3 | repository: ingress-controller/controller 4 | tag: 1.0.0-dev 5 | digest: null 6 | admissionWebhooks: 7 | enabled: false 8 | service: 9 | type: ClusterIP 10 | 11 | tcp: 12 | 9000: "default/test:8080" 13 | 14 | udp: 15 | 9001: "default/test:8080" 16 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/ci/deployment-tcp-values.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | image: 3 | repository: ingress-controller/controller 4 | tag: 1.0.0-dev 5 | digest: null 6 | service: 7 | type: ClusterIP 8 | 9 | tcp: 10 | 9000: "default/test:8080" 11 | 9001: "default/test:8080" 12 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/ci/deployment-webhook-and-psp-values.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | image: 3 | repository: ingress-controller/controller 4 | tag: 1.0.0-dev 5 | digest: null 6 | admissionWebhooks: 7 | enabled: true 8 | service: 9 | type: ClusterIP 10 | 11 | podSecurityPolicy: 12 | enabled: true 13 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/ci/deployment-webhook-extraEnvs-values.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | service: 3 | type: ClusterIP 4 | admissionWebhooks: 5 | enabled: true 6 | extraEnvs: 7 | - name: FOO 8 | value: foo 9 | - name: TEST 10 | value: test 11 | patch: 12 | enabled: true 13 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/ci/deployment-webhook-resources-values.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | service: 3 | type: ClusterIP 4 | admissionWebhooks: 5 | enabled: true 6 | createSecretJob: 7 | resources: 8 | limits: 9 | cpu: 10m 10 | memory: 20Mi 11 | requests: 12 | cpu: 10m 13 | memory: 20Mi 14 | patchWebhookJob: 15 | resources: 16 | limits: 17 | cpu: 10m 18 | memory: 20Mi 19 | requests: 20 | cpu: 10m 21 | memory: 20Mi 22 | patch: 23 | enabled: true 24 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/ci/deployment-webhook-values.yaml: -------------------------------------------------------------------------------- 1 | controller: 2 | image: 3 | repository: ingress-controller/controller 4 | tag: 1.0.0-dev 5 | digest: null 6 | admissionWebhooks: 7 | enabled: true 8 | service: 9 | type: ClusterIP 10 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/templates/admission-webhooks/job-patch/clusterrole.yaml: -------------------------------------------------------------------------------- 1 | {{- if and .Values.controller.admissionWebhooks.enabled .Values.controller.admissionWebhooks.patch.enabled (not .Values.controller.admissionWebhooks.certManager.enabled) -}} 2 | apiVersion: rbac.authorization.k8s.io/v1 3 | kind: ClusterRole 4 | metadata: 5 | name: {{ include "ingress-nginx.admissionWebhooks.fullname" . }} 6 | annotations: 7 | "helm.sh/hook": pre-install,pre-upgrade,post-install,post-upgrade 8 | "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded 9 | labels: 10 | {{- include "ingress-nginx.labels" . | nindent 4 }} 11 | app.kubernetes.io/component: admission-webhook 12 | {{- with .Values.controller.admissionWebhooks.patch.labels }} 13 | {{- toYaml . | nindent 4 }} 14 | {{- end }} 15 | rules: 16 | - apiGroups: 17 | - admissionregistration.k8s.io 18 | resources: 19 | - validatingwebhookconfigurations 20 | verbs: 21 | - get 22 | - update 23 | {{- if .Values.podSecurityPolicy.enabled }} 24 | - apiGroups: [{{ template "podSecurityPolicy.apiGroup" . }}] 25 | resources: ['podsecuritypolicies'] 26 | verbs: ['use'] 27 | {{- with .Values.controller.admissionWebhooks.existingPsp }} 28 | resourceNames: [{{ . }}] 29 | {{- else }} 30 | resourceNames: [{{ include "ingress-nginx.admissionWebhooks.fullname" . }}] 31 | {{- end }} 32 | {{- end }} 33 | {{- end }} 34 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/templates/admission-webhooks/job-patch/clusterrolebinding.yaml: -------------------------------------------------------------------------------- 1 | {{- if and .Values.controller.admissionWebhooks.enabled .Values.controller.admissionWebhooks.patch.enabled (not .Values.controller.admissionWebhooks.certManager.enabled) -}} 2 | apiVersion: rbac.authorization.k8s.io/v1 3 | kind: ClusterRoleBinding 4 | metadata: 5 | name: {{ include "ingress-nginx.admissionWebhooks.fullname" . }} 6 | annotations: 7 | "helm.sh/hook": pre-install,pre-upgrade,post-install,post-upgrade 8 | "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded 9 | labels: 10 | {{- include "ingress-nginx.labels" . | nindent 4 }} 11 | app.kubernetes.io/component: admission-webhook 12 | {{- with .Values.controller.admissionWebhooks.patch.labels }} 13 | {{- toYaml . | nindent 4 }} 14 | {{- end }} 15 | roleRef: 16 | apiGroup: rbac.authorization.k8s.io 17 | kind: ClusterRole 18 | name: {{ include "ingress-nginx.admissionWebhooks.fullname" . }} 19 | subjects: 20 | - kind: ServiceAccount 21 | name: {{ include "ingress-nginx.admissionWebhooks.fullname" . }} 22 | namespace: {{ include "ingress-nginx.namespace" . }} 23 | {{- end }} 24 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/templates/admission-webhooks/job-patch/networkpolicy.yaml: -------------------------------------------------------------------------------- 1 | {{- if and .Values.controller.admissionWebhooks.enabled .Values.controller.admissionWebhooks.patch.enabled .Values.controller.admissionWebhooks.patch.networkPolicy.enabled (not .Values.controller.admissionWebhooks.certManager.enabled) -}} 2 | apiVersion: networking.k8s.io/v1 3 | kind: NetworkPolicy 4 | metadata: 5 | name: {{ include "ingress-nginx.admissionWebhooks.fullname" . }} 6 | namespace: {{ include "ingress-nginx.namespace" . }} 7 | annotations: 8 | "helm.sh/hook": pre-install,pre-upgrade,post-install,post-upgrade 9 | "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded 10 | labels: 11 | {{- include "ingress-nginx.labels" . | nindent 4 }} 12 | app.kubernetes.io/component: admission-webhook 13 | {{- with .Values.controller.admissionWebhooks.patch.labels }} 14 | {{- toYaml . | nindent 4 }} 15 | {{- end }} 16 | spec: 17 | podSelector: 18 | matchLabels: 19 | {{- include "ingress-nginx.selectorLabels" . | nindent 6 }} 20 | app.kubernetes.io/component: admission-webhook 21 | policyTypes: 22 | - Ingress 23 | - Egress 24 | egress: 25 | - {} 26 | {{- end }} 27 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/templates/admission-webhooks/job-patch/psp.yaml: -------------------------------------------------------------------------------- 1 | {{- if (semverCompare "<1.25.0-0" .Capabilities.KubeVersion.Version) }} 2 | {{- if and .Values.podSecurityPolicy.enabled .Values.controller.admissionWebhooks.enabled .Values.controller.admissionWebhooks.patch.enabled (empty .Values.controller.admissionWebhooks.existingPsp) -}} 3 | apiVersion: policy/v1beta1 4 | kind: PodSecurityPolicy 5 | metadata: 6 | name: {{ include "ingress-nginx.admissionWebhooks.fullname" . }} 7 | annotations: 8 | "helm.sh/hook": pre-install,pre-upgrade,post-install,post-upgrade 9 | "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded 10 | seccomp.security.alpha.kubernetes.io/allowedProfileNames: "*" 11 | labels: 12 | {{- include "ingress-nginx.labels" . | nindent 4 }} 13 | app.kubernetes.io/component: admission-webhook 14 | {{- with .Values.controller.admissionWebhooks.patch.labels }} 15 | {{- toYaml . | nindent 4 }} 16 | {{- end }} 17 | spec: 18 | privileged: false 19 | hostPID: false 20 | hostIPC: false 21 | hostNetwork: false 22 | volumes: 23 | - configMap 24 | - downwardAPI 25 | - emptyDir 26 | - secret 27 | - projected 28 | fsGroup: 29 | rule: MustRunAs 30 | ranges: 31 | - min: 1 32 | max: 65535 33 | readOnlyRootFilesystem: true 34 | runAsUser: 35 | rule: MustRunAsNonRoot 36 | runAsGroup: 37 | rule: MustRunAs 38 | ranges: 39 | - min: 1 40 | max: 65535 41 | supplementalGroups: 42 | rule: MustRunAs 43 | ranges: 44 | - min: 1 45 | max: 65535 46 | allowPrivilegeEscalation: false 47 | requiredDropCapabilities: 48 | - ALL 49 | seLinux: 50 | rule: RunAsAny 51 | {{- end }} 52 | {{- end }} 53 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/templates/admission-webhooks/job-patch/role.yaml: -------------------------------------------------------------------------------- 1 | {{- if and .Values.controller.admissionWebhooks.enabled .Values.controller.admissionWebhooks.patch.enabled (not .Values.controller.admissionWebhooks.certManager.enabled) -}} 2 | apiVersion: rbac.authorization.k8s.io/v1 3 | kind: Role 4 | metadata: 5 | name: {{ include "ingress-nginx.admissionWebhooks.fullname" . }} 6 | namespace: {{ include "ingress-nginx.namespace" . }} 7 | annotations: 8 | "helm.sh/hook": pre-install,pre-upgrade,post-install,post-upgrade 9 | "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded 10 | labels: 11 | {{- include "ingress-nginx.labels" . | nindent 4 }} 12 | app.kubernetes.io/component: admission-webhook 13 | {{- with .Values.controller.admissionWebhooks.patch.labels }} 14 | {{- toYaml . | nindent 4 }} 15 | {{- end }} 16 | rules: 17 | - apiGroups: 18 | - "" 19 | resources: 20 | - secrets 21 | verbs: 22 | - get 23 | - create 24 | {{- end }} 25 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/templates/admission-webhooks/job-patch/rolebinding.yaml: -------------------------------------------------------------------------------- 1 | {{- if and .Values.controller.admissionWebhooks.enabled .Values.controller.admissionWebhooks.patch.enabled (not .Values.controller.admissionWebhooks.certManager.enabled) -}} 2 | apiVersion: rbac.authorization.k8s.io/v1 3 | kind: RoleBinding 4 | metadata: 5 | name: {{ include "ingress-nginx.admissionWebhooks.fullname" . }} 6 | namespace: {{ include "ingress-nginx.namespace" . }} 7 | annotations: 8 | "helm.sh/hook": pre-install,pre-upgrade,post-install,post-upgrade 9 | "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded 10 | labels: 11 | {{- include "ingress-nginx.labels" . | nindent 4 }} 12 | app.kubernetes.io/component: admission-webhook 13 | {{- with .Values.controller.admissionWebhooks.patch.labels }} 14 | {{- toYaml . | nindent 4 }} 15 | {{- end }} 16 | roleRef: 17 | apiGroup: rbac.authorization.k8s.io 18 | kind: Role 19 | name: {{ include "ingress-nginx.admissionWebhooks.fullname" . }} 20 | subjects: 21 | - kind: ServiceAccount 22 | name: {{ include "ingress-nginx.admissionWebhooks.fullname" . }} 23 | namespace: {{ include "ingress-nginx.namespace" . }} 24 | {{- end }} 25 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/templates/admission-webhooks/job-patch/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | {{- if and .Values.controller.admissionWebhooks.enabled .Values.controller.admissionWebhooks.patch.enabled (not .Values.controller.admissionWebhooks.certManager.enabled) -}} 2 | apiVersion: v1 3 | kind: ServiceAccount 4 | metadata: 5 | name: {{ include "ingress-nginx.admissionWebhooks.fullname" . }} 6 | namespace: {{ include "ingress-nginx.namespace" . }} 7 | annotations: 8 | "helm.sh/hook": pre-install,pre-upgrade,post-install,post-upgrade 9 | "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded 10 | labels: 11 | {{- include "ingress-nginx.labels" . | nindent 4 }} 12 | app.kubernetes.io/component: admission-webhook 13 | {{- with .Values.controller.admissionWebhooks.patch.labels }} 14 | {{- toYaml . | nindent 4 }} 15 | {{- end }} 16 | {{- end }} 17 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/templates/clusterrolebinding.yaml: -------------------------------------------------------------------------------- 1 | {{- if and .Values.rbac.create (not .Values.rbac.scope) -}} 2 | apiVersion: rbac.authorization.k8s.io/v1 3 | kind: ClusterRoleBinding 4 | metadata: 5 | labels: 6 | {{- include "ingress-nginx.labels" . | nindent 4 }} 7 | {{- with .Values.controller.labels }} 8 | {{- toYaml . | nindent 4 }} 9 | {{- end }} 10 | name: {{ include "ingress-nginx.fullname" . }} 11 | roleRef: 12 | apiGroup: rbac.authorization.k8s.io 13 | kind: ClusterRole 14 | name: {{ include "ingress-nginx.fullname" . }} 15 | subjects: 16 | - kind: ServiceAccount 17 | name: {{ template "ingress-nginx.serviceAccountName" . }} 18 | namespace: {{ include "ingress-nginx.namespace" . }} 19 | {{- end }} 20 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/templates/controller-configmap-addheaders.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.controller.addHeaders -}} 2 | apiVersion: v1 3 | kind: ConfigMap 4 | metadata: 5 | labels: 6 | {{- include "ingress-nginx.labels" . | nindent 4 }} 7 | app.kubernetes.io/component: controller 8 | {{- with .Values.controller.labels }} 9 | {{- toYaml . | nindent 4 }} 10 | {{- end }} 11 | name: {{ include "ingress-nginx.fullname" . }}-custom-add-headers 12 | namespace: {{ include "ingress-nginx.namespace" . }} 13 | data: {{ toYaml .Values.controller.addHeaders | nindent 2 }} 14 | {{- end }} 15 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/templates/controller-configmap-proxyheaders.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.controller.proxySetHeaders -}} 2 | apiVersion: v1 3 | kind: ConfigMap 4 | metadata: 5 | labels: 6 | {{- include "ingress-nginx.labels" . | nindent 4 }} 7 | app.kubernetes.io/component: controller 8 | {{- with .Values.controller.labels }} 9 | {{- toYaml . | nindent 4 }} 10 | {{- end }} 11 | name: {{ include "ingress-nginx.fullname" . }}-custom-proxy-headers 12 | namespace: {{ include "ingress-nginx.namespace" . }} 13 | data: {{ toYaml .Values.controller.proxySetHeaders | nindent 2 }} 14 | {{- end }} 15 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/templates/controller-configmap-tcp.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.tcp -}} 2 | apiVersion: v1 3 | kind: ConfigMap 4 | metadata: 5 | labels: 6 | {{- include "ingress-nginx.labels" . | nindent 4 }} 7 | app.kubernetes.io/component: controller 8 | {{- with .Values.controller.labels }} 9 | {{- toYaml . | nindent 4 }} 10 | {{- end }} 11 | {{- if .Values.controller.tcp.annotations }} 12 | annotations: {{ toYaml .Values.controller.tcp.annotations | nindent 4 }} 13 | {{- end }} 14 | name: {{ include "ingress-nginx.fullname" . }}-tcp 15 | namespace: {{ include "ingress-nginx.namespace" . }} 16 | data: {{ tpl (toYaml .Values.tcp) . | nindent 2 }} 17 | {{- end }} 18 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/templates/controller-configmap-udp.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.udp -}} 2 | apiVersion: v1 3 | kind: ConfigMap 4 | metadata: 5 | labels: 6 | {{- include "ingress-nginx.labels" . | nindent 4 }} 7 | app.kubernetes.io/component: controller 8 | {{- with .Values.controller.labels }} 9 | {{- toYaml . | nindent 4 }} 10 | {{- end }} 11 | {{- if .Values.controller.udp.annotations }} 12 | annotations: {{ toYaml .Values.controller.udp.annotations | nindent 4 }} 13 | {{- end }} 14 | name: {{ include "ingress-nginx.fullname" . }}-udp 15 | namespace: {{ include "ingress-nginx.namespace" . }} 16 | data: {{ tpl (toYaml .Values.udp) . | nindent 2 }} 17 | {{- end }} 18 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/templates/controller-configmap.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | labels: 5 | {{- include "ingress-nginx.labels" . | nindent 4 }} 6 | app.kubernetes.io/component: controller 7 | {{- with .Values.controller.labels }} 8 | {{- toYaml . | nindent 4 }} 9 | {{- end }} 10 | {{- if .Values.controller.configAnnotations }} 11 | annotations: {{ toYaml .Values.controller.configAnnotations | nindent 4 }} 12 | {{- end }} 13 | name: {{ include "ingress-nginx.controller.fullname" . }} 14 | namespace: {{ include "ingress-nginx.namespace" . }} 15 | data: 16 | allow-snippet-annotations: "{{ .Values.controller.allowSnippetAnnotations }}" 17 | {{- if .Values.controller.addHeaders }} 18 | add-headers: {{ include "ingress-nginx.namespace" . }}/{{ include "ingress-nginx.fullname" . }}-custom-add-headers 19 | {{- end }} 20 | {{- if .Values.controller.proxySetHeaders }} 21 | proxy-set-headers: {{ include "ingress-nginx.namespace" . }}/{{ include "ingress-nginx.fullname" . }}-custom-proxy-headers 22 | {{- end }} 23 | {{- if .Values.dhParam }} 24 | ssl-dh-param: {{ include "ingress-nginx.namespace" . }}/{{ include "ingress-nginx.controller.fullname" . }} 25 | {{- end }} 26 | {{- range $key, $value := .Values.controller.config }} 27 | {{- $key | nindent 2 }}: {{ $value | quote }} 28 | {{- end }} 29 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/templates/controller-ingressclass.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.controller.ingressClassResource.enabled -}} 2 | apiVersion: networking.k8s.io/v1 3 | kind: IngressClass 4 | metadata: 5 | labels: 6 | {{- include "ingress-nginx.labels" . | nindent 4 }} 7 | app.kubernetes.io/component: controller 8 | {{- with .Values.controller.labels }} 9 | {{- toYaml . | nindent 4 }} 10 | {{- end }} 11 | name: {{ .Values.controller.ingressClassResource.name }} 12 | {{- if .Values.controller.ingressClassResource.default }} 13 | annotations: 14 | ingressclass.kubernetes.io/is-default-class: "true" 15 | {{- end }} 16 | spec: 17 | controller: {{ .Values.controller.ingressClassResource.controllerValue }} 18 | {{- with .Values.controller.ingressClassResource.parameters }} 19 | parameters: {{ toYaml . | nindent 4 }} 20 | {{- end }} 21 | {{- end }} 22 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/templates/controller-networkpolicy.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.controller.networkPolicy.enabled }} 2 | apiVersion: networking.k8s.io/v1 3 | kind: NetworkPolicy 4 | metadata: 5 | labels: 6 | {{- include "ingress-nginx.labels" . | nindent 4 }} 7 | app.kubernetes.io/component: controller 8 | {{- with .Values.controller.labels }} 9 | {{- toYaml . | nindent 4 }} 10 | {{- end }} 11 | name: {{ include "ingress-nginx.controller.fullname" . }} 12 | namespace: {{ include "ingress-nginx.namespace" . }} 13 | spec: 14 | podSelector: 15 | matchLabels: 16 | {{- include "ingress-nginx.selectorLabels" . | nindent 6 }} 17 | app.kubernetes.io/component: controller 18 | policyTypes: 19 | - Ingress 20 | - Egress 21 | ingress: 22 | - ports: 23 | {{- range $key, $value := .Values.controller.containerPort }} 24 | - protocol: TCP 25 | port: {{ $value }} 26 | {{- end }} 27 | {{- if .Values.controller.metrics.enabled }} 28 | - protocol: TCP 29 | port: {{ .Values.controller.metrics.port }} 30 | {{- end }} 31 | {{- if .Values.controller.admissionWebhooks.enabled }} 32 | - protocol: TCP 33 | port: {{ .Values.controller.admissionWebhooks.port }} 34 | {{- end }} 35 | {{- range $key, $value := .Values.tcp }} 36 | - protocol: TCP 37 | port: {{ $key }} 38 | {{- end }} 39 | {{- range $key, $value := .Values.udp }} 40 | - protocol: UDP 41 | port: {{ $key }} 42 | {{- end }} 43 | egress: 44 | - {} 45 | {{- end }} 46 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/templates/controller-poddisruptionbudget.yaml: -------------------------------------------------------------------------------- 1 | # PDB is not supported for DaemonSets. 2 | # https://github.com/kubernetes/kubernetes/issues/108124 3 | {{- if eq .Values.controller.kind "Deployment" }} 4 | {{- $replicas := .Values.controller.replicaCount }} 5 | {{- if and .Values.controller.autoscaling.enabled (not .Values.controller.keda.enabled) }} 6 | {{- $replicas = .Values.controller.autoscaling.minReplicas }} 7 | {{- else if and .Values.controller.keda.enabled (not .Values.controller.autoscaling.enabled) }} 8 | {{- $replicas = .Values.controller.keda.minReplicas }} 9 | {{- end }} 10 | {{- if gt ($replicas | int) 1 }} 11 | apiVersion: {{ ternary "policy/v1" "policy/v1beta1" (semverCompare ">=1.21.0-0" .Capabilities.KubeVersion.Version) }} 12 | kind: PodDisruptionBudget 13 | metadata: 14 | labels: 15 | {{- include "ingress-nginx.labels" . | nindent 4 }} 16 | app.kubernetes.io/component: controller 17 | {{- with .Values.controller.labels }} 18 | {{- toYaml . | nindent 4 }} 19 | {{- end }} 20 | name: {{ include "ingress-nginx.controller.fullname" . }} 21 | namespace: {{ include "ingress-nginx.namespace" . }} 22 | {{- if .Values.controller.annotations }} 23 | annotations: {{ toYaml .Values.controller.annotations | nindent 4 }} 24 | {{- end }} 25 | spec: 26 | selector: 27 | matchLabels: 28 | {{- include "ingress-nginx.selectorLabels" . | nindent 6 }} 29 | app.kubernetes.io/component: controller 30 | {{- if and .Values.controller.minAvailable (not (hasKey .Values.controller "maxUnavailable")) }} 31 | minAvailable: {{ .Values.controller.minAvailable }} 32 | {{- else if .Values.controller.maxUnavailable }} 33 | maxUnavailable: {{ .Values.controller.maxUnavailable }} 34 | {{- end }} 35 | {{- end }} 36 | {{- end }} 37 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/templates/controller-prometheusrules.yaml: -------------------------------------------------------------------------------- 1 | {{- if and .Values.controller.metrics.enabled .Values.controller.metrics.prometheusRule.enabled -}} 2 | apiVersion: monitoring.coreos.com/v1 3 | kind: PrometheusRule 4 | metadata: 5 | name: {{ include "ingress-nginx.controller.fullname" . }} 6 | {{- if .Values.controller.metrics.prometheusRule.namespace }} 7 | namespace: {{ .Values.controller.metrics.prometheusRule.namespace }} 8 | {{- else }} 9 | namespace: {{ include "ingress-nginx.namespace" . }} 10 | {{- end }} 11 | labels: 12 | {{- include "ingress-nginx.labels" . | nindent 4 }} 13 | app.kubernetes.io/component: controller 14 | {{- if .Values.controller.metrics.prometheusRule.additionalLabels }} 15 | {{- toYaml .Values.controller.metrics.prometheusRule.additionalLabels | nindent 4 }} 16 | {{- end }} 17 | spec: 18 | {{- if .Values.controller.metrics.prometheusRule.rules }} 19 | groups: 20 | - name: {{ template "ingress-nginx.name" . }} 21 | rules: {{- toYaml .Values.controller.metrics.prometheusRule.rules | nindent 4 }} 22 | {{- end }} 23 | {{- end }} 24 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/templates/controller-rolebinding.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.rbac.create -}} 2 | apiVersion: rbac.authorization.k8s.io/v1 3 | kind: RoleBinding 4 | metadata: 5 | labels: 6 | {{- include "ingress-nginx.labels" . | nindent 4 }} 7 | app.kubernetes.io/component: controller 8 | {{- with .Values.controller.labels }} 9 | {{- toYaml . | nindent 4 }} 10 | {{- end }} 11 | name: {{ include "ingress-nginx.fullname" . }} 12 | namespace: {{ include "ingress-nginx.namespace" . }} 13 | roleRef: 14 | apiGroup: rbac.authorization.k8s.io 15 | kind: Role 16 | name: {{ include "ingress-nginx.fullname" . }} 17 | subjects: 18 | - kind: ServiceAccount 19 | name: {{ template "ingress-nginx.serviceAccountName" . }} 20 | namespace: {{ include "ingress-nginx.namespace" . }} 21 | {{- end }} 22 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/templates/controller-secret.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.dhParam -}} 2 | apiVersion: v1 3 | kind: Secret 4 | metadata: 5 | labels: 6 | {{- include "ingress-nginx.labels" . | nindent 4 }} 7 | app.kubernetes.io/component: controller 8 | {{- with .Values.controller.labels }} 9 | {{- toYaml . | nindent 4 }} 10 | {{- end }} 11 | name: {{ include "ingress-nginx.controller.fullname" . }} 12 | namespace: {{ include "ingress-nginx.namespace" . }} 13 | data: 14 | dhparam.pem: {{ .Values.dhParam }} 15 | {{- end }} 16 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/templates/controller-serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | {{- if or .Values.serviceAccount.create -}} 2 | apiVersion: v1 3 | kind: ServiceAccount 4 | metadata: 5 | labels: 6 | {{- include "ingress-nginx.labels" . | nindent 4 }} 7 | app.kubernetes.io/component: controller 8 | {{- with .Values.controller.labels }} 9 | {{- toYaml . | nindent 4 }} 10 | {{- end }} 11 | name: {{ template "ingress-nginx.serviceAccountName" . }} 12 | namespace: {{ include "ingress-nginx.namespace" . }} 13 | {{- if .Values.serviceAccount.annotations }} 14 | annotations: {{ toYaml .Values.serviceAccount.annotations | nindent 4 }} 15 | {{- end }} 16 | automountServiceAccountToken: {{ .Values.serviceAccount.automountServiceAccountToken }} 17 | {{- end }} 18 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/templates/default-backend-extra-configmaps.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.defaultBackend.enabled }} 2 | {{- range .Values.defaultBackend.extraConfigMaps }} 3 | --- 4 | apiVersion: v1 5 | kind: ConfigMap 6 | metadata: 7 | labels: 8 | {{- include "ingress-nginx.labels" $ | nindent 4 }} 9 | app.kubernetes.io/component: default-backend 10 | {{- with $.Values.defaultBackend.labels }} 11 | {{- toYaml . | nindent 4 }} 12 | {{- end }} 13 | {{- with .labels }} 14 | {{- toYaml . | nindent 4 }} 15 | {{- end }} 16 | name: {{ .name }} 17 | namespace: {{ include "ingress-nginx.namespace" $ }} 18 | data: 19 | {{- with .data }} 20 | {{- toYaml . | nindent 2 }} 21 | {{- end }} 22 | {{- end }} 23 | {{- end }} 24 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/templates/default-backend-hpa.yaml: -------------------------------------------------------------------------------- 1 | {{- if and .Values.defaultBackend.enabled .Values.defaultBackend.autoscaling.enabled }} 2 | apiVersion: {{ ternary "autoscaling/v2" "autoscaling/v2beta2" (.Capabilities.APIVersions.Has "autoscaling/v2") }} 3 | kind: HorizontalPodAutoscaler 4 | metadata: 5 | {{- with .Values.defaultBackend.autoscaling.annotations }} 6 | annotations: {{ toYaml . | nindent 4 }} 7 | {{- end }} 8 | labels: 9 | {{- include "ingress-nginx.labels" . | nindent 4 }} 10 | app.kubernetes.io/component: default-backend 11 | {{- with .Values.defaultBackend.labels }} 12 | {{- toYaml . | nindent 4 }} 13 | {{- end }} 14 | name: {{ include "ingress-nginx.defaultBackend.fullname" . }} 15 | namespace: {{ include "ingress-nginx.namespace" . }} 16 | spec: 17 | scaleTargetRef: 18 | apiVersion: apps/v1 19 | kind: Deployment 20 | name: {{ include "ingress-nginx.defaultBackend.fullname" . }} 21 | minReplicas: {{ .Values.defaultBackend.autoscaling.minReplicas }} 22 | maxReplicas: {{ .Values.defaultBackend.autoscaling.maxReplicas }} 23 | metrics: 24 | {{- with .Values.defaultBackend.autoscaling.targetMemoryUtilizationPercentage }} 25 | - type: Resource 26 | resource: 27 | name: memory 28 | target: 29 | type: Utilization 30 | averageUtilization: {{ . }} 31 | {{- end }} 32 | {{- with .Values.defaultBackend.autoscaling.targetCPUUtilizationPercentage }} 33 | - type: Resource 34 | resource: 35 | name: cpu 36 | target: 37 | type: Utilization 38 | averageUtilization: {{ . }} 39 | {{- end }} 40 | {{- end }} 41 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/templates/default-backend-networkpolicy.yaml: -------------------------------------------------------------------------------- 1 | {{- if and .Values.defaultBackend.enabled .Values.defaultBackend.networkPolicy.enabled }} 2 | apiVersion: networking.k8s.io/v1 3 | kind: NetworkPolicy 4 | metadata: 5 | labels: 6 | {{- include "ingress-nginx.labels" . | nindent 4 }} 7 | app.kubernetes.io/component: default-backend 8 | {{- with .Values.defaultBackend.labels }} 9 | {{- toYaml . | nindent 4 }} 10 | {{- end }} 11 | name: {{ include "ingress-nginx.defaultBackend.fullname" . }} 12 | namespace: {{ include "ingress-nginx.namespace" . }} 13 | spec: 14 | podSelector: 15 | matchLabels: 16 | {{- include "ingress-nginx.selectorLabels" . | nindent 6 }} 17 | app.kubernetes.io/component: default-backend 18 | policyTypes: 19 | - Ingress 20 | - Egress 21 | ingress: 22 | - ports: 23 | - protocol: TCP 24 | port: {{ .Values.defaultBackend.port }} 25 | {{- end }} 26 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/templates/default-backend-poddisruptionbudget.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.defaultBackend.enabled -}} 2 | {{- if or (gt (.Values.defaultBackend.replicaCount | int) 1) (gt (.Values.defaultBackend.autoscaling.minReplicas | int) 1) }} 3 | apiVersion: {{ ternary "policy/v1" "policy/v1beta1" (semverCompare ">=1.21.0-0" .Capabilities.KubeVersion.Version) }} 4 | kind: PodDisruptionBudget 5 | metadata: 6 | labels: 7 | {{- include "ingress-nginx.labels" . | nindent 4 }} 8 | app.kubernetes.io/component: default-backend 9 | {{- with .Values.defaultBackend.labels }} 10 | {{- toYaml . | nindent 4 }} 11 | {{- end }} 12 | name: {{ include "ingress-nginx.defaultBackend.fullname" . }} 13 | namespace: {{ include "ingress-nginx.namespace" . }} 14 | spec: 15 | selector: 16 | matchLabels: 17 | {{- include "ingress-nginx.selectorLabels" . | nindent 6 }} 18 | app.kubernetes.io/component: default-backend 19 | minAvailable: {{ .Values.defaultBackend.minAvailable }} 20 | {{- end }} 21 | {{- end }} 22 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/templates/default-backend-psp.yaml: -------------------------------------------------------------------------------- 1 | {{- if (semverCompare "<1.25.0-0" .Capabilities.KubeVersion.Version) }} 2 | {{- if and .Values.podSecurityPolicy.enabled .Values.defaultBackend.enabled (empty .Values.defaultBackend.existingPsp) -}} 3 | apiVersion: policy/v1beta1 4 | kind: PodSecurityPolicy 5 | metadata: 6 | name: {{ include "ingress-nginx.fullname" . }}-backend 7 | annotations: 8 | seccomp.security.alpha.kubernetes.io/allowedProfileNames: "*" 9 | labels: 10 | {{- include "ingress-nginx.labels" . | nindent 4 }} 11 | app.kubernetes.io/component: default-backend 12 | {{- with .Values.defaultBackend.labels }} 13 | {{- toYaml . | nindent 4 }} 14 | {{- end }} 15 | spec: 16 | privileged: false 17 | hostPID: false 18 | hostIPC: false 19 | hostNetwork: false 20 | volumes: 21 | - configMap 22 | - downwardAPI 23 | - emptyDir 24 | - secret 25 | - projected 26 | fsGroup: 27 | rule: MustRunAs 28 | ranges: 29 | - min: 1 30 | max: 65535 31 | readOnlyRootFilesystem: true 32 | runAsUser: 33 | rule: MustRunAsNonRoot 34 | runAsGroup: 35 | rule: MustRunAs 36 | ranges: 37 | - min: 1 38 | max: 65535 39 | supplementalGroups: 40 | rule: MustRunAs 41 | ranges: 42 | - min: 1 43 | max: 65535 44 | allowPrivilegeEscalation: false 45 | requiredDropCapabilities: 46 | - ALL 47 | seLinux: 48 | rule: RunAsAny 49 | {{- end }} 50 | {{- end }} 51 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/templates/default-backend-role.yaml: -------------------------------------------------------------------------------- 1 | {{- if and .Values.rbac.create .Values.podSecurityPolicy.enabled .Values.defaultBackend.enabled -}} 2 | apiVersion: rbac.authorization.k8s.io/v1 3 | kind: Role 4 | metadata: 5 | labels: 6 | {{- include "ingress-nginx.labels" . | nindent 4 }} 7 | app.kubernetes.io/component: default-backend 8 | {{- with .Values.defaultBackend.labels }} 9 | {{- toYaml . | nindent 4 }} 10 | {{- end }} 11 | name: {{ include "ingress-nginx.fullname" . }}-backend 12 | namespace: {{ include "ingress-nginx.namespace" . }} 13 | rules: 14 | - apiGroups: [{{ template "podSecurityPolicy.apiGroup" . }}] 15 | resources: ['podsecuritypolicies'] 16 | verbs: ['use'] 17 | {{- with .Values.defaultBackend.existingPsp }} 18 | resourceNames: [{{ . }}] 19 | {{- else }} 20 | resourceNames: [{{ include "ingress-nginx.fullname" . }}-backend] 21 | {{- end }} 22 | {{- end }} 23 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/templates/default-backend-rolebinding.yaml: -------------------------------------------------------------------------------- 1 | {{- if and .Values.rbac.create .Values.podSecurityPolicy.enabled .Values.defaultBackend.enabled -}} 2 | apiVersion: rbac.authorization.k8s.io/v1 3 | kind: RoleBinding 4 | metadata: 5 | labels: 6 | {{- include "ingress-nginx.labels" . | nindent 4 }} 7 | app.kubernetes.io/component: default-backend 8 | {{- with .Values.defaultBackend.labels }} 9 | {{- toYaml . | nindent 4 }} 10 | {{- end }} 11 | name: {{ include "ingress-nginx.fullname" . }}-backend 12 | namespace: {{ include "ingress-nginx.namespace" . }} 13 | roleRef: 14 | apiGroup: rbac.authorization.k8s.io 15 | kind: Role 16 | name: {{ include "ingress-nginx.fullname" . }}-backend 17 | subjects: 18 | - kind: ServiceAccount 19 | name: {{ template "ingress-nginx.defaultBackend.serviceAccountName" . }} 20 | namespace: {{ include "ingress-nginx.namespace" . }} 21 | {{- end }} 22 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/templates/default-backend-service.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.defaultBackend.enabled -}} 2 | apiVersion: v1 3 | kind: Service 4 | metadata: 5 | {{- if .Values.defaultBackend.service.annotations }} 6 | annotations: {{ toYaml .Values.defaultBackend.service.annotations | nindent 4 }} 7 | {{- end }} 8 | labels: 9 | {{- include "ingress-nginx.labels" . | nindent 4 }} 10 | app.kubernetes.io/component: default-backend 11 | {{- with .Values.defaultBackend.labels }} 12 | {{- toYaml . | nindent 4 }} 13 | {{- end }} 14 | name: {{ include "ingress-nginx.defaultBackend.fullname" . }} 15 | namespace: {{ include "ingress-nginx.namespace" . }} 16 | spec: 17 | type: {{ .Values.defaultBackend.service.type }} 18 | {{- if .Values.defaultBackend.service.clusterIP }} 19 | clusterIP: {{ .Values.defaultBackend.service.clusterIP }} 20 | {{- end }} 21 | {{- if .Values.defaultBackend.service.externalIPs }} 22 | externalIPs: {{ toYaml .Values.defaultBackend.service.externalIPs | nindent 4 }} 23 | {{- end }} 24 | {{- if .Values.defaultBackend.service.loadBalancerIP }} 25 | loadBalancerIP: {{ .Values.defaultBackend.service.loadBalancerIP }} 26 | {{- end }} 27 | {{- if .Values.defaultBackend.service.loadBalancerSourceRanges }} 28 | loadBalancerSourceRanges: {{ toYaml .Values.defaultBackend.service.loadBalancerSourceRanges | nindent 4 }} 29 | {{- end }} 30 | ports: 31 | - name: http 32 | port: {{ .Values.defaultBackend.service.servicePort }} 33 | protocol: TCP 34 | targetPort: http 35 | {{- if semverCompare ">=1.20.0-0" .Capabilities.KubeVersion.Version }} 36 | appProtocol: http 37 | {{- end }} 38 | selector: 39 | {{- include "ingress-nginx.selectorLabels" . | nindent 4 }} 40 | app.kubernetes.io/component: default-backend 41 | {{- end }} 42 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/templates/default-backend-serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | {{- if and .Values.defaultBackend.enabled .Values.defaultBackend.serviceAccount.create -}} 2 | apiVersion: v1 3 | kind: ServiceAccount 4 | metadata: 5 | labels: 6 | {{- include "ingress-nginx.labels" . | nindent 4 }} 7 | app.kubernetes.io/component: default-backend 8 | {{- with .Values.defaultBackend.labels }} 9 | {{- toYaml . | nindent 4 }} 10 | {{- end }} 11 | name: {{ template "ingress-nginx.defaultBackend.serviceAccountName" . }} 12 | namespace: {{ include "ingress-nginx.namespace" . }} 13 | automountServiceAccountToken: {{ .Values.defaultBackend.serviceAccount.automountServiceAccountToken }} 14 | {{- end }} 15 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/tests/controller-configmap-addheaders_test.yaml: -------------------------------------------------------------------------------- 1 | suite: Controller > ConfigMap > Add Headers 2 | templates: 3 | - controller-configmap-addheaders.yaml 4 | 5 | tests: 6 | - it: should not create a ConfigMap if `controller.addHeaders` is not set 7 | set: 8 | controller.addHeaders: null 9 | asserts: 10 | - hasDocuments: 11 | count: 0 12 | 13 | - it: should create a ConfigMap if `controller.addHeaders` is set 14 | set: 15 | controller.addHeaders: 16 | X-Another-Custom-Header: Value 17 | asserts: 18 | - hasDocuments: 19 | count: 1 20 | - isKind: 21 | of: ConfigMap 22 | - equal: 23 | path: metadata.name 24 | value: RELEASE-NAME-ingress-nginx-custom-add-headers 25 | - equal: 26 | path: data.X-Another-Custom-Header 27 | value: Value 28 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/tests/controller-configmap-proxyheaders_test.yaml: -------------------------------------------------------------------------------- 1 | suite: Controller > ConfigMap > Proxy Headers 2 | templates: 3 | - controller-configmap-proxyheaders.yaml 4 | 5 | tests: 6 | - it: should not create a ConfigMap if `controller.proxySetHeaders` is not set 7 | set: 8 | controller.proxySetHeaders: null 9 | asserts: 10 | - hasDocuments: 11 | count: 0 12 | 13 | - it: should create a ConfigMap if `controller.proxySetHeaders` is set 14 | set: 15 | controller.proxySetHeaders: 16 | X-Custom-Header: Value 17 | asserts: 18 | - hasDocuments: 19 | count: 1 20 | - isKind: 21 | of: ConfigMap 22 | - equal: 23 | path: metadata.name 24 | value: RELEASE-NAME-ingress-nginx-custom-proxy-headers 25 | - equal: 26 | path: data.X-Custom-Header 27 | value: Value 28 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/tests/controller-configmap_test.yaml: -------------------------------------------------------------------------------- 1 | suite: Controller > ConfigMap 2 | templates: 3 | - controller-configmap.yaml 4 | 5 | tests: 6 | - it: should create a ConfigMap 7 | asserts: 8 | - hasDocuments: 9 | count: 1 10 | - isKind: 11 | of: ConfigMap 12 | - equal: 13 | path: metadata.name 14 | value: RELEASE-NAME-ingress-nginx-controller 15 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/tests/controller-hpa_test.yaml: -------------------------------------------------------------------------------- 1 | suite: Controller > HPA 2 | templates: 3 | - controller-hpa.yaml 4 | 5 | tests: 6 | - it: should create an HPA if `controller.autoscaling.enabled` is true 7 | set: 8 | controller.autoscaling.enabled: true 9 | asserts: 10 | - hasDocuments: 11 | count: 1 12 | - isKind: 13 | of: HorizontalPodAutoscaler 14 | - equal: 15 | path: metadata.name 16 | value: RELEASE-NAME-ingress-nginx-controller 17 | 18 | - it: should not create an HPA if `controller.autoscaling.enabled` is true and `controller.keda.enabled` is true 19 | set: 20 | controller.autoscaling.enabled: true 21 | controller.keda.enabled: true 22 | asserts: 23 | - hasDocuments: 24 | count: 0 25 | 26 | - it: should not create an HPA if `controller.kind` is "DaemonSet" 27 | set: 28 | controller.kind: DaemonSet 29 | asserts: 30 | - hasDocuments: 31 | count: 0 32 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/tests/controller-keda_test.yaml: -------------------------------------------------------------------------------- 1 | suite: Controller > KEDA 2 | templates: 3 | - controller-keda.yaml 4 | 5 | tests: 6 | - it: should create a ScaledObject if `controller.keda.enabled` is true 7 | set: 8 | controller.keda.enabled: true 9 | asserts: 10 | - hasDocuments: 11 | count: 1 12 | - isKind: 13 | of: ScaledObject 14 | - equal: 15 | path: metadata.name 16 | value: RELEASE-NAME-ingress-nginx-controller 17 | 18 | - it: should not create a ScaledObject if `controller.keda.enabled` is true and `controller.autoscaling.enabled` is true 19 | set: 20 | controller.keda.enabled: true 21 | controller.autoscaling.enabled: true 22 | asserts: 23 | - hasDocuments: 24 | count: 0 25 | 26 | - it: should not create a ScaledObject if `controller.kind` is "DaemonSet" 27 | set: 28 | controller.kind: DaemonSet 29 | asserts: 30 | - hasDocuments: 31 | count: 0 32 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/tests/controller-networkpolicy_test.yaml: -------------------------------------------------------------------------------- 1 | suite: Controller > NetworkPolicy 2 | templates: 3 | - controller-networkpolicy.yaml 4 | 5 | tests: 6 | - it: should not create a NetworkPolicy if `controller.networkPolicy.enabled` is false 7 | set: 8 | controller.networkPolicy.enabled: false 9 | asserts: 10 | - hasDocuments: 11 | count: 0 12 | 13 | - it: should create a NetworkPolicy if `controller.networkPolicy.enabled` is true 14 | set: 15 | controller.networkPolicy.enabled: true 16 | asserts: 17 | - hasDocuments: 18 | count: 1 19 | - isKind: 20 | of: NetworkPolicy 21 | - equal: 22 | path: metadata.name 23 | value: RELEASE-NAME-ingress-nginx-controller 24 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/tests/controller-service-internal_test.yaml: -------------------------------------------------------------------------------- 1 | suite: Controller > Service > Internal 2 | templates: 3 | - controller-service-internal.yaml 4 | 5 | tests: 6 | - it: should not create an internal Service if `controller.service.internal.enabled` is false 7 | set: 8 | controller.service.internal.enabled: false 9 | asserts: 10 | - hasDocuments: 11 | count: 0 12 | 13 | - it: should create an internal Service if `controller.service.internal.enabled` is true and `controller.service.internal.annotations` are set 14 | set: 15 | controller.service.internal.enabled: true 16 | controller.service.internal.annotations: 17 | test.annotation: "true" 18 | asserts: 19 | - hasDocuments: 20 | count: 1 21 | - isKind: 22 | of: Service 23 | - equal: 24 | path: metadata.name 25 | value: RELEASE-NAME-ingress-nginx-controller-internal 26 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/tests/controller-service-metrics_test.yaml: -------------------------------------------------------------------------------- 1 | suite: Controller > Service > Metrics 2 | templates: 3 | - controller-service-metrics.yaml 4 | 5 | tests: 6 | - it: should not create a metrics Service if `controller.metrics.enabled` is false 7 | set: 8 | controller.metrics.enabled: false 9 | asserts: 10 | - hasDocuments: 11 | count: 0 12 | 13 | - it: should create a metrics Service if `controller.metrics.enabled` is true 14 | set: 15 | controller.metrics.enabled: true 16 | asserts: 17 | - hasDocuments: 18 | count: 1 19 | - isKind: 20 | of: Service 21 | - equal: 22 | path: metadata.name 23 | value: RELEASE-NAME-ingress-nginx-controller-metrics 24 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/tests/controller-service_test.yaml: -------------------------------------------------------------------------------- 1 | suite: Controller > Service 2 | templates: 3 | - controller-service.yaml 4 | 5 | tests: 6 | - it: should not create a Service if `controller.service.external.enabled` is false 7 | set: 8 | controller.service.external.enabled: false 9 | asserts: 10 | - hasDocuments: 11 | count: 0 12 | 13 | - it: should create a Service if `controller.service.external.enabled` is true 14 | set: 15 | controller.service.external.enabled: true 16 | asserts: 17 | - hasDocuments: 18 | count: 1 19 | - isKind: 20 | of: Service 21 | - equal: 22 | path: metadata.name 23 | value: RELEASE-NAME-ingress-nginx-controller 24 | 25 | - it: should create a Service of type "NodePort" if `controller.service.external.enabled` is true and `controller.service.type` is "NodePort" 26 | set: 27 | controller.service.external.enabled: true 28 | controller.service.type: NodePort 29 | asserts: 30 | - equal: 31 | path: spec.type 32 | value: NodePort 33 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/tests/default-backend-deployment_test.yaml: -------------------------------------------------------------------------------- 1 | suite: Default Backend > Deployment 2 | templates: 3 | - default-backend-deployment.yaml 4 | 5 | tests: 6 | - it: should not create a Deployment if `defaultBackend.enabled` is false 7 | set: 8 | defaultBackend.enabled: false 9 | asserts: 10 | - hasDocuments: 11 | count: 0 12 | 13 | - it: should create a Deployment if `defaultBackend.enabled` is true 14 | set: 15 | defaultBackend.enabled: true 16 | asserts: 17 | - hasDocuments: 18 | count: 1 19 | - isKind: 20 | of: Deployment 21 | - equal: 22 | path: metadata.name 23 | value: RELEASE-NAME-ingress-nginx-defaultbackend 24 | 25 | - it: should create a Deployment with 3 replicas if `defaultBackend.replicaCount` is 3 26 | set: 27 | defaultBackend.enabled: true 28 | defaultBackend.replicaCount: 3 29 | asserts: 30 | - equal: 31 | path: spec.replicas 32 | value: 3 33 | 34 | - it: should create a Deployment without replicas if `defaultBackend.autoscaling.enabled` is true 35 | set: 36 | defaultBackend.enabled: true 37 | defaultBackend.autoscaling.enabled: true 38 | asserts: 39 | - notExists: 40 | path: spec.replicas 41 | 42 | - it: should create a Deployment with resource limits if `defaultBackend.resources.limits` is set 43 | set: 44 | defaultBackend.enabled: true 45 | defaultBackend.resources.limits.cpu: 500m 46 | defaultBackend.resources.limits.memory: 512Mi 47 | asserts: 48 | - equal: 49 | path: spec.template.spec.containers[0].resources.limits.cpu 50 | value: 500m 51 | - equal: 52 | path: spec.template.spec.containers[0].resources.limits.memory 53 | value: 512Mi 54 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/tests/default-backend-extra-configmaps_test.yaml: -------------------------------------------------------------------------------- 1 | suite: Default Backend > Extra ConfigMaps 2 | templates: 3 | - default-backend-extra-configmaps.yaml 4 | 5 | tests: 6 | - it: should not create a ConfigMap if `defaultBackend.extraConfigMaps` is empty 7 | set: 8 | defaultBackend.enabled: true 9 | defaultBackend.extraConfigMaps: [] 10 | asserts: 11 | - hasDocuments: 12 | count: 0 13 | 14 | - it: should create one ConfigMap if `defaultBackend.extraConfigMaps` has one element 15 | set: 16 | defaultBackend.enabled: true 17 | defaultBackend.extraConfigMaps: 18 | - name: my-configmap-1 19 | data: 20 | key1: value1 21 | asserts: 22 | - hasDocuments: 23 | count: 1 24 | - isKind: 25 | of: ConfigMap 26 | - equal: 27 | path: metadata.name 28 | value: my-configmap-1 29 | - equal: 30 | path: data.key1 31 | value: value1 32 | 33 | - it: should create two ConfigMaps if `defaultBackend.extraConfigMaps` has two elements 34 | set: 35 | defaultBackend.enabled: true 36 | defaultBackend.extraConfigMaps: 37 | - name: my-configmap-1 38 | data: 39 | key1: value1 40 | - name: my-configmap-2 41 | data: 42 | key2: value2 43 | asserts: 44 | - hasDocuments: 45 | count: 2 46 | - isKind: 47 | of: ConfigMap 48 | - matchRegex: 49 | path: metadata.name 50 | pattern: my-configmap-(1|2) 51 | -------------------------------------------------------------------------------- /07-k8s/helm/ingress-nginx/tests/default-backend-service_test.yaml: -------------------------------------------------------------------------------- 1 | suite: Default Backend > Service 2 | templates: 3 | - default-backend-service.yaml 4 | 5 | tests: 6 | - it: should not create a Service if `defaultBackend.enabled` is false 7 | set: 8 | defaultBackend.enabled: false 9 | asserts: 10 | - hasDocuments: 11 | count: 0 12 | 13 | - it: should create a Service if `defaultBackend.enabled` is true 14 | set: 15 | defaultBackend.enabled: true 16 | asserts: 17 | - hasDocuments: 18 | count: 1 19 | - isKind: 20 | of: Service 21 | - equal: 22 | path: metadata.name 23 | value: RELEASE-NAME-ingress-nginx-defaultbackend 24 | 25 | - it: should create a Service with port 80 if `defaultBackend.service.port` is 80 26 | set: 27 | defaultBackend.enabled: true 28 | defaultBackend.service.port: 80 29 | asserts: 30 | - equal: 31 | path: spec.ports[0].port 32 | value: 80 33 | -------------------------------------------------------------------------------- /07-k8s/k8s-1-31-4-image-lists: -------------------------------------------------------------------------------- 1 | registry.k8s.io/kube-apiserver:v1.31.4 2 | registry.k8s.io/kube-controller-manager:v1.31.4 3 | registry.k8s.io/kube-scheduler:v1.31.4 4 | registry.k8s.io/kube-proxy:v1.31.4 5 | quay.io/tigera/operator:v1.36.2 6 | calico/typha:v3.29.1 7 | calico/kube-controllers:v3.29.1 8 | calico/apiserver:v3.29.1 9 | calico/cni:v3.29.1 10 | calico/node-driver-registrar:v3.29.1 11 | calico/csi:v3.29.1 12 | calico/pod2daemon-flexvol:v3.29.1 13 | calico/node:v3.29.1 14 | quay.io/tigera/operator:v1.36.0 15 | registry.k8s.io/coredns/coredns:v1.11.3 16 | registry.k8s.io/etcd:3.5.15-0 17 | registry.k8s.io/pause:3.10 18 | -------------------------------------------------------------------------------- /07-k8s/workload/01-pod.md: -------------------------------------------------------------------------------- 1 | ![Pod](../../.gitbook/assets/84-pod.png) 2 | 3 | # Pod 4 | 5 | In Kubernetes, a Pod is the smallest and most basic unit. It represents a single instance of a running process in a cluster. A Pod can contain one or more containers, which are tightly coupled and share the same network and storage resources. Containers within a Pod can communicate with each other using localhost. 6 | 7 | Pods are designed to be ephemeral, meaning they can be created, destroyed, and replaced as needed. They are scheduled onto Nodes (servers) in the cluster by the Kubernetes scheduler. 8 | 9 | Pods provide a layer of abstraction for managing containers and enable scaling, load balancing, and self-healing capabilities in Kubernetes. 10 | 11 | ## Command 12 | 13 | ```bash 14 | kubectl run nginx --image=nginx 15 | 16 | kubectl run nginx --image=nginx --port=80 --restart=Never 17 | ``` 18 | 19 | ### Static pod 20 | 21 | In Kubernetes, a static pod is a type of pod that is managed directly by the Kubelet, the component responsible for running containers on a node, without the need for the Kubernetes API server. Static pods are created and managed by the Kubelet, even if the API server is not running or is not accessible. 22 | 23 | Static pods are useful in certain scenarios where you need to run a pod on a node without relying on the Kubernetes control plane. They are typically used in edge cases or for troubleshooting purposes. 24 | 25 | Static pods are created by placing a pod specification file in the `/etc/kubernetes/manifests/` directory on the node. The Kubelet automatically detects and starts these pods when it starts. Static pods do not have a lifecycle managed by the Kubernetes API server, so they are not subject to the usual Kubernetes operations like scaling, rolling updates, or service discovery. 26 | 27 | -------------------------------------------------------------------------------- /07-k8s/workload/02-replicaset.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: ReplicaSet 3 | metadata: 4 | name: my-app 5 | namespace: my-ns 6 | labels: 7 | app.kubernetes.io/name: my-app 8 | app.kubernetes.io/env: development 9 | spec: 10 | replicas: 3 11 | selector: 12 | matchLabels: 13 | app.kubernetes.io/name: my-app 14 | template: 15 | metadata: 16 | labels: 17 | app.kubernetes.io/name: my-app 18 | spec: 19 | containers: 20 | - name: nginx 21 | image: nginx 22 | --- 23 | 24 | ```bash 25 | kubectl get rs -n my-ns 26 | 27 | kubectl delete pod --all -n my-ns # delete all pods in the namespace 28 | # change replica count to 5 29 | 30 | kubectl scale rs my-app --replicas=5 -n my-ns 31 | 32 | or 33 | 34 | edit your manifest and change replicas to 5 35 | ``` 36 | 37 | --- 38 | apiVersion: apps/v1 39 | kind: ReplicaSet 40 | metadata: 41 | name: my-app 42 | namespace: my-ns 43 | labels: 44 | app.kubernetes.io/name: my-app 45 | app.kubernetes.io/env: development 46 | spec: 47 | replicas: 3 48 | selector: 49 | matchLabels: 50 | app.kubernetes.io/name: my-app 51 | template: 52 | metadata: 53 | labels: 54 | app.kubernetes.io/name: my-app 55 | spec: 56 | containers: 57 | - name: nginx 58 | image: nginx:1.25 # apply it and then change the version 59 | -------------------------------------------------------------------------------- /07-k8s/workload/03-deployment.md: -------------------------------------------------------------------------------- 1 | # deployment 2 | 3 | In Kubernetes, deployment is a higher-level resource that manages the creation and scaling of a set of pods. It provides a declarative way to define and manage the desired state of your application. A deployment ensures that the specified number of pod replicas are running at all times, and it can perform rolling updates to deploy new versions of your application. Deployments are also responsible for managing the lifecycle of pods, handling scaling events, and rolling back to previous versions if necessary. 4 | 5 | deployment in Kubernetes, summarized in bullet points: 6 | 7 | Manages the lifecycle of a set of pods. 8 | Ensures the desired number of pod replicas are running. 9 | Handles scaling events to increase or decrease the number of replicas. 10 | Performs rolling updates to deploy new versions of the application. 11 | Monitors the health of pods and takes actions such as restarting failed pods. 12 | Provides the ability to roll back to a previous version if necessary. 13 | Allows for declarative definition and management of the desired state of the application. 14 | 15 | **Upgrade and roleback** -------------------------------------------------------------------------------- /07-k8s/workload/04-daemonset.md: -------------------------------------------------------------------------------- 1 | # DaemonSet 2 | 3 | In Kubernetes, a DaemonSet is a type of workload object that ensures that a specific pod is running on each node in a cluster. It is useful for running system daemons or cluster-wide tasks. The DaemonSet controller automatically creates and manages the pods, ensuring that there is one pod on each node and that new pods are created if new nodes are added to the cluster. 4 | 5 | DaemonSet in Kubernetes, summarized in bullet points: 6 | 7 | Ensures that a specific pod is running on each node in a cluster. 8 | Manages the lifecycle of the pods, including creation, deletion, and scaling. 9 | Monitors the nodes and ensures that the desired number of pods is always running. 10 | Automatically creates pods on new nodes added to the cluster. 11 | Commonly used for running system daemons, log collectors, monitoring agents, or any workload that needs to be deployed on every node in a Kubernetes cluster. 12 | 13 | 14 | ```yaml 15 | apiVersion: apps/v1 16 | kind: DaemonSet 17 | metadata: 18 | name: nginx 19 | spec: 20 | selector: 21 | matchLabels: 22 | app: nginx 23 | template: 24 | metadata: 25 | labels: 26 | app: nginx 27 | spec: 28 | containers: 29 | - name: nginx 30 | image: nginx 31 | 32 | ``` -------------------------------------------------------------------------------- /07-k8s/workload/04-daemonset.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: DaemonSet 3 | metadata: 4 | name: node-exporter 5 | namespace: my-ns 6 | labels: 7 | app: example 8 | spec: 9 | selector: 10 | matchLabels: 11 | app.kubernetes.io/name: node-exporter 12 | app.kubernetes.io/env: development 13 | app.kubernetes.io/part-of: monitoring 14 | template: 15 | metadata: 16 | labels: 17 | app.kubernetes.io/name: node-exporter 18 | app.kubernetes.io/env: development 19 | app.kubernetes.io/part-of: monitoring 20 | spec: 21 | containers: 22 | - name: node-exporter 23 | image: prom/node-exporter 24 | --- 25 | 26 | --- 27 | apiVersion: apps/v1 28 | kind: daemonSet 29 | metadata: 30 | name: example-daemonset 31 | labels: 32 | app: example 33 | spec: 34 | selector: 35 | matchLabels: 36 | app: example 37 | template: 38 | metadata: 39 | labels: 40 | app: example 41 | spec: 42 | containers: 43 | - name: example-container 44 | image: nginx -------------------------------------------------------------------------------- /07-k8s/workload/05-statefullset.md: -------------------------------------------------------------------------------- 1 | # StatefulSet 2 | 3 | StatefulSet is a Kubernetes controller that manages the deployment and scaling of stateful applications. It is similar to a Deployment, but provides guarantees about the ordering and uniqueness of Pods. StatefulSets are commonly used to run distributed applications that require stable network identities and persistent storage, such as databases or key-value stores. Each Pod created by a StatefulSet has a unique hostname and stable network identity, allowing the application to maintain state across Pod restarts or rescheduling. StatefulSets also support ordered scaling and rolling updates. 4 | 5 | The following are the responsibilities of a StatefulSet in Kubernetes: 6 | 7 | Dynamicaly create pvcs 8 | 9 | Manages the deployment and scaling of stateful applications. 10 | Ensures ordered and unique creation of Pods. 11 | Provides stable network identities and hostnames for each Pod. 12 | Supports persistent storage for stateful applications. 13 | Facilitates stateful application updates and rolling updates. 14 | Allows for ordered scaling of stateful applications. 15 | Handles Pod rescheduling and restarts while maintaining state. 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /07-k8s/workload/06-job.md: -------------------------------------------------------------------------------- 1 | # job 2 | 3 | In Kubernetes, a job is a Kubernetes resource object that runs a specified number of instances of a pod and ensures that a specified number of them successfully terminate. Jobs are used to run batch or intermittent tasks in a cluster, such as running a container to completion or running a container at a regular interval. 4 | 5 | A job creates one or more pods and tracks their execution. It ensures that a specified number of pods successfully terminate before considering the job as complete. If any pods fail, Kubernetes automatically restarts them until they succeed or reach a specified limit. 6 | 7 | Jobs are often used for tasks like data processing, backups, migrations, or running scheduled jobs. 8 | 9 | Please let me know if you need more information or if you have a specific question about using jobs in Kubernetes. 10 | 11 | -------------------------------------------------------------------------------- /07-k8s/workload/06-job.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: batch/v1 2 | kind: Job 3 | metadata: 4 | name: myjob 5 | namespace: my-ns 6 | spec: 7 | template: 8 | spec: 9 | containers: 10 | - name: myjob 11 | image: alpine 12 | command: 13 | - echo 14 | - "hello world" 15 | restartPolicy: Never 16 | --- 17 | # job with error -- 6 times try 18 | apiVersion: batch/v1 19 | kind: Job 20 | metadata: 21 | name: myjob 22 | namespace: my-ns 23 | spec: 24 | template: 25 | spec: 26 | containers: 27 | - name: myjob 28 | image: alpine 29 | command: 30 | - ls 31 | - "/chert" 32 | restartPolicy: Never 33 | -------------------------------------------------------------------------------- /07-k8s/workload/07-cronjob.md: -------------------------------------------------------------------------------- 1 | # CronJob 2 | 3 | In Kubernetes, a CronJob is an object that creates Jobs on a recurring schedule. It uses the Cron format to specify the schedule for running the Jobs. CronJobs are useful for running tasks at specific intervals, such as running a backup job every night or sending a report every week. Each time a CronJob runs, it creates a new Job based on the specified schedule. The Job then runs the desired workload, such as running a containerized application or executing a script. 4 | 5 | CronJobs are designed to be run on a regular basis, often using a cron job scheduler, such as cron 6 | 7 | -------------------------------------------------------------------------------- /07-k8s/workload/07-cronjob.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: batch/v1 2 | kind: CronJob 3 | metadata: 4 | name: myjob 5 | namespace: my-ns 6 | spec: 7 | schedule: "* * * * *" 8 | jobTemplate: 9 | spec: 10 | template: 11 | spec: 12 | containers: 13 | - name: hello 14 | image: busybox:1.28 15 | command: 16 | - /bin/sh 17 | - -c 18 | - date; echo Hello from the Kubernetes cluster 19 | restartPolicy: Never 20 | 21 | --- 22 | apiVersion: batch/v1beta1 23 | kind: CronJob 24 | metadata: 25 | name: my-cronjob 26 | spec: 27 | schedule: "0 0 * * *" 28 | timezone: America/New_York 29 | jobTemplate: 30 | spec: 31 | template: 32 | spec: 33 | containers: 34 | - name: my-cronjob-container 35 | image: my-cronjob-image 36 | env: 37 | - name: TZ 38 | value: "America/New_York" 39 | restartPolicy: OnFailure -------------------------------------------------------------------------------- /07-k8s/workload/08-service.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: nginx 5 | namespace: my-ns 6 | labels: 7 | app: nginx 8 | spec: 9 | type: ClusterIP # NodePort, LoadBalancer, ExternalName 10 | selector: 11 | app: nginx 12 | ports: 13 | - name: http 14 | port: 80 15 | targetPort: 80 16 | --- 17 | apiVersion: apps/v1 18 | kind: Deployment 19 | metadata: 20 | name: nginx 21 | namespace: my-ns 22 | labels: 23 | app: nginx 24 | spec: 25 | replicas: 2 26 | selector: 27 | matchLabels: 28 | app: nginx 29 | template: 30 | metadata: 31 | labels: 32 | app: nginx 33 | spec: 34 | containers: 35 | - name: nginx 36 | image: nginx 37 | 38 | 39 | # kubectl get service -n my-ns 40 | # kubectl get deployment -n my-ns 41 | # kubectl get pods -n my-ns -o wide 42 | # kubectl get ep -n my-ns 43 | 44 | # service name pattern 45 | 46 | service_name.namespace.svc.cluster.local 47 | 48 | --- 49 | apiVersion: v1 50 | kind: Pod 51 | metadata: 52 | namespace: my-ns 53 | name: alpine 54 | labels: 55 | app.kubernetes.io/product: alpine 56 | spec: 57 | containers: 58 | - name: alpine 59 | image: alpine 60 | command: ["/bin/sh", "-c", "sleep 5000"] 61 | ports: 62 | - containerPort: 80 63 | --- 64 | 65 | 66 | -------------------------------------------------------------------------------- /07-k8s/workload/09-node.yml: -------------------------------------------------------------------------------- 1 | kubectl cordon k8s2 2 | 3 | kubectl uncordon k8s2 4 | 5 | kubectl drain k8s2 --force --ignore-daemonsets 6 | 7 | kubectl uncordon k8s2 -------------------------------------------------------------------------------- /07-k8s/workload/11-configmap.yaml: -------------------------------------------------------------------------------- 1 | # with command 2 | kubectl create configmap nginx-conf --from-file=/root/nginx.conf 3 | 4 | --- 5 | apiVersion: apps/v1 6 | kind: Deployment 7 | metadata: 8 | name: nginx 9 | namespace: my-ns 10 | labels: 11 | app: nginx 12 | spec: 13 | replicas: 2 14 | selector: 15 | matchLabels: 16 | app: nginx 17 | template: 18 | metadata: 19 | labels: 20 | app: nginx 21 | spec: 22 | containers: 23 | - name: nginx 24 | image: nginx 25 | ports: 26 | - containerPort: 80 27 | volumeMounts: 28 | - name: nginx-conf 29 | mountPath: /etc/nginx/nginx.conf 30 | subPath: nginx.conf 31 | volumes: 32 | - name: nginx-conf 33 | configMap: 34 | name: nginx-conf 35 | 36 | --- 37 | apiVersion: apps/v1 38 | kind: Deployment 39 | metadata: 40 | name: nginx 41 | namespace: my-ns 42 | labels: 43 | app: nginx 44 | spec: 45 | replicas: 2 46 | selector: 47 | matchLabels: 48 | app: nginx 49 | template: 50 | metadata: 51 | labels: 52 | app: nginx 53 | spec: 54 | containers: 55 | - name: nginx 56 | image: nginx 57 | ports: 58 | - containerPort: 80 59 | volumeMounts: 60 | - name: nginx-conf 61 | mountPath: /tmp 62 | # subPath: nginx.conf 63 | volumes: 64 | - name: nginx-conf 65 | configMap: 66 | name: nginx-conf 67 | --- 68 | # 69 | -------------------------------------------------------------------------------- /07-k8s/workload/12-resourcequota.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ResourceQuota 3 | metadata: 4 | name: demo 5 | namespace: my-ns 6 | spec: 7 | hard: 8 | # pods: "10" 9 | requests.cpu: "4" # 500m 10 | requests.memory: "16Gi" # 10mib 11 | limits.cpu: "8" # 700m 12 | limits.memory: "32Gi" # 500mib 13 | # persistentvolumeclaims: "5" 14 | # services: "10" 15 | # services.loadbalancers: "2" 16 | # services.nodeports: "5" 17 | # configmaps: "20" 18 | # secrets: "10" -------------------------------------------------------------------------------- /08-cicd/project-01/.gitlab-ci.yml: -------------------------------------------------------------------------------- 1 | stages: 2 | - deploy-dev 3 | # - deploy-prod 4 | 5 | deploy-dev: 6 | stage: deploy-dev 7 | image: 9350733512/ansible:0.0.3 8 | variables: 9 | ANSIBLE_HOST_KEY_CHECKING: 'false' 10 | ANSIBLE_FORCE_COLOR: 'true' 11 | before_script: 12 | - mkdir -p ~/.ssh 13 | - echo "$DEPLOYER_PRIVATE_KEY" >> ~/.ssh/id_rsa 14 | - chmod 600 ~/.ssh/id_rsa 15 | - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config 16 | - ls 17 | - pwd 18 | script: 19 | - cd ansible && ansible-playbook -i inventory/servers-dev.ini deploy.yml --become --become-method=sudo -t dev #-vvv 20 | # only: 21 | # - development 22 | 23 | # deploy-prod: 24 | # stage: deploy-prod 25 | # image: 9350733512/ansible:0.0.2 26 | # variables: 27 | # ANSIBLE_HOST_KEY_CHECKING: 'false' 28 | # ANSIBLE_FORCE_COLOR: 'true' 29 | # before_script: 30 | # - mkdir -p ~/.ssh 31 | # - echo "$DEPLOYER_PRIVATE_KEY" >> ~/.ssh/id_rsa 32 | # - chmod 600 ~/.ssh/id_rsa 33 | # - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config 34 | # - ls 35 | # - pwd 36 | # script: 37 | # - cd ansible && ansible-playbook -i inventory/servers-dev.ini deploy.yml --become --become-method=sudo -t prod #-vvv 38 | # only: 39 | # - tags 40 | # when: manual 41 | 42 | 43 | -------------------------------------------------------------------------------- /08-cicd/project-01/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:24.04 2 | 3 | RUN apt-get update && \ 4 | apt-get install -y ansible rsync && \ 5 | rm -rf /var/lib/apt/lists/* 6 | 7 | RUN ansible-galaxy collection install ansible.posix 8 | -------------------------------------------------------------------------------- /08-cicd/project-01/ansible/deploy.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - hosts: all 3 | roles: 4 | - role: deploy-dev 5 | gather_facts: yes 6 | any_errors_fatal: true 7 | tags: [dev] 8 | 9 | - hosts: all 10 | roles: 11 | - role: deploy-prod 12 | gather_facts: yes 13 | any_errors_fatal: true 14 | tags: [prod] 15 | -------------------------------------------------------------------------------- /08-cicd/project-01/ansible/inventory/group_vars/all.yml: -------------------------------------------------------------------------------- 1 | # General 2 | install_ansible_modules: "true" 3 | disable_transparent_huge_pages: "true" 4 | setup_interface: "false" 5 | 6 | 7 | # Development 8 | 9 | dev_src_dir: "/data/dev/sdm/oss-api-gateway" 10 | # dev_src_dir_owner: "apache" 11 | dev_runner_src_dir: "/builds/sdm/oss-api-gateway/" 12 | build_srv_name: "server-1" 13 | java_file_path: "/opt/oss-api-gateway" 14 | java_process_name: "sleep" 15 | 16 | # Production 17 | 18 | # prod_src_dir: "/data/prod/sdm/oss-api-gateway" 19 | # prod_src_dir_owner: "apache" 20 | # prod_runner_src_dir: "/builds/pegah/icell-test/" -------------------------------------------------------------------------------- /08-cicd/project-01/ansible/inventory/servers-dev.ini: -------------------------------------------------------------------------------- 1 | [all] 2 | server-1 ansible_host=188.121.96.85 3 | 4 | 5 | [all:vars] 6 | ansible_user=ubuntu 7 | ansible_port=22 8 | ansible_python_interpreter = "/usr/bin/python3" 9 | -------------------------------------------------------------------------------- /08-cicd/project-01/ansible/inventory/servers-prod.ini: -------------------------------------------------------------------------------- 1 | [all] 2 | server-1 ansible_host=10.15.90.122 3 | 4 | [all:vars] 5 | ansible_user=deployer 6 | ansible_port=22 7 | ansible_python_interpreter = "/usr/bin/python3" 8 | -------------------------------------------------------------------------------- /08-cicd/project-01/ansible/roles/deploy-prod/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Create Directory 3 | ansible.builtin.file: 4 | path: "{{ prod_src_dir }}" 5 | state: directory 6 | mode: '0755' 7 | owner: "{{ prod_src_dir_owner }}" 8 | group: "{{ prod_src_dir_owner }}" 9 | 10 | - name: Print "{{ playbook_dir }}" 11 | debug: 12 | msg: The directory is "{{ playbook_dir }}" 13 | 14 | - name: Synchronize entire repository to remote 15 | ansible.posix.synchronize: 16 | src: "{{ prod_runner_src_dir }}" 17 | dest: "{{ prod_src_dir }}" 18 | delete: true 19 | rsync_opts: 20 | - "--exclude=.env" 21 | - "--exclude=storage" 22 | 23 | - name: Change directory owner 24 | ansible.builtin.file: 25 | path: "{{ prod_src_dir }}" 26 | state: directory 27 | mode: '0755' 28 | recurse: yes 29 | owner: "{{ prod_src_dir_owner }}" 30 | group: "{{ prod_src_dir_owner }}" 31 | 32 | - name: Run build_script.sh on server 33 | shell: 34 | cmd: bash "{{ prod_src_dir }}"/build_script.sh -------------------------------------------------------------------------------- /08-cicd/project-01/build_script.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | date >> /tmp/test3.txt 4 | echo "for test..." >> /tmp/test3.txt 5 | echo "****************** build success ****************" >> /tmp/test3.txt -------------------------------------------------------------------------------- /08-cicd/project-02/.gitlab-ci.yml: -------------------------------------------------------------------------------- 1 | variables: 2 | IMAGE_NAME: project2 3 | 4 | stages: 5 | - Build 6 | - Deploy 7 | 8 | build: 9 | stage: Build 10 | image: docker 11 | script: 12 | - docker login -u "$DOCKER_HUB_USER" -p "$DOCKER_HUB_PASSWORD" #"https://hub.docker.com/" 13 | - docker build -t 9350733512/$IMAGE_NAME:$CI_PIPELINE_ID . 14 | - docker push 9350733512/$IMAGE_NAME:$CI_PIPELINE_ID 15 | 16 | deploy: 17 | stage: Deploy 18 | # variables: 19 | # DOCKER_HOST: "ssh://ubuntu@188.121.96.85" 20 | before_script: 21 | - mkdir -p ~/.ssh 22 | - echo "$DEPLOYER_PRIVATE_KEY" >> ~/.ssh/id_rsa 23 | - chmod 600 ~/.ssh/id_rsa 24 | - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config 25 | script: 26 | - unset DOCKER_HOST 27 | - docker context create my-swarm --docker "host=ssh://ubuntu@188.121.96.85" 28 | - docker context use my-swarm 29 | - docker node ls 30 | - docker stack rm $IMAGE_NAME 31 | - sed -i "s/latest/$CI_PIPELINE_ID/g" docker-compose.yml 32 | - cat docker-compose.yml 33 | - docker stack deploy -c docker-compose.yml $IMAGE_NAME 34 | needs: 35 | - job: build 36 | retry: 2 37 | -------------------------------------------------------------------------------- /08-cicd/project-02/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:22.04 2 | 3 | WORKDIR /usr/src/app 4 | 5 | COPY . . 6 | 7 | RUN chmod +x loop_script.sh 8 | 9 | CMD ["./loop_script.sh"] 10 | -------------------------------------------------------------------------------- /08-cicd/project-02/Readme.md: -------------------------------------------------------------------------------- 1 | # add ssh user to docker group in remote host 2 | 3 | ```bash 4 | usermod -aG docker milad 5 | ``` 6 | -------------------------------------------------------------------------------- /08-cicd/project-02/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.8' 2 | 3 | services: 4 | project2: 5 | image: 9350733512/project2:latest 6 | container_name: hello-loop-container 7 | restart: always 8 | -------------------------------------------------------------------------------- /08-cicd/project-02/loop_script.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | while true; do 4 | echo "Hello, World!" 5 | echo "hiiii" 6 | 7 | sleep 2 8 | done 9 | -------------------------------------------------------------------------------- /08-cicd/project-03/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM nginx:alpine 2 | 3 | COPY . /usr/share/nginx/html/ 4 | -------------------------------------------------------------------------------- /09-monitoring/05-cadvisor.md: -------------------------------------------------------------------------------- 1 | Install cadvisor 2 | 3 | ```shell 4 | VERSION=v0.49.1 # use the latest release version from https://github.com/google/cadvisor/releases 5 | sudo docker run \ 6 | --volume=/:/rootfs:ro \ 7 | --volume=/var/run:/var/run:ro \ 8 | --volume=/sys:/sys:ro \ 9 | --volume=/var/lib/docker/:/var/lib/docker:ro \ 10 | --volume=/dev/disk/:/dev/disk:ro \ 11 | --publish=8080:8080 \ 12 | --detach=true \ 13 | --name=cadvisor \ 14 | --privileged \ 15 | --device=/dev/kmsg \ 16 | gcr.io/cadvisor/cadvisor:$VERSION 17 | ``` 18 | 19 | - job_name: "cadvisor-k8s1" 20 | static_configs: 21 | - targets: [192.168.100.11:8080] -------------------------------------------------------------------------------- /09-monitoring/05-prometheus_config.yml: -------------------------------------------------------------------------------- 1 | - job_name: "k8s-1" 2 | static_configs: 3 | - targets: [192.168.100.11:9100] -------------------------------------------------------------------------------- /09-monitoring/06-push-gateway.md: -------------------------------------------------------------------------------- 1 | Create script to find and push metrics to push gateway 2 | 3 | ```bash 4 | #!/bin/bash 5 | 6 | LOG_FILE=/var/log/etcd.log 7 | 8 | while true 9 | 10 | do 11 | 12 | NUMBER_OF_CONNECTIONS=`netstat -pentaul | grep ESTABLISHED | awk '{print $4}' | grep 2379 | wc -l` 13 | 14 | cat << EOF | curl --data-binary @- http://192.168.80.100:9091/metrics/job/etcd-connections/instance/192.168.80.100 15 | number_of_established_connections_on_etcd $NUMBER_OF_CONNECTIONS 16 | EOF 17 | 18 | echo "Number of connections at `date +%Y-%m-%d-%H-%M-%S`: $NUMBER_OF_CONNECTIONS" >> $LOG_FILE 19 | 20 | sleep 10 21 | done 22 | 23 | 24 | ``` 25 | 26 | Create a systmed service to run the script 27 | 28 | ```bash 29 | vim /etc/systemd/system/etcd-connections.service 30 | ``` 31 | 32 | ```bash 33 | [Unit] 34 | Description=etcd-connections 35 | After=network.target 36 | 37 | [Service] 38 | User=root 39 | Group=root 40 | Type=simple 41 | ExecStart=/root/pushgateway/etcd-connections.sh 42 | 43 | [Install] 44 | WantedBy=multi-user.target 45 | ``` 46 | 47 | and start the service 48 | 49 | ```bash 50 | systemctl daemon-reload 51 | systemctl start etcd-connections 52 | systemctl enable etcd-connections 53 | ``` 54 | 55 | add pushgateway to prometheus 56 | 57 | ```bash 58 | vim /etc/prometheus/prometheus.yml 59 | 60 | - job_name: "pushgateway" 61 | honor_labels: true 62 | scrape_interval: 10s 63 | static_configs: 64 | - targets: ["192.168.80.100:9091"] 65 | -------------------------------------------------------------------------------- /09-monitoring/07-nexus.md: -------------------------------------------------------------------------------- 1 | install with docker compose 2 | 3 | ```shell 4 | version: "3.4" 5 | services: 6 | nexus: 7 | container_name: nexus 8 | image: sonatype/nexus3:latest 9 | networks: 10 | - registry 11 | ports: 12 | - 8081:8081 13 | - 81:81 14 | - 82:82 15 | volumes: 16 | - /data/registry/nexus-data:/nexus-data 17 | 18 | networks: 19 | registry: 20 | 21 | ``` 22 | 23 | and then give permission 24 | 25 | ```bash 26 | chown -R 200:200 /data/registry/nexus-data 27 | ``` 28 | 29 | ```shell 30 | chown -R 200:200 /data/registry/ 31 | chown -R 200:200 /data/registry/nexus-data 32 | ``` 33 | 34 | up and run 35 | 36 | ```shell 37 | docker-compose up -d 38 | ``` 39 | 40 | -------------------------------------------------------------------------------- /09-monitoring/nginx_status_code.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Define variables 4 | PUSHGATEWAY_URL="192.168.178.14:9091" 5 | JOB_NAME="nginx_status_code" 6 | INSTANCE="nginx_server_instance" 7 | LOG_FILE="/var/log/nginx/access.log" 8 | 9 | # Extract and count lines with status code 200 10 | count=$(grep ' 200 ' "$LOG_FILE" | wc -l) 11 | 12 | # Prepare the metrics data in the Prometheus text-based format 13 | metrics_data="nginx_http_status_200_total $count" 14 | 15 | # Push the metrics to Pushgateway 16 | echo "$metrics_data" | curl --data-binary @- "http://$PUSHGATEWAY_URL/metrics/job/$JOB_NAME/instance/$INSTANCE" 17 | 18 | echo "Pushed metrics to Pushgateway: $metrics_data" 19 | -------------------------------------------------------------------------------- /Introduction.md: -------------------------------------------------------------------------------- 1 | ![00-waterfallModel](/.gitbook/assets/00-waterfallModel.jpeg) 2 | 3 | ![01](.gitbook/assets/01.jpg) 4 | 5 | ![02-agile](.gitbook/assets/02-agile.webp) 6 | 7 | ![03-sprint](.gitbook/assets/03-sprint.webp) 8 | 9 | ![04-agile](.gitbook/assets/04-agilecons.webp) 10 | 11 | ![05-agile-devops](.gitbook/assets/05-agile-devops.png) 12 | 13 | ![06-pipeline](.gitbook/assets/06-PipelineInDevOps.png) 14 | 15 | ![07-devopspipeline](.gitbook/assets/07-DevOpsPipeline-2.jpg) 16 | 17 | ![08-devopsTools](.gitbook/assets/08-DevopsTools.png) 18 | 19 | ![09-operating-system](.gitbook/assets/09-operating-system.png) 20 | 21 | ![10-cncf-landscape](.gitbook/assets/10-cncfLandscape.png) 22 | 23 | ![11-scriptinglanguage](.gitbook/assets/11-scriptingLanguage.png) 24 | 25 | ![12-version-control](.gitbook/assets/12-VersionControl.png) 26 | 27 | ![13-containers-vs-vms](.gitbook/assets/13-containers-vs-virtual-machines.jpg) 28 | 29 | ![14-container-runtime](.gitbook/assets/14-container_Runtime.png) 30 | 31 | ![15-oci-standard](.gitbook/assets/15-OCI-standard.png) 32 | 33 | ![16-container-orcastration](.gitbook/assets/16-containerOrchestration.png) 34 | 35 | ![17-monitoring-tools](.gitbook/assets/17-monitoringTools.jpg) 36 | 37 | ![18-IAC](.gitbook/assets/18-IAC.png) 38 | 39 | ![19-ci-cd](.gitbook/assets/19-ci-cd.png) 40 | 41 | ![20-cicdtools](.gitbook/assets/20-cicdtools.png) -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # devops 2 | 3 | 4 | --------------------------------------------------------------------------------