[英]How to create ingress on K8S Cluster machine using Terraform?
I am new to K8S and Terraform.我是 K8S 和 Terraform 的新手。 I installed ingress_nginx on K8S Cluster running on Bare-metal.
我在裸机上运行的 K8S 集群上安装了 ingress_nginx。
[root@control02 ~]# kubectl get svc -n ingress-nginx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
docker-hello-world-svc NodePort 10.xx.xx.121 <none> 8086:30333/TCP 13d
ingress-nginx-controller NodePort 10.xx.xx.124 <none> 80:31545/TCP,443:30198/TCP 13d
ingress-nginx-controller-admission ClusterIP 10.xx.xx.85 <none> 443/TCP 13d
I created Deployment, Service and Ingress and am able to access the docker-hello-world-svc from browser successfully.我创建了部署、服务和入口,并且能够从浏览器成功访问 docker-hello-world-svc。 Ingress.yaml is given below
Ingress.yaml如下所示
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: hello-world-ing
annotations:
kubernetes.io/ingress.class: "nginx"
namespace: ingress-nginx
spec:
#ingressClassName : nginx
rules:
- host: foo.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: docker-hello-world-svc
port:
number: 8086
My requirement is to containerize our PHP based applications on K8S Cluster.我的要求是将我们基于 PHP 的应用程序容器化到 K8S 集群上。
Creating ingress via Terraform's resource "kubernetes_ingress" "web"
and ingress.yaml:kubernetes.io/ingress.class
are same (or) are they different?通过Terraform 的
resource "kubernetes_ingress" "web"
和ingress.yaml:kubernetes.io/ingress.class
创建入口,它们是相同的吗?
How can I create 'ingress' on K8S Cluster machine using Terraform?如何使用 Terraform 在 K8S 集群机器上创建“入口”?
For example, when I trigger a job from GitLab, Terraform should create a new "resource kubernetes_ingress"
on K8S Cluster or Control-Plane machine.例如,当我从 GitLab 触发作业时,Terraform 应该在 K8S 集群或控制平面机器上创建一个新的
"resource kubernetes_ingress"
。 Is this possible?这可能吗?
Kindly clarify on the queries mentioned above and let me know if my understanding is wrong请澄清上述问题,如果我的理解有误,请告诉我
The ingress.class
is needed to let the nginx ingress controller understand thathe need to handle this resource.需要
ingress.class
让 nginx 入口 controller 明白他需要处理这个资源。
To create an ingress with terraform you can use the following要使用 terraform 创建入口,您可以使用以下命令
resource "kubernetes_ingress" "ingress" {
metadata {
name = "ingress-name"
namespace = "ingress-namespace"
labels = {
app = "some-label-app"
}
annotations = {
"kubernetes.io/ingress.class" : "nginx"
}
}
spec {
rule {
host = "foo.com"
http {
path {
backend {
service_name = "svc"
service_port = "http"
}
}
}
}
}
}
I was able to create the service on existing K8S Cluster (Bare metal) using the following code我能够使用以下代码在现有 K8S 集群(裸机)上创建服务
K8S Cluster was setup on 192.168.xxx.xxx
on which I created a service example
. K8S 集群设置在
192.168.xxx.xxx
上,我在上面创建了一个服务example
。 We need to mention the 'host'
parameter inside 'kubernetes'
block我们需要在
'kubernetes'
块中提及'host'
参数
provider "kubernetes" {
**host = "https://192.168.xxx.xxx:6443"**
cluster_ca_certificate = "${base64decode(var.cluster_ca_certificate)}"
client_certificate = "${base64decode(var.client_certificate)}"
client_key = "${base64decode(var.client_key)}"
}
resource "kubernetes_service" "example" {
metadata {
name = "example"
}
spec {
port {
port = 8585
target_port = 80
}
type = "ClusterIP"
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.